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

XL 2019 Boucle qui n'incrémente pas

Dim.Reichart

XLDnaute Occasionnel
Bonjour, ou re-bonjour,
(oh non, pas encore lui…)
Hep, j'vous ai entendu au fond!!

Bref, trêve de plaisanterie, cette fois-ci, ce sont les boucles qui me donnent du fil à retordre.
Il s'agit de la macro "Commandbutton1_click", sur la feuille "KPI"(feuille 2).
J'ai plusieurs boucles l'une par dessus l'autre, certaines se passent bien, d'autres pas.
Sur la boucle la plus profonde, que voici:
VB:
Set R = Worksheets(Projet).Cells.Find(Mois, Cells(1, 44), xlValues, xlWhole, xlByColumns, xlNext, False, False)
Rech = R.row +1

For F = Rech + 1 To Range("ar1").End(xlDown).Row Step 1
                    If IsDate(Cells(F, 44)) = True Or Cells(F, 44) = "" Then Exit For
                    Next F
                    F = F - 1
La variable F ne s'incremente pas.
Mais en fait, j'ai l'impression, après avoir mis plusieurs points d'arrêt, que dès que j'ai une opération du type L = J +1, je me retrouve avec L = J.
Lorsque je passe la souris sur mes variables, j'ai par exemple Rech = 3, et F = 3, alors que pour moi, je devrais avoir F = 4 au minimum (ça fait longtemps que je n'ai pas eu de cours de maths, mais tout de même).
J'ai vérifié aussi mes autres variables, qui ont toutes une valeur correcte, le mois s'incrémente, ainsi que l'employé et le projet.

Pour information, Range("ar1").end(xldown).row = 88 (alors que la colonne contient quelques dizaines de lignes, mais ça n'est pas censé bloquer je crois).

Le souci, c'est que puisqu'il ne décale pas d'une ligne par rapport à Rech, qui correspond à la date du planning, il s'arrête de suite puisqu'il recherche une cellule contenant une date, donc, je le fais commencer à la ligne du dessous, s'il le veut bien toutefois.
J'utilise exactement la même boucle dans l'autre macro "Imprimer", et elle fonctionne de ce coté. J'ai relu plusieurs fois, et la syntaxe est rigoureusement identique, seule la variable elle même est nommée différement.
Est-ce que vous avez une explication svp?

Je viens de me relire, je m'apercois que c'est un peu fouillis, donc pour être clair, pourquoi est-ce que lorsque j'écris:
Code:
R = 1
K = R + 1
J'ai K = 1 à la fin?
Merci.
 

Pièces jointes

  • Suivi global.xlsb
    222.7 KB · Affichages: 6

Ikito

XLDnaute Occasionnel
Bonjour,

VB:
Set R = Worksheets(Projet).Cells.Find(Mois, Cells(1, 44), xlValues, xlWhole, xlByColumns, xlNext, False, False)
Rech = R.row +1

For F = Rech + 1 To Range("ar1").End(xlDown).Row Step 1
                    If IsDate(Cells(F, 44)) = True Or Cells(F, 44) = "" Then Exit For
                    Next F
                    F = F - 1

Next F (Avec ton Step 1) signifie : F = F + 1
Si tu mets F = F - 1 en dessous ça s'annule un peu...

Si tu veux décrémenter, alors :
VB:
Set R = Worksheets(Projet).Cells.Find(Mois, Cells(1, 44), xlValues, xlWhole, xlByColumns, xlNext, False, False)
Rech = R.row +1

For F = Rech + 1 To Range("ar1").End(xlDown).Row Step -1
                    If IsDate(Cells(F, 44)) = True Or Cells(F, 44) = "" Then Exit For
                    Next F
 

Dim.Reichart

XLDnaute Occasionnel
Quand je met next f, il est censé retourner a la ligne For non?
La ligne f= f-1 n'est censée etre lue que s'il trouve une date en cells(f,44).

En fait, je le décremente après la boucle parce que sinon, je vais extraire aussi la ligne du planning suivant.
Je viens d'essayer en retirant cette ligne et en mettant le -1 dans le range à extraire, et même si l'opération est bonne cette fois, il ne copie toujours qu'une seule ligne.
 
Dernière édition:

Discussions similaires

Réponses
12
Affichages
519
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…