Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

remonter d'une cellule et DO LOOP

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).
 
M

Michel_M

Guest
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
 
C

coco

Guest
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
 
M

Michel_M

Guest
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

  • remonte.zip
    7 KB · Affichages: 51
M

Michel_M

Guest
Nos messages ont dû se croiser...

Ce que tu veux:

Est ce remonter au premier zéro (le + haut dans la feuille) ou 0 le plus proche en remontant de ta cellule active?

Dans l'attente
Michel_M
 
D

denis.jette@ccra-adrc.gc.ca

Guest
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
 
C

coco

Guest
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.
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…