Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

VBA Aide sur boucle vérification + copie d'une feuille sur l'autre

5 réponses
Avatar
DJ9B
Bonjour à tous ;) !
J'ai un soucis pour créer une boucle en VBA et j'aurai besoin d'un peu
d'aide car je coince :( !

Voici mon problème :
J'ai sur une feuille Feuil1 une liste de chiffres de C14 à C...(pas défini)
avec en regard en colonne D des quantités.
Disons que la Feuil1 est celle où sont les anciennes données avec une mise
en forme particulière

Je récupère de nouvelles données sur une feuille Feuil2 avec une liste de
chiffres de C2 à C...(pas défini) avec en regard en colonne D des quantités.


Comment créer une boucle qui
vérifie si les chiffres en colonne C de la Feuil2 sont présents dans la
colonne C de la Feuil1
Action si oui >>>> que la valeur de la colonne d dans la Feuil1 soit modifié
par celle en colonne d de la feuil2
Action si non >>> que le chiffre présent en colonne C ainsi et la quantité
en colonne D de la Feuil2 soit recopier dans la première cellule vide en
colonne C et D de la Feuil1


Merci d'avance chers contributeurs de vos propositions ;) !

5 réponses

Avatar
Daniel.C
Bonsoir.
Essaie :

Sub test1()
Dim Sh1 As Worksheet, Sh2 As Worksheet
Dim c As Range, Plage1 As Range, Plage2 As Range
Application.ScreenUpdating = False
Set Sh1 = Worksheets("Feuil1")
Set Sh2 = Worksheets("Feuil2")
Set Plage1 = Range(Sh1.[C14], Sh1.[C65000].End(xlUp))
Set Plage2 = Range(Sh2.[C2], Sh2.[C65000].End(xlUp))
For Each c In Plage2
ctr = Application.Match(c.Value, Plage1, 0)
If IsNumeric(ctr) Then
Sh1.[D13].Offset(ctr) = c.Offset(, 1)
Else
Sh1.[C65000].End(xlUp).Offset(1) = c.Value
Sh1.[D65000].End(xlUp).Offset(1) = c.Offset(, 1).Value
End If
Next c
Application.ScreenUpdating = True
End Sub

Cordialement.
Daniel

Bonjour à tous ;) !
J'ai un soucis pour créer une boucle en VBA et j'aurai besoin d'un peu d'aide
car je coince :( !

Voici mon problème :
J'ai sur une feuille Feuil1 une liste de chiffres de C14 à C...(pas défini)
avec en regard en colonne D des quantités.
Disons que la Feuil1 est celle où sont les anciennes données avec une mise en
forme particulière

Je récupère de nouvelles données sur une feuille Feuil2 avec une liste de
chiffres de C2 à C...(pas défini) avec en regard en colonne D des quantités.


Comment créer une boucle qui
vérifie si les chiffres en colonne C de la Feuil2 sont présents dans la
colonne C de la Feuil1
Action si oui >>>> que la valeur de la colonne d dans la Feuil1 soit modifié
par celle en colonne d de la feuil2
Action si non >>> que le chiffre présent en colonne C ainsi et la quantité en
colonne D de la Feuil2 soit recopier dans la première cellule vide en colonne
C et D de la Feuil1


Merci d'avance chers contributeurs de vos propositions ;) !
Avatar
DJ9B
Merci beaucoup Daniel pour cette boucle rapide et efficace qui correspond
exactement à mes attentes ;) !



"Daniel.C" a écrit dans le message de news:

Bonsoir.
Essaie :

Sub test1()
Dim Sh1 As Worksheet, Sh2 As Worksheet
Dim c As Range, Plage1 As Range, Plage2 As Range
Application.ScreenUpdating = False
Set Sh1 = Worksheets("Feuil1")
Set Sh2 = Worksheets("Feuil2")
Set Plage1 = Range(Sh1.[C14], Sh1.[C65000].End(xlUp))
Set Plage2 = Range(Sh2.[C2], Sh2.[C65000].End(xlUp))
For Each c In Plage2
ctr = Application.Match(c.Value, Plage1, 0)
If IsNumeric(ctr) Then
Sh1.[D13].Offset(ctr) = c.Offset(, 1)
Else
Sh1.[C65000].End(xlUp).Offset(1) = c.Value
Sh1.[D65000].End(xlUp).Offset(1) = c.Offset(, 1).Value
End If
Next c
Application.ScreenUpdating = True
End Sub

Cordialement.
Daniel

Bonjour à tous ;) !
J'ai un soucis pour créer une boucle en VBA et j'aurai besoin d'un peu
d'aide car je coince :( !

Voici mon problème :
J'ai sur une feuille Feuil1 une liste de chiffres de C14 à C...(pas
défini) avec en regard en colonne D des quantités.
Disons que la Feuil1 est celle où sont les anciennes données avec une
mise en forme particulière

Je récupère de nouvelles données sur une feuille Feuil2 avec une liste de
chiffres de C2 à C...(pas défini) avec en regard en colonne D des
quantités.


