peux parcourir les cellules d'une zone nommée

9 réponses
Avatar
Alfred WALLACE
Bonjour,
j'essaye toujours de parcourir ma plage [zone_sujets]

est ce qu'il est possible de "boucler" de la premi=E8re =E0 la derni=E8re
cellule de cette plage, mais, =E0 la fin , je reviens =E0 la premi=E8re ?

exemple ma zone va de A1 jusqu'a A10

je cherche =E0 me d=E9placer de A1, jusqu'a A10, ok, mais, en A10,
est-ce que je peux "boucler" sur A1 lorsque je suis en A10 ?


Merci pour votre aide.

Jos=E9

9 réponses

Avatar
DanielCo
Prévois une sortie de la boucle :

Do
If i = [zone_sujets].Count Then i = 0
i = i + 1
MsgBox Range("zone_sujets")(i).Value
Loop

Cordialement.
Daniel


Bonjour,
j'essaye toujours de parcourir ma plage [zone_sujets]

est ce qu'il est possible de "boucler" de la première à la dernière
cellule de cette plage, mais, à la fin , je reviens à la première ?

exemple ma zone va de A1 jusqu'a A10

je cherche à me déplacer de A1, jusqu'a A10, ok, mais, en A10,
est-ce que je peux "boucler" sur A1 lorsque je suis en A10 ?


Merci pour votre aide.

José
Avatar
MichD
Bonjour,

Je n'ai pas vraiment compris ce que tu tentes de faire :

La procédure est une boucle sans fin, elle passe de A1 jusqu'à A5
et recommence continuellement...
Attention, exécute cette procédure pas à pas en utilisant la touche F8
sinon tu te retrouveras dans une boucle avec aucune possibilité d'en sortir !

'--------------------------------------
Sub test()

Dim A As Integer, X As Integer
With Range("A1:A5")
X = .Cells.Count
Do While A <= X
A = A + 1
.Item(A, 1).Select
If A = X Then
A = 0
End If
Loop
End With
End Sub



MichD
--------------------------------------------
"Alfred WALLACE" a écrit dans le message de groupe de discussion :


Bonjour,
j'essaye toujours de parcourir ma plage [zone_sujets]

est ce qu'il est possible de "boucler" de la première à la dernière
cellule de cette plage, mais, à la fin , je reviens à la première ?

exemple ma zone va de A1 jusqu'a A10

je cherche à me déplacer de A1, jusqu'a A10, ok, mais, en A10,
est-ce que je peux "boucler" sur A1 lorsque je suis en A10 ?


Merci pour votre aide.

José
Avatar
Jacquouille
Mon Bon Denis
je profite de cette remarque pour poser ....
Quand on fait une connerie, et que l'on s'embarque dans une boucle du style
à rallonge qui dure une heure, comment peut-on stopper la macro autrement
qu'avec un marteau ou stopper le PC ?
Bon, tu viens de dire d'utiliser la F8, mais, au départ, on ne sait pas que
l'on a fait une connerie....
merci

Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"MichD" a écrit dans le message de groupe de discussion :
iukflu$lii$

Bonjour,

Je n'ai pas vraiment compris ce que tu tentes de faire :

La procédure est une boucle sans fin, elle passe de A1 jusqu'à A5
et recommence continuellement...
Attention, exécute cette procédure pas à pas en utilisant la touche F8
sinon tu te retrouveras dans une boucle avec aucune possibilité d'en sortir
!

'--------------------------------------
Sub test()

Dim A As Integer, X As Integer
With Range("A1:A5")
X = .Cells.Count
Do While A <= X
A = A + 1
.Item(A, 1).Select
If A = X Then
A = 0
End If
Loop
End With
End Sub



MichD
--------------------------------------------
"Alfred WALLACE" a écrit dans le message de groupe de discussion :


Bonjour,
j'essaye toujours de parcourir ma plage [zone_sujets]

est ce qu'il est possible de "boucler" de la première à la dernière
cellule de cette plage, mais, à la fin , je reviens à la première ?

exemple ma zone va de A1 jusqu'a A10

je cherche à me déplacer de A1, jusqu'a A10, ok, mais, en A10,
est-ce que je peux "boucler" sur A1 lorsque je suis en A10 ?


