OVH Cloud OVH Cloud

Loop Until - boucles intégrées

8 réponses
Avatar
vswildcat
Bonjour,

J'y suis presque et je commence à enrager...

J'ai deux boucles l'une dans l'autre qui tournent très bien, tellement bien
que je n'arrive pas à les arrêter où je veux.

Il y a plusieurs tableaux et sous tableau dans la même zone, donc difficile
de faire des XlEnd. Par contre, la dernière cellule que je veux "colorier"
(ou non) sera toujours AK4 (colonne AK évidement). J'essai donc d'arrêter les
boucle lorsqu'elles arrivent sur AL4 (celulle suivante), mais je n'y arrive
pas...

Voici ce que j'ai fais :

Do Until ActiveCell.Address = "$AL$4"

Do While ActiveCell.Offset(-1, 0) = ""
ActiveCell.Interior.ColorIndex = 16

ActiveCell.Select
Selection.Copy
ActiveCell.Range("A1:A129").Select
ActiveSheet.Paste

ActiveCell.Offset(0, 1).Activate

Do While ActiveCell.Offset(-1, 0) <> ""
ActiveCell.Offset(1, 0).Interior.ColorIndex = 14

For v = 1 To 129 Step 2
ActiveCell.Offset(v, 0).Interior.ColorIndex = 14
Next v

ActiveCell.Offset(0, 1).Activate

Loop
Loop

Loop

J'ai l'impression que mon Do Until ne sert à rien, en tout cas, les cases
continuent à se remplir sur la droite du tableau, bien après la colonne AK...

Merci à vous pour votre aide,

Wildcat

8 réponses

Avatar
Daniel
Bonjour.
Quelle est la cellule active au début de la macro ?
Cordialement.
Daniel
"vswildcat" a écrit dans le message de
news:
Bonjour,

J'y suis presque et je commence à enrager...

J'ai deux boucles l'une dans l'autre qui tournent très bien, tellement
bien
que je n'arrive pas à les arrêter où je veux.

Il y a plusieurs tableaux et sous tableau dans la même zone, donc
difficile
de faire des XlEnd. Par contre, la dernière cellule que je veux "colorier"
(ou non) sera toujours AK4 (colonne AK évidement). J'essai donc d'arrêter
les
boucle lorsqu'elles arrivent sur AL4 (celulle suivante), mais je n'y
arrive
pas...

Voici ce que j'ai fais :

Do Until ActiveCell.Address = "$AL$4"

Do While ActiveCell.Offset(-1, 0) = ""
ActiveCell.Interior.ColorIndex = 16

ActiveCell.Select
Selection.Copy
ActiveCell.Range("A1:A129").Select
ActiveSheet.Paste

ActiveCell.Offset(0, 1).Activate

Do While ActiveCell.Offset(-1, 0) <> ""
ActiveCell.Offset(1, 0).Interior.ColorIndex = 14

For v = 1 To 129 Step 2
ActiveCell.Offset(v, 0).Interior.ColorIndex = 14
Next v

ActiveCell.Offset(0, 1).Activate

Loop
Loop

Loop

J'ai l'impression que mon Do Until ne sert à rien, en tout cas, les cases
continuent à se remplir sur la droite du tableau, bien après la colonne
AK...

Merci à vous pour votre aide,

Wildcat


Avatar
vswildcat
Je démarre en F4

En fait la ligne 4 est la ligne sur laquelle j'ai les jours "ouvrables",
donc la cellule en (-1,0) est "non vide", et la cellule (-1,0) est vide
lorsque c'est un week end ou un jour férié.

Cdt,

Virginie


Bonjour.
Quelle est la cellule active au début de la macro ?
Cordialement.
Daniel
"vswildcat" a écrit dans le message de
news:
Bonjour,

J'y suis presque et je commence à enrager...

J'ai deux boucles l'une dans l'autre qui tournent très bien, tellement
bien
que je n'arrive pas à les arrêter où je veux.

Il y a plusieurs tableaux et sous tableau dans la même zone, donc
difficile
de faire des XlEnd. Par contre, la dernière cellule que je veux "colorier"
(ou non) sera toujours AK4 (colonne AK évidement). J'essai donc d'arrêter
les
boucle lorsqu'elles arrivent sur AL4 (celulle suivante), mais je n'y
arrive
pas...

