[VBA] un while/wend qui ne veut pas marcher !
Résolu
lml-mike
Messages postés
455
Date d'inscription
Statut
Contributeur
Dernière intervention
-
lml-mike Messages postés 455 Date d'inscription Statut Contributeur Dernière intervention -
lml-mike Messages postés 455 Date d'inscription Statut Contributeur Dernière intervention -
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 Xme semblerait plus adapté !