OVH Cloud OVH Cloud

Une boucle qui boucle pas__A l'aide

3 réponses
Avatar
ed
Pardon, je remets ma question ici... parce que l'Angoisse monte!!
Merci d'avance
ed

Le code que Lolote m'avait concocté et qui fonctionnait très bien... ne
fonctionne plus depuis que je compare les cellules d'une sheet avec une autre
sheet. Plus de boucle... surement à cause de mon next de la premiere
boucle...

J'ai fait aussi compliqué qu'un débutant puisse faire.
Merci à ceux qui pourront m'aider

Voici maintenant ce que j'ai:
Sub Test()
Dim xCellule As Range
Dim xCel1, xCel2
Dim i
i = 0
ActiveSheet.Select
Range("B6").Select
For Each xCellule In Range("B6")
i = i + 1
xCel1 = xCellule.Value
Next
sheets("Feuil3").Select
For Each xCellule In Range("B6")
xCel2 = xCellule.Value
If xCel1 <> xCel2 Then
sheets("ONGLET 1").Select ---- DEVRAIT ÊTRE ACTIVESHEETMAIS JE DOIS
SPECIFIER LE NOM DE L'ONGLET CAR J'ETAIS SUR UN AUTRE AVANT... POUR
ALLERCHERCHER VALEUR DE CEL2.
Range("B" & i + 5, "Q" & i + 5).Select
Selection.Insert Shift:=xlDown
End If
Next

End Sub

3 réponses

Avatar
Rai
Pardon, je remets ma question ici... parce que l'Angoisse monte!!
Merci d'avance
ed

Le code que Lolote m'avait concocté et qui fonctionnait très bien... ne
fonctionne plus depuis que je compare les cellules d'une sheet avec une autre
sheet. Plus de boucle... surement à cause de mon next de la premiere
boucle...

J'ai fait aussi compliqué qu'un débutant puisse faire.
Merci à ceux qui pourront m'aider

Voici maintenant ce que j'ai:
Sub Test()
Dim xCellule As Range
Dim xCel1, xCel2
Dim i
i = 0
ActiveSheet.Select
Range("B6").Select
For Each xCellule In Range("B6")
i = i + 1
xCel1 = xCellule.Value
Next
sheets("Feuil3").Select
For Each xCellule In Range("B6")
xCel2 = xCellule.Value
If xCel1 <> xCel2 Then
sheets("ONGLET 1").Select ---- DEVRAIT ÊTRE ACTIVESHEETMAIS JE DOIS
SPECIFIER LE NOM DE L'ONGLET CAR J'ETAIS SUR UN AUTRE AVANT... POUR
ALLERCHERCHER VALEUR DE CEL2.
Range("B" & i + 5, "Q" & i + 5).Select
Selection.Insert Shift:=xlDown
End If
Next

End Sub

Bonjour,


Un début de réponse :
For Each xCellule In Range("B6") ne peut pas boucler car il n'y a qu'une
cellule dans la plage "B6" ... donc pas de boucle.

Cordialement

Rai

Avatar
El pequeno

Pardon, je remets ma question ici... parce que l'Angoisse monte!!
Merci d'avance
ed

Le code que Lolote m'avait concocté et qui fonctionnait très bien... ne
fonctionne plus depuis que je compare les cellules d'une sheet avec une autre
sheet. Plus de boucle... surement à cause de mon next de la premiere
boucle...

J'ai fait aussi compliqué qu'un débutant puisse faire.
Merci à ceux qui pourront m'aider

Voici maintenant ce que j'ai:
Sub Test()
Dim xCellule As Range
Dim xCel1, xCel2
Dim i
i = 0
ActiveSheet.Select
Range("B6").Select
For Each xCellule In Range("B6")
i = i + 1
xCel1 = xCellule.Value
Next
sheets("Feuil3").Select
For Each xCellule In Range("B6")
xCel2 = xCellule.Value
If xCel1 <> xCel2 Then
sheets("ONGLET 1").Select ---- DEVRAIT ÊTRE ACTIVESHEETMAIS JE DOIS
SPECIFIER LE NOM DE L'ONGLET CAR J'ETAIS SUR UN AUTRE AVANT... POUR
ALLERCHERCHER VALEUR DE CEL2.
Range("B" & i + 5, "Q" & i + 5).Select
Selection.Insert Shift:=xlDown
End If
Next