Voici ce que j'ai fais :

Do Until ActiveCell.Address = "$AL$4"

Do While ActiveCell.Offset(-1, 0) = ""
ActiveCell.Interior.ColorIndex = 16

ActiveCell.Select
Selection.Copy
ActiveCell.Range("A1:A129").Select
ActiveSheet.Paste

ActiveCell.Offset(0, 1).Activate

Do While ActiveCell.Offset(-1, 0) <> ""
ActiveCell.Offset(1, 0).Interior.ColorIndex = 14

For v = 1 To 129 Step 2
ActiveCell.Offset(v, 0).Interior.ColorIndex = 14
Next v

ActiveCell.Offset(0, 1).Activate

Loop
Loop

Loop

J'ai l'impression que mon Do Until ne sert à rien, en tout cas, les cases
continuent à se remplir sur la droite du tableau, bien après la colonne
AK...

Merci à vous pour votre aide,

Wildcat







Avatar
Daniel
Bonjour.
Sans avoir testé ton code, tu as deux boucles à l'intérieur de ta boucle do
until...Dans chacune de ces deux boucles, on retrouve l'instruction :
ActiveCell.Offset(0, 1).Activate
N'est-il pas envisageable que la cellule AL4 soit passée dans ces boucles ?
Essaie de remplacer :
Do While ActiveCell.Offset(-1, 0) = ""
par :
Do While ActiveCell.Offset(-1, 0) = "" and ActiveCell.Address <> "$AL$4"
dans les deux boucles internes.
Cordialement.
Daniel
"vswildcat" a écrit dans le message de
news:
Je démarre en F4

En fait la ligne 4 est la ligne sur laquelle j'ai les jours "ouvrables",
donc la cellule en (-1,0) est "non vide", et la cellule (-1,0) est vide
lorsque c'est un week end ou un jour férié.

Cdt,

Virginie


Bonjour.
Quelle est la cellule active au début de la macro ?
Cordialement.
Daniel
"vswildcat" a écrit dans le message
de
news:
Bonjour,

J'y suis presque et je commence à enrager...

J'ai deux boucles l'une dans l'autre qui tournent très bien, tellement
bien
que je n'arrive pas à les arrêter où je veux.

Il y a plusieurs tableaux et sous tableau dans la même zone, donc
difficile
de faire des XlEnd. Par contre, la dernière cellule que je veux
"colorier"
(ou non) sera toujours AK4 (colonne AK évidement). J'essai donc
d'arrêter
les
boucle lorsqu'elles arrivent sur AL4 (celulle suivante), mais je n'y
arrive
pas...

Voici ce que j'ai fais :

Do Until ActiveCell.Address = "$AL$4"

Do While ActiveCell.Offset(-1, 0) = ""
ActiveCell.Interior.ColorIndex = 16

ActiveCell.Select
Selection.Copy
ActiveCell.Range("A1:A129").Select
ActiveSheet.Paste

ActiveCell.Offset(0, 1).Activate

Do While ActiveCell.Offset(-1, 0) <> ""
ActiveCell.Offset(1, 0).Interior.ColorIndex = 14

For v = 1 To 129 Step 2
ActiveCell.Offset(v, 0).Interior.ColorIndex = 14
Next v

ActiveCell.Offset(0, 1).Activate

Loop
Loop

Loop

J'ai l'impression que mon Do Until ne sert à rien, en tout cas, les
cases
continuent à se remplir sur la droite du tableau, bien après la colonne
AK...

Merci à vous pour votre aide,

Wildcat









Avatar
vswildcat
Dommage... L'idée était bonne, mais la macro ne s'arrête toujours pas et
continue de "colorier" sur la droite...

J'ai essayé d'enfermer les boucle avec :

Dim ZONEA as Range
For Each ZONEA in Range ("F4:AK4")
Puis les boucles...
Next ZONEA

Mais idem, la macro ne s'arrête pas en sortant de la zone...

As-tu une autre idée ?

Wildcat


