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

Résolu
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. 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
    1. Contributeur
      ç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