Copier cellule depuis un autre fichier
Résolu/Fermé
zertozerto
Messages postés
34
Date d'inscription
mardi 8 mars 2011
Statut
Membre
Dernière intervention
21 mars 2011
-
Modifié par zertozerto le 17/03/2011 à 17:54
zertozerto Messages postés 34 Date d'inscription mardi 8 mars 2011 Statut Membre Dernière intervention 21 mars 2011 - 21 mars 2011 à 16:39
zertozerto Messages postés 34 Date d'inscription mardi 8 mars 2011 Statut Membre Dernière intervention 21 mars 2011 - 21 mars 2011 à 16:39
A voir également:
- Copier cellule depuis un autre fichier
- Fichier rar - Guide
- Comment ouvrir un fichier epub ? - Guide
- Comment réduire la taille d'un fichier - Guide
- Ouvrir un fichier .bin - Guide
- Fichier host - Guide
4 réponses
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
9 mars 2011 à 11:29
9 mars 2011 à 11:29
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?
zertozerto
Messages postés
34
Date d'inscription
mardi 8 mars 2011
Statut
Membre
Dernière intervention
21 mars 2011
9 mars 2011 à 16:20
9 mars 2011 à 16:20
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
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
Modifié par pijaku le 9/03/2011 à 16:25
Modifié par pijaku le 9/03/2011 à 16:25
1- de rien
2- si quelqu'un a glissé un espace, tu peux le tester :
A+, n'hésite pas à revenir
2- si quelqu'un a glissé un espace, tu peux le tester :
If Left(Sheets("Data Entry").Cells(7, Col), 1) = " " Then MsgBox "Quel est le con qui a mis un espace ici" End If
A+, n'hésite pas à revenir
zertozerto
Messages postés
34
Date d'inscription
mardi 8 mars 2011
Statut
Membre
Dernière intervention
21 mars 2011
9 mars 2011 à 16:38
9 mars 2011 à 16:38
Simple
Efficace
Vu que je suis en Angleterre et qu'ils savent pas lire le francais ca peut marcher tu me diras!
Efficace
Vu que je suis en Angleterre et qu'ils savent pas lire le francais ca peut marcher tu me diras!
zertozerto
Messages postés
34
Date d'inscription
mardi 8 mars 2011
Statut
Membre
Dernière intervention
21 mars 2011
16 mars 2011 à 18:11
16 mars 2011 à 18:11
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.
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
17 mars 2011 à 08:44
17 mars 2011 à 08:44
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...
zertozerto
Messages postés
34
Date d'inscription
mardi 8 mars 2011
Statut
Membre
Dernière intervention
21 mars 2011
17 mars 2011 à 10:22
17 mars 2011 à 10:22
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 :)
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
17 mars 2011 à 10:35
17 mars 2011 à 10:35
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
zertozerto
Messages postés
34
Date d'inscription
mardi 8 mars 2011
Statut
Membre
Dernière intervention
21 mars 2011
17 mars 2011 à 10:58
17 mars 2011 à 10:58
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?
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
17 mars 2011 à 11:10
17 mars 2011 à 11:10
je voudrais que ma macro (sur fichier A) s'execute sur ce fichier A ET sur un fichier B d'un autre dossier. En même temps? Tu veux que la macro cherche dans 2 fichiers différents?
Dis m'en davantage...
Dis m'en davantage...
zertozerto
Messages postés
34
Date d'inscription
mardi 8 mars 2011
Statut
Membre
Dernière intervention
21 mars 2011
17 mars 2011 à 12:05
17 mars 2011 à 12:05
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
zertozerto
Messages postés
34
Date d'inscription
mardi 8 mars 2011
Statut
Membre
Dernière intervention
21 mars 2011
17 mars 2011 à 12:11
17 mars 2011 à 12:11
je voudrais faire une code de ligne disant que maintenant je travaille sur le fichier B,
et apres refaire ma boucle qui cherche la semaine et le mois
et apres refaire ma boucle qui cherche la semaine et le mois