Bonjour.
Sans avoir testé ton code, tu as deux boucles à l'intérieur de ta boucle do
until...Dans chacune de ces deux boucles, on retrouve l'instruction :
ActiveCell.Offset(0, 1).Activate
N'est-il pas envisageable que la cellule AL4 soit passée dans ces boucles ?
Essaie de remplacer :
Do While ActiveCell.Offset(-1, 0) = ""
par :
Do While ActiveCell.Offset(-1, 0) = "" and ActiveCell.Address <> "$AL$4"
dans les deux boucles internes.
Cordialement.
Daniel
"vswildcat" a écrit dans le message de
news:
Je démarre en F4

En fait la ligne 4 est la ligne sur laquelle j'ai les jours "ouvrables",
donc la cellule en (-1,0) est "non vide", et la cellule (-1,0) est vide
lorsque c'est un week end ou un jour férié.

Cdt,

Virginie


Bonjour.
Quelle est la cellule active au début de la macro ?
Cordialement.
Daniel
"vswildcat" a écrit dans le message
de
news:
Bonjour,

J'y suis presque et je commence à enrager...

J'ai deux boucles l'une dans l'autre qui tournent très bien, tellement
bien
que je n'arrive pas à les arrêter où je veux.

Il y a plusieurs tableaux et sous tableau dans la même zone, donc
difficile
de faire des XlEnd. Par contre, la dernière cellule que je veux
"colorier"
(ou non) sera toujours AK4 (colonne AK évidement). J'essai donc
d'arrêter
les
boucle lorsqu'elles arrivent sur AL4 (celulle suivante), mais je n'y
arrive
pas...

Voici ce que j'ai fais :

Do Until ActiveCell.Address = "$AL$4"

Do While ActiveCell.Offset(-1, 0) = ""
ActiveCell.Interior.ColorIndex = 16

ActiveCell.Select
Selection.Copy
ActiveCell.Range("A1:A129").Select
ActiveSheet.Paste

ActiveCell.Offset(0, 1).Activate

Do While ActiveCell.Offset(-1, 0) <> ""
ActiveCell.Offset(1, 0).Interior.ColorIndex = 14

For v = 1 To 129 Step 2
ActiveCell.Offset(v, 0).Interior.ColorIndex = 14
Next v

ActiveCell.Offset(0, 1).Activate

Loop
Loop

Loop

J'ai l'impression que mon Do Until ne sert à rien, en tout cas, les
cases
continuent à se remplir sur la droite du tableau, bien après la colonne
AK...

Merci à vous pour votre aide,

Wildcat














