Mise à jour d'une feuille à partir d'une autre feuille en vba - VB/VBA/VBS - Programmation
Marsh Posté le 24-12-2008 à 00:01:06
si j'ai bien compris ton code, car tes explications sont pas géniales,
tu veux, pour chaque ligne de la feuille 1, trouver la ligne de la feuille 2 ayant la meme valeur dans la colonne 1, et recopier la valeur de la colonne 2 de cette ligne dans la colonne 3 de la premiere feuille ?
si oui, il te faut 2boucles, dans ton code, tu as bien 2 variables, mais une seule boucle, ton y reste a 2, donc rajoute une deuxième boucle imbriqué:
Sub pop()
Dim trouve As Boolean
x = 2 'x ligne de la feuil1
Do While Worksheets("feuil1" ).Cells(x, 1) <> ""
y = 2 'faut la reinitialiser à chaque fois
Do While Worksheets("feuil1" ).Cells(y, 1) <> ""
If Worksheets("feuil1" ).Cells(x, 1) = Worksheets("feuil2" ).Cells(y, 1) Then
Worksheets("feuil1" ).Cells(x, 3) = worksheets("feuil2" ).cells(y,2)
End If
y = y + 1
Loop
x = x + 1
Loop
End Sub
Marsh Posté le 24-12-2008 à 07:18:19
Bonjour,
si la macro ne t'est pas indispensable, pourquoi ne pas mettre:
=SIERREUR(RECHERCHEV(A1;Feuil2!A:B;2;FAUX);"" )
dans C2 de la feuil1 puis l'étendre sur la colonne??
Cordialement
Marsh Posté le 24-12-2008 à 07:55:10
Oui merci Satirik, ça marche, il fallait y penser pour la réinitialisation du y !
en me relisant c'est vrai que je n'étais pas forcément très clair dans mes explications.
en tout cas merci pour ton aide tu m'enlèves une grosse épine dans mon pied et surtout bonnes fêtes
quotemsg=1831029,2,44483]si j'ai bien compris ton code, car tes explications sont pas géniales,
tu veux, pour chaque ligne de la feuille 1, trouver la ligne de la feuille 2 ayant la meme valeur dans la colonne 1, et recopier la valeur de la colonne 2 de cette ligne dans la colonne 3 de la premiere feuille ?
si oui, il te faut 2boucles, dans ton code, tu as bien 2 variables, mais une seule boucle, ton y reste a 2, donc rajoute une deuxième boucle imbriqué:
Sub pop()
Dim trouve As Boolean
x = 2 'x ligne de la feuil1
Do While Worksheets("feuil1" ).Cells(x, 1) <> ""
y = 2 'faut la reinitialiser à chaque fois
Do While Worksheets("feuil1" ).Cells(y, 1) <> ""
If Worksheets("feuil1" ).Cells(x, 1) = Worksheets("feuil2" ).Cells(y, 1) Then
Worksheets("feuil1" ).Cells(x, 3) = worksheets("feuil2" ).cells(y,2)
End If
y = y + 1
Loop
x = x + 1
Loop
End Sub [/quotemsg]
Marsh Posté le 23-12-2008 à 17:59:24
Bonsoir,
ça fait plusieurs jours que je bloque sur un problème de boucle en langage vba avec le logiciel excel !!!
Je souhaite mettre à jour la colonne 2 de ma feuil1 à partir de la colonne 2 de ma feuil2.
La 1ère colonne des deux feuilles sert de champ clé.
Il est impossible que les lignes de la feuil2 ne soit pas dans la feuil1.
En faite j'arrive seulement à mettre à jour le 1er champ clé de la feuil, après il ne modifie plus rien.
Sub pop()
Dim trouve As Boolean
x = 2 'x ligne de la feuil1
y = 2 'y ligne de la feuil2
Do While Worksheets("feuil1" ).Cells(x, 1) <> ""
If Worksheets("feuil1" ).Cells(x, 1) = Worksheets("feuil2" ).Cells(y, 1) Then
Worksheets("feuil1" ).Cells(x, 3) = worksheets("feuil2" ).cells(y,2)
End If
x = x + 1
Loop
End Sub
Pour info, je préfère do while à for car mon fichier n'aura pas forcément à l'avenir le même nombre de lignes.
quelqu'un peut-il m'aider ?
Merci et bonnes fêtes à tous