remonter d'une cellule et DO LOOP

  • Initiateur de la discussion Initiateur de la discussion coco
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

C

coco

Guest
Bonjour à tous.
Dans une procédure sous xl2000 je voudrais remonter d'une cellule tant qu'une condition est remplie.
Ex. tant que la valeur de la cellule active =0 remonter d'une ligne

Avec le code suivant ça ne marche pas :

do
activeCell.offset(-1,0).range("A1").select

loop while (cellule active)=0

Ne pouvant rechercher dans le forum une éventuelle réponse serait-il possible que quelqu'un me dépanne.
Je remercie d'avance ous ceux qui s'interesseront à mon problème sur lequel je plante depuis plusieurs heures (suis débutant en VBA).
 
Salut Coco,


Ci dessous proposition de code (colonne de travail: A)


Sub remonter()

Dim lig As Long

lig = ActiveCell.Row

While Cells(lig, 1) <> 0
lig = lig - 1
Wend

Cells(lig, 1).Select
End Sub

A+
Michel. Béziers
 
Salut Michel, merci d'avoir répondu à mon message. Hélas le résultat ne convient pas. A l'exécution de ton code la routine s'arrête dès les premier "0" rencontré dans la colonne A. Ce que je souhaite c'est qu'elle aille jusqu'au dernier "0" de la colonne (en remontant).
Je pensais qu'avec un DO LOOP je pouvais m'en sortir mais il y a quelque chose qui m'échappe.
Merci malgré tout de ton aide.
Coco
 
Re-coco

Après avoir mangé, je te propose ci-joint une alternative à ma proposition en n’utilisant pas de boucle (toujours très lentes en VBA) si ta liste est longue.

Si tu restes sur la première proposition, j’ai oublié de traiter le cas où il n’y a pas de Zero dans la remontée donc, le prog devient :

While Cells(lig, 1) <> 0
lig = lig - 1
if lig=0 then
msgbox " pas de valeur 0 entre la ligne 1 et la cellule active"
exit sub
end if
Wend



A+
Michel. Béziers
 

Pièces jointes

bonjour coco

Tu peux tenter une autre solution si tu le desires

Sub test()
maxrow = Sheets("Sheet1").Range("a65536").End(xlUp).Row
For j = maxrow To 1 Step -1
Range("a" & j).Select
Var = ActiveCell.Value
If Var = 0 Then
MsgBox "La cellule a" & j & " a une valeur de zero"
Exit Sub
End If
Next
End Sub

Denis
 
Bonjour Michel, Denis et le forum.

Après quelques jours de pause je reviens sur mùon problème. Michel c'est bien au 1er zéro de la colonne que je veux aboutir. D'ailleurs Denis m'a envoyé une proposition qui répond parfaitement à ce que je souhaitais.
Merci à tous les deux. C'est vraiment sympa.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Retour