Avatar
vswildcat
J'ai peut-être trouvé : j'ai fais la macro pas à pas et au milieu des boucles
il y a un Private Sub (je ne suis pas à l'origine du fichier, j'ai récupéré
ce fichier que j'adapte) :

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
End Sub

Elle est "lue" à chaque fois que la macro passe sur :

ActiveCell.Range("A1:A127").Select (de la première boucle)
et ActiveCell.Offset(0, 1).Activate (sur les deux boucles)

Je ne connais pas le système Target, mais penses-tu que ça peut venir de là ?

Et si oui, comment faire pour qu'elle ne soit plus lue ? Pour l'instant je
ne voudrais pas la supprimée, parcequ'elle sert probablement ailleurs, je
n'ai pas fini de décortiquer les formules et macros de ce fichier...

Wildcat


Bonjour.
Sans avoir testé ton code, tu as deux boucles à l'intérieur de ta boucle do
until...Dans chacune de ces deux boucles, on retrouve l'instruction :
ActiveCell.Offset(0, 1).Activate
N'est-il pas envisageable que la cellule AL4 soit passée dans ces boucles ?
Essaie de remplacer :
Do While ActiveCell.Offset(-1, 0) = ""
par :
Do While ActiveCell.Offset(-1, 0) = "" and ActiveCell.Address <> "$AL$4"
dans les deux boucles internes.
Cordialement.
Daniel
"vswildcat" a écrit dans le message de
news:
Je démarre en F4

En fait la ligne 4 est la ligne sur laquelle j'ai les jours "ouvrables",
donc la cellule en (-1,0) est "non vide", et la cellule (-1,0) est vide
lorsque c'est un week end ou un jour férié.

Cdt,

Virginie


Bonjour.
Quelle est la cellule active au début de la macro ?
Cordialement.
Daniel
"vswildcat" a écrit dans le message
de
news:
Bonjour,

J'y suis presque et je commence à enrager...

J'ai deux boucles l'une dans l'autre qui tournent très bien, tellement
bien
que je n'arrive pas à les arrêter où je veux.

Il y a plusieurs tableaux et sous tableau dans la même zone, donc
difficile
de faire des XlEnd. Par contre, la dernière cellule que je veux
"colorier"
(ou non) sera toujours AK4 (colonne AK évidement). J'essai donc
d'arrêter
les
boucle lorsqu'elles arrivent sur AL4 (celulle suivante), mais je n'y
arrive
pas...

Voici ce que j'ai fais :

Do Until ActiveCell.Address = "$AL$4"

Do While ActiveCell.Offset(-1, 0) = ""
ActiveCell.Interior.ColorIndex = 16

ActiveCell.Select
Selection.Copy
ActiveCell.Range("A1:A129").Select
ActiveSheet.Paste

ActiveCell.Offset(0, 1).Activate

Do While ActiveCell.Offset(-1, 0) <> ""
ActiveCell.Offset(1, 0).Interior.ColorIndex = 14

For v = 1 To 129 Step 2
ActiveCell.Offset(v, 0).Interior.ColorIndex = 14
Next v

ActiveCell.Offset(0, 1).Activate

Loop
Loop

Loop

J'ai l'impression que mon Do Until ne sert à rien, en tout cas, les
cases
continuent à se remplir sur la droite du tableau, bien après la colonne
AK...

Merci à vous pour votre aide,

Wildcat














Avatar
vswildcat
MA FAUTE !!! J'ai mis ActiveCell.Address <> "$AL$4" au mauvaise endroit, du
coup, ça n'était lu que pour la deuxième boucle, et pas la première...

MERCI Daniel. Ca fontionne maintentn, elle s'arrête !!

Puis-je abuser un peut : cette mise à jour devra ce faire sur 12 feuilles
(12 mois de l'année). Je vais faire un CommandButton, mais je voudrais que le
"coloriage" et la mise à jour d'autres données ne soient pas visibles pour
l'utilisateur, c'est à dire qu'on ne vois pas à l'écran la macro passer de
ligne en ligne, de colonne en colonne et de page en page...

Y a-t-il un codage simple, ou faut-il que je fasse la macro à partir de la
celulle du CommandButton, en calculant le déplacement par rapport à cette
ActiveCell d'origine ?

Je ne sais pas si c'est clair...


Bonjour.
Sans avoir testé ton code, tu as deux boucles à l'intérieur de ta boucle do
until...Dans chacune de ces deux boucles, on retrouve l'instruction :
ActiveCell.Offset(0, 1).Activate
N'est-il pas envisageable que la cellule AL4 soit passée dans ces boucles ?
Essaie de remplacer :
Do While ActiveCell.Offset(-1, 0) = ""
par :
Do While ActiveCell.Offset(-1, 0) = "" and ActiveCell.Address <> "$AL$4"
dans les deux boucles internes.
Cordialement.
Daniel
"vswildcat" a écrit dans le message de
news:
Je démarre en F4

En fait la ligne 4 est la ligne sur laquelle j'ai les jours "ouvrables",
donc la cellule en (-1,0) est "non vide", et la cellule (-1,0) est vide
lorsque c'est un week end ou un jour férié.

Cdt,

Virginie


Bonjour.
Quelle est la cellule active au début de la macro ?
Cordialement.
Daniel
"vswildcat" a écrit dans le message
de
news:
Bonjour,

J'y suis presque et je commence à enrager...

J'ai deux boucles l'une dans l'autre qui tournent très bien, tellement
bien
que je n'arrive pas à les arrêter où je veux.

Il y a plusieurs tableaux et sous tableau dans la même zone, donc
difficile
de faire des XlEnd. Par contre, la dernière cellule que je veux
"colorier"
(ou non) sera toujours AK4 (colonne AK évidement). J'essai donc
d'arrêter
les
boucle lorsqu'elles arrivent sur AL4 (celulle suivante), mais je n'y
arrive
pas...

Voici ce que j'ai fais :

Do Until ActiveCell.Address = "$AL$4"

Do While ActiveCell.Offset(-1, 0) = ""
ActiveCell.Interior.ColorIndex = 16

ActiveCell.Select
Selection.Copy
ActiveCell.Range("A1:A129").Select
ActiveSheet.Paste

ActiveCell.Offset(0, 1).Activate

Do While ActiveCell.Offset(-1, 0) <> ""
ActiveCell.Offset(1, 0).Interior.ColorIndex = 14

For v = 1 To 129 Step 2
ActiveCell.Offset(v, 0).Interior.ColorIndex = 14
Next v

ActiveCell.Offset(0, 1).Activate

Loop
Loop

Loop

J'ai l'impression que mon Do Until ne sert à rien, en tout cas, les
cases
continuent à se remplir sur la droite du tableau, bien après la colonne
AK...

Merci à vous pour votre aide,

Wildcat














Avatar
Daniel
Bonsoir.
Je ne suis pas sûr d'avoir compris.
Met au début de ta macro :
Application.ScreenUpdatingúlse
et en fin de macro :
Application.ScreenUpdating=True
Daniel
"vswildcat" a écrit dans le message de
news:
MA FAUTE !!! J'ai mis ActiveCell.Address <> "$AL$4" au mauvaise endroit,
du
coup, ça n'était lu que pour la deuxième boucle, et pas la première...

MERCI Daniel. Ca fontionne maintentn, elle s'arrête !!

Puis-je abuser un peut : cette mise à jour devra ce faire sur 12 feuilles
(12 mois de l'année). Je vais faire un CommandButton, mais je voudrais que
le
"coloriage" et la mise à jour d'autres données ne soient pas visibles pour
l'utilisateur, c'est à dire qu'on ne vois pas à l'écran la macro passer de
ligne en ligne, de colonne en colonne et de page en page...

Y a-t-il un codage simple, ou faut-il que je fasse la macro à partir de la
celulle du CommandButton, en calculant le déplacement par rapport à cette
ActiveCell d'origine ?

Je ne sais pas si c'est clair...


Bonjour.
Sans avoir testé ton code, tu as deux boucles à l'intérieur de ta boucle
do
until...Dans chacune de ces deux boucles, on retrouve l'instruction :
ActiveCell.Offset(0, 1).Activate
N'est-il pas envisageable que la cellule AL4 soit passée dans ces boucles
?
Essaie de remplacer :
Do While ActiveCell.Offset(-1, 0) = ""
par :
Do While ActiveCell.Offset(-1, 0) = "" and ActiveCell.Address <> "$AL$4"
dans les deux boucles internes.
Cordialement.
Daniel
"vswildcat" a écrit dans le message
de
news:
Je démarre en F4

En fait la ligne 4 est la ligne sur laquelle j'ai les jours
"ouvrables",
donc la cellule en (-1,0) est "non vide", et la cellule (-1,0) est
vide
lorsque c'est un week end ou un jour férié.

Cdt,

Virginie


Bonjour.
Quelle est la cellule active au début de la macro ?
Cordialement.
Daniel
"vswildcat" a écrit dans le
message
de
news:
Bonjour,

J'y suis presque et je commence à enrager...

J'ai deux boucles l'une dans l'autre qui tournent très bien,
tellement
bien
que je n'arrive pas à les arrêter où je veux.

Il y a plusieurs tableaux et sous tableau dans la même zone, donc
difficile
de faire des XlEnd. Par contre, la dernière cellule que je veux
"colorier"
(ou non) sera toujours AK4 (colonne AK évidement). J'essai donc
d'arrêter
les
boucle lorsqu'elles arrivent sur AL4 (celulle suivante), mais je n'y
arrive
pas...

Voici ce que j'ai fais :

Do Until ActiveCell.Address = "$AL$4"

Do While ActiveCell.Offset(-1, 0) = ""
ActiveCell.Interior.ColorIndex = 16

ActiveCell.Select
Selection.Copy
ActiveCell.Range("A1:A129").Select
ActiveSheet.Paste

ActiveCell.Offset(0, 1).Activate

Do While ActiveCell.Offset(-1, 0) <> ""
ActiveCell.Offset(1, 0).Interior.ColorIndex = 14

For v = 1 To 129 Step 2
ActiveCell.Offset(v, 0).Interior.ColorIndex = 14
Next v

ActiveCell.Offset(0, 1).Activate

Loop
Loop

Loop

J'ai l'impression que mon Do Until ne sert à rien, en tout cas, les
cases
continuent à se remplir sur la droite du tableau, bien après la
colonne
AK...

Merci à vous pour votre aide,

Wildcat
















Avatar
vswildcat
IMPECCABLE !!

Merci Daniel.


Bonsoir.
Je ne suis pas sûr d'avoir compris.
Met au début de ta macro :
Application.ScreenUpdatingúlse
et en fin de macro :
Application.ScreenUpdating=True
Daniel
"vswildcat" a écrit dans le message de
news:
MA FAUTE !!! J'ai mis ActiveCell.Address <> "$AL$4" au mauvaise endroit,
du
coup, ça n'était lu que pour la deuxième boucle, et pas la première...

MERCI Daniel. Ca fontionne maintentn, elle s'arrête !!

Puis-je abuser un peut : cette mise à jour devra ce faire sur 12 feuilles
(12 mois de l'année). Je vais faire un CommandButton, mais je voudrais que
le
"coloriage" et la mise à jour d'autres données ne soient pas visibles pour
l'utilisateur, c'est à dire qu'on ne vois pas à l'écran la macro passer de
ligne en ligne, de colonne en colonne et de page en page...

Y a-t-il un codage simple, ou faut-il que je fasse la macro à partir de la
celulle du CommandButton, en calculant le déplacement par rapport à cette
ActiveCell d'origine ?

Je ne sais pas si c'est clair...


Bonjour.
Sans avoir testé ton code, tu as deux boucles à l'intérieur de ta boucle
do
until...Dans chacune de ces deux boucles, on retrouve l'instruction :
ActiveCell.Offset(0, 1).Activate
N'est-il pas envisageable que la cellule AL4 soit passée dans ces boucles
?
Essaie de remplacer :
Do While ActiveCell.Offset(-1, 0) = ""
par :
Do While ActiveCell.Offset(-1, 0) = "" and ActiveCell.Address <> "$AL$4"
dans les deux boucles internes.
Cordialement.
Daniel
"vswildcat" a écrit dans le message
de
news:
Je démarre en F4

En fait la ligne 4 est la ligne sur laquelle j'ai les jours
"ouvrables",
donc la cellule en (-1,0) est "non vide", et la cellule (-1,0) est
vide
lorsque c'est un week end ou un jour férié.

Cdt,

Virginie


Bonjour.
Quelle est la cellule active au début de la macro ?
Cordialement.
Daniel
"vswildcat" a écrit dans le
message
de
news:
Bonjour,

J'y suis presque et je commence à enrager...

J'ai deux boucles l'une dans l'autre qui tournent très bien,
tellement
bien
que je n'arrive pas à les arrêter où je veux.

Il y a plusieurs tableaux et sous tableau dans la même zone, donc
difficile
de faire des XlEnd. Par contre, la dernière cellule que je veux
"colorier"
(ou non) sera toujours AK4 (colonne AK évidement). J'essai donc
d'arrêter
les
boucle lorsqu'elles arrivent sur AL4 (celulle suivante), mais je n'y
arrive
pas...

Voici ce que j'ai fais :

Do Until ActiveCell.Address = "$AL$4"

Do While ActiveCell.Offset(-1, 0) = ""
ActiveCell.Interior.ColorIndex = 16

ActiveCell.Select
Selection.Copy
ActiveCell.Range("A1:A129").Select
ActiveSheet.Paste

ActiveCell.Offset(0, 1).Activate

Do While ActiveCell.Offset(-1, 0) <> ""
ActiveCell.Offset(1, 0).Interior.ColorIndex = 14

For v = 1 To 129 Step 2
ActiveCell.Offset(v, 0).Interior.ColorIndex = 14
Next v

ActiveCell.Offset(0, 1).Activate

Loop
Loop

Loop

J'ai l'impression que mon Do Until ne sert à rien, en tout cas, les
cases
continuent à se remplir sur la droite du tableau, bien après la
colonne
AK...

Merci à vous pour votre aide,

Wildcat