Ce qui semble simple pour certains ne l'est pas forcément pour d'autre - Besoin d'explication

Fariri

XLDnaute Junior
Bonjour,

J'ai trouvé une code que j'ai adapté à mes besoins (et qui fonctionne), mais le hic c'est que je ne comprends pas tout.

Il y a t'il une personne qui pourrait me l'expliquer en détaille (ligne par ligne svp) avec des mots simples (je suis novice)
1000 merci d'avance

voici le code :


Dim Cellule As Range
Dim Art As String

Art = ComboBox4.Value

With Worksheets("Véhicule").Range("A1:A242")
Set Cellule = .Find(Art, Lookat:=xlWhole)

If Not Cellule Is Nothing Then
firstAddress = Cellule.Address
Do
Cellule.Offset(0, 1).Value = ComboBox2.Value
Cellule.Offset(0, 2).Value = ComboBox3.Value

Exit Sub
Set Cellule = .FindNext(Cellule)

Loop While Not Cellule Is Nothing And Cellule.Address <> firstAddress
End If
End With


Peut-on me dire pourquoi alors que j'ai plusieurs fois la valeur dans ma colonne il ne fait qu'une fois sa boucle (il ne modifie qu'une valeur) ?[/blue]
 
Dernière édition:

Efgé

XLDnaute Barbatruc
Bonjour Fariri
VB:
Sub explic()
'Déclaration de la variable Cellule comme une cellule (Range, emplacement sur la feuille)
Dim Cellule As Range
'Art est un texte
Dim Art As String
'Art est la valeur de la combobx4
Art = ComboBox4.Value
'on utilise la feuille Véhicule, plage A1:A242
With Worksheets("Véhicule").Range("A1:A242")
'On dit que la cellule est celle ou il y a la valeur de Art (find = trouve)
Set Cellule = .Find(Art, Lookat:=xlWhole)
'si la cellule n'est pas rien (donc si elle existe on a trouvé Art)
If Not Cellule Is Nothing Then
'on récupère l'adresse de la cellule (Par exemple $A$1)
firstAddress = Cellule.Address
'On fait (Début de boucle)
Do
'On met dans la cellule à coté la valeur de la combobox2
'Offset(Ligne, Colonne)
Cellule.Offset(0, 1).Value = ComboBox2.Value
'On met dans la cellule encore  à coté la valeur de la combobox3
Cellule.Offset(0, 2).Value = ComboBox3.Value
'là tu sors de la sub trop tôt.
'La boucle ne paux pas continuer
Exit Sub
'Suite de la boucle (trouver la prochaine cellule qui à Art)
Set Cellule = .FindNext(Cellule)
'on boucle tant que Art est trouvé dans la plage A1:A242
'et que la cellule trouvée n'est pas la première
Loop While Not Cellule Is Nothing And Cellule.Address <> firstAddress
'Fin de la condition :  If Not Cellule Is Nothing Then
End If
'Arret de l'utilisation de la feuille Véhicule
End With

End Sub
 
Dernière édition:

Fariri

XLDnaute Junior
Bonjour Fariri
VB:
Sub explic()
'Déclaration de la variable Cellule comme une cellule (Range, emplacement sur la feuille)
Dim Cellule As Range
'Art est un texte
Dim Art As String
'Art est la valeur de la combobx4
Art = ComboBox4.Value
'on utilise la feuille Véhicule, plage A1:A242
With Worksheets("Véhicule").Range("A1:A242")
'On dit que la cellule est celle ou il y a la valeur de Art (find = trouve)
Set Cellule = .Find(Art, Lookat:=xlWhole)
'si la cellule n'est pas rien (donc si elle existe on a trouvé Art)
If Not Cellule Is Nothing Then
'on récupère l'adresse de la cellule (Par exemple $A$1)
firstAddress = Cellule.Address
'On fait (Début de boucle)
Do
'On met dans la cellule à coté la valeur de la combobox2
'Offset(Ligne, Colonne)
Cellule.Offset(0, 1).Value = ComboBox2.Value
'On met dans la cellule encore  à coté la valeur de la combobox3
Cellule.Offset(0, 2).Value = ComboBox3.Value
'là tu sors de la sub trop tôt.
'La boucle ne paux pas continuer
Exit Sub
'Suite de la boucle (trouver la prochaine cellule qui à Art)
Set Cellule = .FindNext(Cellule)
'on boucle tant que Art est trouvé dans la plage A1:A242
'et que la cellule trouvée n'est pas la première
Loop While Not Cellule Is Nothing And Cellule.Address <> firstAddress
'Fin de la condition :  If Not Cellule Is Nothing Then
End If
'Arret de l'utilisation de la feuille Véhicule
End With

End Sub
super, merci beaucoup pour le détail
excellente journée
 

Fariri

XLDnaute Junior
Bonjour Fariri
VB:
Sub explic()
'Déclaration de la variable Cellule comme une cellule (Range, emplacement sur la feuille)
Dim Cellule As Range
'Art est un texte
Dim Art As String
'Art est la valeur de la combobx4
Art = ComboBox4.Value
'on utilise la feuille Véhicule, plage A1:A242
With Worksheets("Véhicule").Range("A1:A242")
'On dit que la cellule est celle ou il y a la valeur de Art (find = trouve)
Set Cellule = .Find(Art, Lookat:=xlWhole)
'si la cellule n'est pas rien (donc si elle existe on a trouvé Art)
If Not Cellule Is Nothing Then
'on récupère l'adresse de la cellule (Par exemple $A$1)
firstAddress = Cellule.Address
'On fait (Début de boucle)
Do
'On met dans la cellule à coté la valeur de la combobox2
'Offset(Ligne, Colonne)
Cellule.Offset(0, 1).Value = ComboBox2.Value
'On met dans la cellule encore  à coté la valeur de la combobox3
Cellule.Offset(0, 2).Value = ComboBox3.Value
'là tu sors de la sub trop tôt.
'La boucle ne paux pas continuer
Exit Sub
'Suite de la boucle (trouver la prochaine cellule qui à Art)
Set Cellule = .FindNext(Cellule)
'on boucle tant que Art est trouvé dans la plage A1:A242
'et que la cellule trouvée n'est pas la première
Loop While Not Cellule Is Nothing And Cellule.Address <> firstAddress
'Fin de la condition :  If Not Cellule Is Nothing Then
End If
'Arret de l'utilisation de la feuille Véhicule
End With

End Sub


j'ai encore une petite question :

si au lieu de mettre :

Cellule.Offset(0, 1).Value = ComboBox2.Value
Cellule.Offset(0, 2).Value = ComboBox3.Value

Et que je change l'instruction pour supprimer la ligne qui est en mémoire
j'ai essayé ça -> Rows(Cellule, 0).Delete <- mais ça ne fonctionne pas :confused:

merci

je veux supprimer la ligne, qu'est ce que je dois mettre comme instruction ?

merci
 

Efgé

XLDnaute Barbatruc
Re
Ce n'est plus du tout la même chose.
Si tu veux supprimer des lignes il faut boucler depuis le bas et remonter.
Ouvre un nouveau sujet avec un fichier exemple anonyme et réellement représentatif en expliquant le pourquoi du comment tu veux faire.
Cordialement
 

Discussions similaires

Réponses
12
Affichages
561
Réponses
12
Affichages
554

Statistiques des forums

Discussions
312 027
Messages
2 084 762
Membres
102 657
dernier inscrit
Ferdy