End Sub

Bonjour.

Une fois le probléme de plage réglé ( ...For Each xCellule In
Range("B6:B8"),par exemple...), tu dois intégrer ta boucle de comparaison
dans ta boucle d'initialisation :
For Each Cell In Range("B6:B8")
xCel1 = xCellule.Value
For Each xCellule In Range("B6:B8")
xCel2 = xCellule.Value
If xCel1 <> xCel2 Then...
Next Cell
Next xCellule
Sinon la comparaison se fera toujours sur la meme valeur de xCel1 : la
dernière
cellule de la plage visitée lors de la premiére boucle (soit "B8" dans
l'exemple...)

Tu remarqueras que j'ai denommé différemment les variables des deux boucles
( Cell et xCellule ). Je ne suis pas certain que ce soit obligatoire, mais
c'est de toute facon préférable lorsque l'on imbrique des boucles.

A part ca, si tu compare "B6" à "B6", tu risque de trouver que la valeur est
toujours la meme...

Cordialement.

Avatar
ed
Merci pour vos réponses TRES PRECIEUSES et qui m'ont permis d'avancer et de
trouver l'erreur.
Bravo pour vos commentaires perspicaces.

enfin ma boucle boucle !!!

Cordialement
ed






Pardon, je remets ma question ici... parce que l'Angoisse monte!!
Merci d'avance
ed

Le code que Lolote m'avait concocté et qui fonctionnait très bien... ne
fonctionne plus depuis que je compare les cellules d'une sheet avec une autre
sheet. Plus de boucle... surement à cause de mon next de la premiere
boucle...

J'ai fait aussi compliqué qu'un débutant puisse faire.
Merci à ceux qui pourront m'aider

Voici maintenant ce que j'ai:
Sub Test()
Dim xCellule As Range
Dim xCel1, xCel2
Dim i
i = 0
ActiveSheet.Select
Range("B6").Select
For Each xCellule In Range("B6")
i = i + 1
xCel1 = xCellule.Value
Next
sheets("Feuil3").Select
For Each xCellule In Range("B6")
xCel2 = xCellule.Value
If xCel1 <> xCel2 Then
sheets("ONGLET 1").Select ---- DEVRAIT ÊTRE ACTIVESHEETMAIS JE DOIS
SPECIFIER LE NOM DE L'ONGLET CAR J'ETAIS SUR UN AUTRE AVANT... POUR
ALLERCHERCHER VALEUR DE CEL2.
Range("B" & i + 5, "Q" & i + 5).Select
Selection.Insert Shift:=xlDown
End If
Next

End Sub

Bonjour.

Une fois le probléme de plage réglé ( ...For Each xCellule In
Range("B6:B8"),par exemple...), tu dois intégrer ta boucle de comparaison
dans ta boucle d'initialisation :
For Each Cell In Range("B6:B8")
xCel1 = xCellule.Value
For Each xCellule In Range("B6:B8")
xCel2 = xCellule.Value
If xCel1 <> xCel2 Then...
Next Cell
Next xCellule
Sinon la comparaison se fera toujours sur la meme valeur de xCel1 : la
dernière
cellule de la plage visitée lors de la premiére boucle (soit "B8" dans
l'exemple...)

Tu remarqueras que j'ai denommé différemment les variables des deux boucles
( Cell et xCellule ). Je ne suis pas certain que ce soit obligatoire, mais
c'est de toute facon préférable lorsque l'on imbrique des boucles.

A part ca, si tu compare "B6" à "B6", tu risque de trouver que la valeur est
toujours la meme...

Cordialement.