Copier cellule depuis un autre fichier
Résolu
zertozerto
Messages postés
34
Date d'inscription
Statut
Membre
Dernière intervention
-
zertozerto Messages postés 34 Date d'inscription Statut Membre Dernière intervention -
zertozerto Messages postés 34 Date d'inscription Statut Membre Dernière intervention -
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
- Comment ouvrir un 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