Merci pour votre aide.

José
Avatar
MichD
Tu peux procéder comme suit en modifiant légèrement la macro
afin de pouvoir t'assurer une intervention...

Tu peux lancer cette macro et interrompre son déroulement par
la combinaison des touches Ctrl + Pause


'-------------------------------------
Sub test()
Dim A As Integer, X As Integer

'**************
Application.EnableCancelKey = xlInterrupt
'**************
With Range("A1:A5")
X = .Cells.Count
Do While A <= X
A = A + 1
.Item(A, 1).Select
If A = X Then
A = 0
End If
Loop
End With
End Sub
'-------------------------------------


MichD
--------------------------------------------
"Jacquouille" a écrit dans le message de groupe de discussion : 4e0dd23c$0$14258$

Mon Bon Denis
je profite de cette remarque pour poser ....
Quand on fait une connerie, et que l'on s'embarque dans une boucle du style
à rallonge qui dure une heure, comment peut-on stopper la macro autrement
qu'avec un marteau ou stopper le PC ?
Bon, tu viens de dire d'utiliser la F8, mais, au départ, on ne sait pas que
l'on a fait une connerie....
merci

Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"MichD" a écrit dans le message de groupe de discussion :
iukflu$lii$

Bonjour,

Je n'ai pas vraiment compris ce que tu tentes de faire :

La procédure est une boucle sans fin, elle passe de A1 jusqu'à A5
et recommence continuellement...
Attention, exécute cette procédure pas à pas en utilisant la touche F8
sinon tu te retrouveras dans une boucle avec aucune possibilité d'en sortir
!

'--------------------------------------
Sub test()

Dim A As Integer, X As Integer
With Range("A1:A5")
X = .Cells.Count
Do While A <= X
A = A + 1
.Item(A, 1).Select
If A = X Then
A = 0
End If
Loop
End With
End Sub



MichD
--------------------------------------------
"Alfred WALLACE" a écrit dans le message de groupe de discussion :


Bonjour,
j'essaye toujours de parcourir ma plage [zone_sujets]

est ce qu'il est possible de "boucler" de la première à la dernière
cellule de cette plage, mais, à la fin , je reviens à la première ?

exemple ma zone va de A1 jusqu'a A10

je cherche à me déplacer de A1, jusqu'a A10, ok, mais, en A10,
est-ce que je peux "boucler" sur A1 lorsque je suis en A10 ?


Merci pour votre aide.

José
Avatar
MichD
J'oubliais, la touche Esc peut aussi être employée au lieu de Ctrl + Pause



MichD
--------------------------------------------
"MichD" a écrit dans le message de groupe de discussion : iukluk$58u$

Tu peux procéder comme suit en modifiant légèrement la macro
afin de pouvoir t'assurer une intervention...

Tu peux lancer cette macro et interrompre son déroulement par
la combinaison des touches Ctrl + Pause


'-------------------------------------
Sub test()
Dim A As Integer, X As Integer

'**************
Application.EnableCancelKey = xlInterrupt
'**************
With Range("A1:A5")
X = .Cells.Count
Do While A <= X
A = A + 1
.Item(A, 1).Select
If A = X Then
A = 0
End If
Loop
End With
End Sub
'-------------------------------------


MichD
--------------------------------------------
"Jacquouille" a écrit dans le message de groupe de discussion : 4e0dd23c$0$14258$

Mon Bon Denis
je profite de cette remarque pour poser ....
Quand on fait une connerie, et que l'on s'embarque dans une boucle du style
à rallonge qui dure une heure, comment peut-on stopper la macro autrement
qu'avec un marteau ou stopper le PC ?
Bon, tu viens de dire d'utiliser la F8, mais, au départ, on ne sait pas que
l'on a fait une connerie....
merci

Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"MichD" a écrit dans le message de groupe de discussion :
iukflu$lii$

Bonjour,

Je n'ai pas vraiment compris ce que tu tentes de faire :

La procédure est une boucle sans fin, elle passe de A1 jusqu'à A5
et recommence continuellement...
Attention, exécute cette procédure pas à pas en utilisant la touche F8
sinon tu te retrouveras dans une boucle avec aucune possibilité d'en sortir
!