Comment créer une boucle qui
vérifie si les chiffres en colonne C de la Feuil2 sont présents dans la
colonne C de la Feuil1
Action si oui >>>> que la valeur de la colonne d dans la Feuil1 soit
modifié par celle en colonne d de la feuil2
Action si non >>> que le chiffre présent en colonne C ainsi et la
quantité en colonne D de la Feuil2 soit recopier dans la première cellule
vide en colonne C et D de la Feuil1


Merci d'avance chers contributeurs de vos propositions ;) !




Avatar
DJ9B
Merci Daniel mais j'ai oublié un paramètre important j'ai quelques valeurs 0
parasitaires qui s'intercalent dans ma Feuil2 :( !

Peut-on faire qu'il ne copie pas les valeurs = 0 en colonne C de la feuil2
vers la feuil1 ou faut-il obligatoirement trier les données et exclure les
valeurs = 0 avant de faire tourner ta macro?

"Daniel.C" a écrit dans le message de news:

Bonsoir.
Essaie :

Sub test1()
Dim Sh1 As Worksheet, Sh2 As Worksheet
Dim c As Range, Plage1 As Range, Plage2 As Range
Application.ScreenUpdating = False
Set Sh1 = Worksheets("Feuil1")
Set Sh2 = Worksheets("Feuil2")
Set Plage1 = Range(Sh1.[C14], Sh1.[C65000].End(xlUp))
Set Plage2 = Range(Sh2.[C2], Sh2.[C65000].End(xlUp))
For Each c In Plage2
ctr = Application.Match(c.Value, Plage1, 0)
If IsNumeric(ctr) Then
Sh1.[D13].Offset(ctr) = c.Offset(, 1)
Else
Sh1.[C65000].End(xlUp).Offset(1) = c.Value
Sh1.[D65000].End(xlUp).Offset(1) = c.Offset(, 1).Value
End If
Next c
Application.ScreenUpdating = True
End Sub

Cordialement.
Daniel

Bonjour à tous ;) !
J'ai un soucis pour créer une boucle en VBA et j'aurai besoin d'un peu
d'aide car je coince :( !

Voici mon problème :
J'ai sur une feuille Feuil1 une liste de chiffres de C14 à C...(pas
défini) avec en regard en colonne D des quantités.
Disons que la Feuil1 est celle où sont les anciennes données avec une
mise en forme particulière

Je récupère de nouvelles données sur une feuille Feuil2 avec une liste de
chiffres de C2 à C...(pas défini) avec en regard en colonne D des
quantités.


Comment créer une boucle qui
vérifie si les chiffres en colonne C de la Feuil2 sont présents dans la
colonne C de la Feuil1
Action si oui >>>> que la valeur de la colonne d dans la Feuil1 soit
modifié par celle en colonne d de la feuil2
Action si non >>> que le chiffre présent en colonne C ainsi et la
quantité en colonne D de la Feuil2 soit recopier dans la première cellule
vide en colonne C et D de la Feuil1


Merci d'avance chers contributeurs de vos propositions ;) !




Avatar
Daniel.C
Sub test1()
Dim Sh1 As Worksheet, Sh2 As Worksheet
Dim c As Range, Plage1 As Range, Plage2 As Range
Application.ScreenUpdating = False
Set Sh1 = Worksheets("Feuil1")
Set Sh2 = Worksheets("Feuil2")
Set Plage1 = Range(Sh1.[C14], Sh1.[C65000].End(xlUp))
Set Plage2 = Range(Sh2.[C2], Sh2.[C65000].End(xlUp))
For Each c In Plage2
If c.Value <> 0 Then
ctr = Application.Match(c.Value, Plage1, 0)
If IsNumeric(ctr) Then
Sh1.[D13].Offset(ctr) = c.Offset(, 1)
Else
Sh1.[C65000].End(xlUp).Offset(1) = c.Value
Sh1.[D65000].End(xlUp).Offset(1) = c.Offset(, 1).Value
End If
End If
Next c
Application.ScreenUpdating = True
End Sub

Daniel

Merci Daniel mais j'ai oublié un paramètre important j'ai quelques valeurs 0
parasitaires qui s'intercalent dans ma Feuil2 :( !

Peut-on faire qu'il ne copie pas les valeurs = 0 en colonne C de la feuil2
vers la feuil1 ou faut-il obligatoirement trier les données et exclure les
valeurs = 0 avant de faire tourner ta macro?

"Daniel.C" a écrit dans le message de news:

Bonsoir.
Essaie :

Sub test1()
Dim Sh1 As Worksheet, Sh2 As Worksheet
Dim c As Range, Plage1 As Range, Plage2 As Range
Application.ScreenUpdating = False
Set Sh1 = Worksheets("Feuil1")
Set Sh2 = Worksheets("Feuil2")
Set Plage1 = Range(Sh1.[C14], Sh1.[C65000].End(xlUp))
Set Plage2 = Range(Sh2.[C2], Sh2.[C65000].End(xlUp))
For Each c In Plage2
ctr = Application.Match(c.Value, Plage1, 0)
If IsNumeric(ctr) Then
Sh1.[D13].Offset(ctr) = c.Offset(, 1)
Else
Sh1.[C65000].End(xlUp).Offset(1) = c.Value
Sh1.[D65000].End(xlUp).Offset(1) = c.Offset(, 1).Value
End If
Next c
Application.ScreenUpdating = True
End Sub

