[VBA] un while/wend qui ne veut pas marcher !

Résolu
lml-mike Messages postés 449 Date d'inscription   Statut Contributeur Dernière intervention   -  
lml-mike Messages postés 449 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) :

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

  1. yoyoton Messages postés 7 Statut Membre 7
     
    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 :
    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é !
    1
  2. lml-mike Messages postés 449 Date d'inscription   Statut Contributeur Dernière intervention   123
     
    ça marche niquel, maintenant je peux copier/coller mon script sur mes 28 autres boutons juste en changeant ma variable publique en début de script.

    Problème résolu, merci pour ton aide :-)
    0