Copier cellule depuis un autre fichier
Résolu
zertozerto
Messages postés
39
Statut
Membre
-
zertozerto Messages postés 39 Statut Membre -
zertozerto Messages postés 39 Statut Membre -
Bonjour,
Alors j'ai un tableau de ce type:
JAN -W01 - W02 -W03 - W04 - W05 - FEV - W06 -W07 ...
Pour ma combobox j'ai fais cela:
Je ne veux pas selectionner les noms des mois.
- je me tape les 57 semaines a la mano
- je fais un "if" + noms des mois et je dis que je ne les selectionne pas
- je dis que je selectionne de la 2eme colonne a la 6 et de la 7eme a la 12 etc.
qu'est-ce qui est le mieux?
a la mano je vais y arriver, mais pour les autres solutions j'aurai besoin d'aide.
Ou encore une autre solution.
Merciiii
Alors j'ai un tableau de ce type:
JAN -W01 - W02 -W03 - W04 - W05 - FEV - W06 -W07 ...
Pour ma combobox j'ai fais cela:
Private Sub UserForm_Initialize()
Dim i
For i = 9 To 75
ComboBox1.AddItem Sheets("Data Entry").Cells(7, i)
Next
End Sub
Je ne veux pas selectionner les noms des mois.
- je me tape les 57 semaines a la mano
- je fais un "if" + noms des mois et je dis que je ne les selectionne pas
- je dis que je selectionne de la 2eme colonne a la 6 et de la 7eme a la 12 etc.
qu'est-ce qui est le mieux?
a la mano je vais y arriver, mais pour les autres solutions j'aurai besoin d'aide.
Ou encore une autre solution.
Merciiii
A voir également:
- Copier cellule depuis un autre fichier
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Fichier .dat - Guide
4 réponses
Salut,
1- je me tape les 57 semaines a la mano Mmmh intéressant! Sur ma planète et dans mon pays je ne compte que 52 semaines... de toutes façons cette méthode "à la main" est proscrite d'emblée.
2- je fais un "if" + noms des mois et je dis que je ne les selectionne pas Voilà qui est intéressant! C'est, selon moi, la meilleure méthode. Ou plutôt que de ne pas sélectionner les "mois", peut être serais ce plus aisé de sélectionner uniquement les semaines? Même résultat...
Comme ceci, si tes semaines commencent tous par un "W" et qu'aucun mois ne commence par un "W" (comme le mois de Waout par exemple...)
--> J'ai au passage corrigé deux horreurs (erreurs pardon) qui n'en sont pas vraiment mais qui sont tout de même plus VBA... Variables = nom d'au moins 3 lettres (Col au lieu de i) et il convient de leur attiruber un type (= Integer).
--> !!! Ne fonctionnera pas si un espace inutile farfelu et superflu se glisse avant le W de ta semaine !!!
3- je dis que je selectionne de la 2eme colonne a la 6 et de la 7eme a la 12 etc Faisable, mais fastidieux! inutile si la solution 2 fonctionne.
Ca te va?
1- je me tape les 57 semaines a la mano Mmmh intéressant! Sur ma planète et dans mon pays je ne compte que 52 semaines... de toutes façons cette méthode "à la main" est proscrite d'emblée.
2- je fais un "if" + noms des mois et je dis que je ne les selectionne pas Voilà qui est intéressant! C'est, selon moi, la meilleure méthode. Ou plutôt que de ne pas sélectionner les "mois", peut être serais ce plus aisé de sélectionner uniquement les semaines? Même résultat...
Comme ceci, si tes semaines commencent tous par un "W" et qu'aucun mois ne commence par un "W" (comme le mois de Waout par exemple...)
Private Sub UserForm_Initialize()
Dim Col As Integer
For Col = 9 To 75
If Left(Sheets("Data Entry").Cells(7, Col), 1) = "W" Then
ComboBox1.AddItem Sheets("Data Entry").Cells(7, Col)
End If
Next Col
End Sub
--> J'ai au passage corrigé deux horreurs (erreurs pardon) qui n'en sont pas vraiment mais qui sont tout de même plus VBA... Variables = nom d'au moins 3 lettres (Col au lieu de i) et il convient de leur attiruber un type (= Integer).
--> !!! Ne fonctionnera pas si un espace inutile farfelu et superflu se glisse avant le W de ta semaine !!!
3- je dis que je selectionne de la 2eme colonne a la 6 et de la 7eme a la 12 etc Faisable, mais fastidieux! inutile si la solution 2 fonctionne.
Ca te va?
1)
57... parce que je suis innovant!
... ou parce que j'ai mis au hasard
2)
Oui c'est la meme idée en fait, mais ta solution est mieux je pense.
Je débute en codage, donc merci de tes remarques :)
C'est comme ca qu'on apprend :)
il n'y a pas de raison qu'un "espace" se glisse, personne ne doit toucher ses valeurs. Ha moins que quelqu'un d'innovant comme moi souhqite créer la 53 eme semaine ;-)
3)
Ca me va tres bien.
Merci beaucoup
57... parce que je suis innovant!
... ou parce que j'ai mis au hasard
2)
Oui c'est la meme idée en fait, mais ta solution est mieux je pense.
Je débute en codage, donc merci de tes remarques :)
C'est comme ca qu'on apprend :)
il n'y a pas de raison qu'un "espace" se glisse, personne ne doit toucher ses valeurs. Ha moins que quelqu'un d'innovant comme moi souhqite créer la 53 eme semaine ;-)
3)
Ca me va tres bien.
Merci beaucoup
Je réouvre le sujet:
alors voila mon code:
a partir de la colonne ou je trouve MaVariable (colonne appellé Colweek)
je veux chercher de cette colonne a 7, l'unique valeur qui ne commence pas par W.
et cette valeur je veux la mettre dans la variable MonMois.
cela compile plus a :
>>> Object required
Je dois avoir des problemes dans la declaration des variables egalement.
alors voila mon code:
Dim MonMois As String
Dim mavariable As String
'------ Look for the column of the current week ------
Dim I As Integer
Dim Colweek As Integer
For I = 4 To 73
If Worksheets("TMUK Detail I-O WIP").Cells(4, I) = mavariable Then
Colweek = Column.Active
End If
Next I
'------ Look for the column of the current Month ------
Dim J As Integer
For J = Colweek To 10
If Left(Sheets("TMUK Detail I-O WIP").Cells(4, J), 1) <> "W" Then
MonMois = ActiveCell.Value
MsgBox "on a " & MonMois
End If
Next J
a partir de la colonne ou je trouve MaVariable (colonne appellé Colweek)
je veux chercher de cette colonne a 7, l'unique valeur qui ne commence pas par W.
et cette valeur je veux la mettre dans la variable MonMois.
cela compile plus a :
Colweek = Column.Active
>>> Object required
Je dois avoir des problemes dans la declaration des variables egalement.
Salut,
Hop hop hop... Tu dis d'abord:
For I = 4 To 73 bleble Cells(4, I) ==> tu sous entends là que la colonne trouvée peut être la 42ème.
et ensuite : For J = Colweek To 10 ==> Si Colweek = 2 oK mais si colweek = 42 ça ne fonctionnera pas.
corrige déjà : Colweek = Column.Active
par : Colweek = I
Et reviens expliquer la suite...
Hop hop hop... Tu dis d'abord:
For I = 4 To 73 bleble Cells(4, I) ==> tu sous entends là que la colonne trouvée peut être la 42ème.
et ensuite : For J = Colweek To 10 ==> Si Colweek = 2 oK mais si colweek = 42 ça ne fonctionnera pas.
corrige déjà : Colweek = Column.Active
par : Colweek = I
Et reviens expliquer la suite...
Yep
alors finalement je suis parti sur une seule boucle, plus logique.
J'ai réussi à faire ce que je voulais de cette maniere:
mes mois sont en fonction de la variable L
mes semaines sont en fonction de la variable K
Ca marche comme cela :)
alors finalement je suis parti sur une seule boucle, plus logique.
J'ai réussi à faire ce que je voulais de cette maniere:
Dim I As Integer
Dim K As Integer
For I = 4 To 73
If Worksheets("TMUK Detail I-O WIP").Cells(4, I) = mavariable Then
K = I
Dim J As Integer
Dim L As Integer
For J = K To K + 6
If Left(Sheets("TMUK Detail I-O WIP").Cells(4, J), 1) <> "W" Then
MonMois = Sheets("TMUK Detail I-O WIP").Cells(4, J).Value
MsgBox "mon mois = " & MonMois & "J = " & J
L = J
End If
Next J
End If
'Exit For
Next I
mes mois sont en fonction de la variable L
mes semaines sont en fonction de la variable K
Ca marche comme cela :)
Si ça marche, ça marche. Petit commentaire néanmoins :
Concernant tes variables, elles devraient être plus explicite. Dans l'état, ton code est difficilement compréhensible. On s'en fiche puisqu'il marche. Mais lorsque tu voudras revenir dessus dans 3 ans, ce sera pas évident.
De plus, une variable est habituellement composée de 3 caractères minimum etc...
Je te propose donc de suite de prendre des bonnes habitudes.
regarde ce code, c'est un copier/coller du tien en tenant compte de ma remarque :
Concernant tes variables, elles devraient être plus explicite. Dans l'état, ton code est difficilement compréhensible. On s'en fiche puisqu'il marche. Mais lorsque tu voudras revenir dessus dans 3 ans, ce sera pas évident.
De plus, une variable est habituellement composée de 3 caractères minimum etc...
Je te propose donc de suite de prendre des bonnes habitudes.
regarde ce code, c'est un copier/coller du tien en tenant compte de ma remarque :
Dim ColA As Integer, ColB As Integer
Dim L as Integer ' à quoi sert cette variable???
For ColA = 4 To 73
If Worksheets("TMUK Detail I-O WIP").Cells(4, ColA) = mavariable Then
For ColB = ColA To ColA + 6
If Left(Sheets("TMUK Detail I-O WIP").Cells(4, ColB), 1) <> "W" Then
MonMois = Sheets("TMUK Detail I-O WIP").Cells(4, ColB).Value
MsgBox "mon mois = " & MonMois & "J = " & ColB
L = ColB
End If
Next ColB
End If
'Exit For
Next ColA
ho oui c'est vrai tu m'avais deja fait la remarque pour les 3 caracteres en plus.
Le L j'en ai besoin, je m'en sert plus tard dans mon code.
question:
je voudrais que ma macro (sur fichier A) s'execute sur ce fichier A ET sur un fichier B d'un autre dossier.
Je veux la meme structure de code (les range vont changer par contre donc je ferais un copier-coller de la forme et modifierai les plages de données)
une piste?
Le L j'en ai besoin, je m'en sert plus tard dans mon code.
question:
je voudrais que ma macro (sur fichier A) s'execute sur ce fichier A ET sur un fichier B d'un autre dossier.
Je veux la meme structure de code (les range vont changer par contre donc je ferais un copier-coller de la forme et modifierai les plages de données)
une piste?
Oui voila.
La macro actuelle est sur un fichier A. elle remplie une feuille de ce fichier a partir des données des feuilles A. Et je veux qu'elle remplisse une partie de cette feuille a partir d'un fichier B qui se trouve dans un autre dossier.
Les informations a prendre dans le dossier B sont dans un tableau de la meme forme que le tableau utilisé dans la table A.
"Alors j'ai un tableau de ce type:
JAN -W01 - W02 -W03 - W04 - W05 - FEV - W06 -W07 ...
"
donc je veux que a partir du fichier A, ma macro cherche les infos dans un fichier B et les copi dans le fichier A
La macro actuelle est sur un fichier A. elle remplie une feuille de ce fichier a partir des données des feuilles A. Et je veux qu'elle remplisse une partie de cette feuille a partir d'un fichier B qui se trouve dans un autre dossier.
Les informations a prendre dans le dossier B sont dans un tableau de la meme forme que le tableau utilisé dans la table A.
"Alors j'ai un tableau de ce type:
JAN -W01 - W02 -W03 - W04 - W05 - FEV - W06 -W07 ...
"
donc je veux que a partir du fichier A, ma macro cherche les infos dans un fichier B et les copi dans le fichier A