Cordialement.
Daniel

Bonjour à tous ;) !
J'ai un soucis pour créer une boucle en VBA et j'aurai besoin d'un peu
d'aide car je coince :( !

Voici mon problème :
J'ai sur une feuille Feuil1 une liste de chiffres de C14 à C...(pas
défini) avec en regard en colonne D des quantités.
Disons que la Feuil1 est celle où sont les anciennes données avec une mise
en forme particulière

Je récupère de nouvelles données sur une feuille Feuil2 avec une liste de
chiffres de C2 à C...(pas défini) avec en regard en colonne D des
quantités.


Comment créer une boucle qui
vérifie si les chiffres en colonne C de la Feuil2 sont présents dans la
colonne C de la Feuil1
Action si oui >>>> que la valeur de la colonne d dans la Feuil1 soit
modifié par celle en colonne d de la feuil2
Action si non >>> que le chiffre présent en colonne C ainsi et la quantité
en colonne D de la Feuil2 soit recopier dans la première cellule vide en
colonne C et D de la Feuil1


Merci d'avance chers contributeurs de vos propositions ;) !




Avatar
DJ9B
Merci beaucoup Daniel cela fonctionne parfaitement ;) !

Vive le MPFE et ces contributeurs aussi rapides qu'efficaces !!!




"Daniel.C" a écrit dans le message de news:
%
Sub test1()
Dim Sh1 As Worksheet, Sh2 As Worksheet
Dim c As Range, Plage1 As Range, Plage2 As Range
Application.ScreenUpdating = False
Set Sh1 = Worksheets("Feuil1")
Set Sh2 = Worksheets("Feuil2")
Set Plage1 = Range(Sh1.[C14], Sh1.[C65000].End(xlUp))
Set Plage2 = Range(Sh2.[C2], Sh2.[C65000].End(xlUp))
For Each c In Plage2
If c.Value <> 0 Then
ctr = Application.Match(c.Value, Plage1, 0)
If IsNumeric(ctr) Then
Sh1.[D13].Offset(ctr) = c.Offset(, 1)
Else
Sh1.[C65000].End(xlUp).Offset(1) = c.Value
Sh1.[D65000].End(xlUp).Offset(1) = c.Offset(, 1).Value
End If
End If
Next c
Application.ScreenUpdating = True
End Sub

Daniel

Merci Daniel mais j'ai oublié un paramètre important j'ai quelques
valeurs 0 parasitaires qui s'intercalent dans ma Feuil2 :( !

Peut-on faire qu'il ne copie pas les valeurs = 0 en colonne C de la
feuil2 vers la feuil1 ou faut-il obligatoirement trier les données et
exclure les valeurs = 0 avant de faire tourner ta macro?

"Daniel.C" a écrit dans le message de news:

Bonsoir.
Essaie :

Sub test1()
Dim Sh1 As Worksheet, Sh2 As Worksheet
Dim c As Range, Plage1 As Range, Plage2 As Range
Application.ScreenUpdating = False
Set Sh1 = Worksheets("Feuil1")
Set Sh2 = Worksheets("Feuil2")
Set Plage1 = Range(Sh1.[C14], Sh1.[C65000].End(xlUp))
Set Plage2 = Range(Sh2.[C2], Sh2.[C65000].End(xlUp))
For Each c In Plage2
ctr = Application.Match(c.Value, Plage1, 0)
If IsNumeric(ctr) Then
Sh1.[D13].Offset(ctr) = c.Offset(, 1)
Else
Sh1.[C65000].End(xlUp).Offset(1) = c.Value
Sh1.[D65000].End(xlUp).Offset(1) = c.Offset(, 1).Value
End If
Next c
Application.ScreenUpdating = True
End Sub

Cordialement.
Daniel

Bonjour à tous ;) !
J'ai un soucis pour créer une boucle en VBA et j'aurai besoin d'un peu
d'aide car je coince :( !

Voici mon problème :
J'ai sur une feuille Feuil1 une liste de chiffres de C14 à C...(pas
défini) avec en regard en colonne D des quantités.
Disons que la Feuil1 est celle où sont les anciennes données avec une
mise en forme particulière

Je récupère de nouvelles données sur une feuille Feuil2 avec une liste
de chiffres de C2 à C...(pas défini) avec en regard en colonne D des
quantités.


Comment créer une boucle qui
vérifie si les chiffres en colonne C de la Feuil2 sont présents dans la
colonne C de la Feuil1
Action si oui >>>> que la valeur de la colonne d dans la Feuil1 soit
modifié par celle en colonne d de la feuil2
Action si non >>> que le chiffre présent en colonne C ainsi et la
quantité en colonne D de la Feuil2 soit recopier dans la première
cellule vide en colonne C et D de la Feuil1


Merci d'avance chers contributeurs de vos propositions ;) !