[VBA] un while/wend qui ne veut pas marcher !
Résolu
lml-mike
Messages postés
487
Statut
Contributeur
-
lml-mike Messages postés 487 Statut Contributeur -
lml-mike Messages postés 487 Statut Contributeur -
Bonjour,
J'ai un soucis avec ma fonction While.
Je lui demande de chercher un numéro dans toute la colonne D. Le problème est qu'il boucle infiniment en cherchant dans la colonne B.
Pourquoi ? Tout simplement parce que la configuration des cellules font que certaines de la colonne D sont liées à d'autres de la colonne B et C.
Vous savez comment faire pour que cette boucle RESTE sur la colonne D, peu importe si les cellules à l'intérieur sont liées ou non ?
Voici ma boucle (numpc est une variable publique) :
Merci !!!
J'ai un soucis avec ma fonction While.
Je lui demande de chercher un numéro dans toute la colonne D. Le problème est qu'il boucle infiniment en cherchant dans la colonne B.
Pourquoi ? Tout simplement parce que la configuration des cellules font que certaines de la colonne D sont liées à d'autres de la colonne B et C.
Vous savez comment faire pour que cette boucle RESTE sur la colonne D, peu importe si les cellules à l'intérieur sont liées ou non ?
Voici ma boucle (numpc est une variable publique) :
Private Sub OK_Click()
Range("d1").Activate
While ActiveCell.Value <> numpc
ActiveCell.Offset(1, 0).Activate
Wend
ActiveCell.Offset(2, 0).Activate
ActiveCell.Value = Me.nom_client
ActiveCell.Offset(2, 0).Activate
ActiveCell.Value = Time
End sub
Merci !!!
2 réponses
Je comprends le problème, la solution, c'est d'obliger VBA a rester dans la colonne D, et d'éviter le passage par activation.
Je proposerai ça :
Par contre, j'avoue que je n'aime pas ce genre de boucle qui, si elle ne trouve pas de donnée, bug nécessairement ! un
Je proposerai ça :
Private Sub OK_Click()
ligne = Range("d1").Row
col = Range("d1").Column
While Cells(ligne,col).Value <> numpc
ligne=ligne+1
Wend
Cells(ligne,col).Activate
ActiveCell.Offset(2, 0).Activate
ActiveCell.Value = Me.nom_client
ActiveCell.Offset(2, 0).Activate
ActiveCell.Value = Time
End sub
Par contre, j'avoue que je n'aime pas ce genre de boucle qui, si elle ne trouve pas de donnée, bug nécessairement ! un
for ligne=Range("d1").Row to X me semblerait plus adapté !