'--------------------------------------
Sub test()

Dim A As Integer, X As Integer
With Range("A1:A5")
X = .Cells.Count
Do While A <= X
A = A + 1
.Item(A, 1).Select
If A = X Then
A = 0
End If
Loop
End With
End Sub



MichD
--------------------------------------------
"Alfred WALLACE" a écrit dans le message de groupe de discussion :


Bonjour,
j'essaye toujours de parcourir ma plage [zone_sujets]

est ce qu'il est possible de "boucler" de la première à la dernière
cellule de cette plage, mais, à la fin , je reviens à la première ?

exemple ma zone va de A1 jusqu'a A10

je cherche à me déplacer de A1, jusqu'a A10, ok, mais, en A10,
est-ce que je peux "boucler" sur A1 lorsque je suis en A10 ?


Merci pour votre aide.

José
Avatar
MichD
Et tu peux essayer ceci... en utilisant Ctrl + Pause ou la touche Esc
pour provoquer la sortie de la boucle...

'------------------------------
Sub test()
Dim GestionErreur As String
Application.EnableCancelKey = xlErrorHandler
On Error GoTo GestionErreur
Dim A As Integer, X As Integer
With Range("A1:A5")
X = .Cells.Count
Do While A <= X
A = A + 1
.Item(A, 1).Select
If A = X Then
A = 0
End If
Loop
End With
Exit Sub
GestionErreur:
MsgBox "Sortie en douce de la boucle"
End Sub
'------------------------------

MichD
--------------------------------------------
Avatar
MichD
Et une dernière variante...

'-------------------------------------
Sub test()

Dim GestionErreur As String, Et_Après As String
Application.EnableCancelKey = xlErrorHandler
On Error GoTo GestionErreur
Dim A As Integer, X As Integer
With Range("A1:A5")
X = .Cells.Count
Do While A <= X
A = A + 1
.Item(A, 1).Select
If A = X Then
A = 0
End If
Loop
End With

Et_Après:

MsgBox "je continue l'exécution de la macro"

Exit Sub
GestionErreur:
MsgBox "Sortie en douce de la boucle"

Resume Et_Après

End Sub
'-------------------------------------


MichD
--------------------------------------------
Avatar
Jacquouille
Haha ...avec tout cela et un bon marteau, on y arrivera.
merci et très bon WE
jacques.



Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"MichD" a écrit dans le message de groupe de discussion :
iukn67$8mt$

Et une dernière variante...

'-------------------------------------
Sub test()

Dim GestionErreur As String, Et_Après As String
Application.EnableCancelKey = xlErrorHandler
On Error GoTo GestionErreur
Dim A As Integer, X As Integer
With Range("A1:A5")
X = .Cells.Count
Do While A <= X
A = A + 1
.Item(A, 1).Select
If A = X Then
A = 0
End If
Loop
End With

Et_Après:

MsgBox "je continue l'exécution de la macro"

Exit Sub
GestionErreur:
MsgBox "Sortie en douce de la boucle"

Resume Et_Après

End Sub
'-------------------------------------


MichD
--------------------------------------------
Avatar
Alfred WALLACE
Merci à tous vos échanges !!!!

José


On 1 juil, 17:02, "Jacquouille" wrote:
Haha ...avec tout cela et un bon marteau, on y arrivera.
merci et très bon WE
jacques.

Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"MichD"  a écrit dans le message de groupe de discussion :
iukn67$

Et une dernière variante...

'-------------------------------------
Sub test()

Dim GestionErreur As String, Et_Après As String
Application.EnableCancelKey = xlErrorHandler
On Error GoTo GestionErreur
Dim A As Integer, X As Integer
With Range("A1:A5")
    X = .Cells.Count
    Do While A <= X
        A = A + 1
        .Item(A, 1).Select
        If A = X Then
             A = 0
        End If
    Loop
End With

Et_Après:

MsgBox "je continue l'exécution de la macro"

Exit Sub
GestionErreur:
MsgBox "Sortie en douce de la boucle"

Resume Et_Après

End Sub
'-------------------------------------

MichD
--------------------------------------------