Revenir au début d'une boucle For
Bonjour cher forum,
Une fois de plus je me permets de vous solliciter, vous qui m'aidez tant :)
Je souhaite effectuer les actions suivantes :
1-On demande à l'utilisateur d'entrer le nom d'un dossier
2-Une fois la ligne où le nom du dossier est écrit, on lit les dates successives dans un tableau, grâce à une boucle For. Mais attention, c'est là que ça se corse,! Certaines cellules sont vides, et je souhaite passer directement à la colonne suivante si la case est vide.
Néanmoins, seule l'indication "Next" me permet de passer à la colonne suivante, et j'obtiens alors le message d'erreur suivant :"Next sans boucle For"...
Voici mon code :
Sub DecalageColonnes() 'Pour le bouton Valider
Dim i%, j%
Dim Arr, EchR
Dim Doss$
Arr = [TabDonnees].Value
Application.ScreenUpdating = False
Sheets("depart").Activate
Doss = InputBox("Indiquez le nom du dossier choisi (dire ici Dossier3)")
For i = 1 To UBound(Arr) 'On parcourt les lignes du tableau
If Arr(i, 1) = Doss Then 'On repère le nom du dossier car c'est dans cette ligne uniquement que l'on va travailler
For j = 2 To UBound(Arr, 2) 'les échéances démarrent à la colonne 2
EchR = Arr(i, j) 'on reste à la ligne i, qui correspond au dossier ; colonne j
If EchR = "00:00:00" Then 'Si la case est vide, on décale d'une colonne et on revient au debut de la boucle, et ainsi de suite
Next j <--L'ERREUR EST ICI
End If
Cells.Interior.ColorIndex = 3 'Sinon on colorie en rouge par exemple
Next j
End If
Next i
End SubJ'ai essayé beaucoup de possibilités : goTo Suite avec une étiquette de suite du code mais ça ne fonctionne pas car dans mon code perso, il y a beaucoup de boucles imbriquées. Par ailleurs, GoTo n'est pas très rigoureux ..
J'ai essayé aussi avec j=j+1 mais ça ne fonctionne pas non plus ..
Auriez-vous une idée s'il vous plaît ?
J'ai indiqué dans le fichier joint un onglet "depart" pour dire d'où on part, et "arrivee" pour dire ce qu'on voudrait à la fin. (J'ai indiqué à la fin des cases coloriées en rouge. Dans mon code perso, je ne souhaite pas faire ça, mais c'est juste pour l'exemple).
merci d'avance !
Bonjour,
Si j'ai bien compris la demande ...
Un essai ...
Option Explicit
Sub DecalageColonnes() 'Pour le bouton Valider
Dim i%, j%
Dim Arr, EchR
Dim Doss$
Application.ScreenUpdating = False
Arr = [TabDonnees].Value
Sheets("depart").Activate
Doss = InputBox("Indiquez le nom du dossier choisi (dire ici Dossier3)")
For i = 1 To UBound(Arr) 'On parcourt les lignes du tableau
If Arr(i, 1) = Doss Then 'On repère le nom du dossier car c'est dans cette ligne uniquement que l'on va travailler
For j = 2 To UBound(Arr, 2) 'les échéances démarrent à la colonne 2
If [TabDonnees].Cells(i, j) = "" Then
[TabDonnees].Cells(i, j).Interior.ColorIndex = 3 'Sinon on colorie en rouge par exemple
Else
EchR = Arr(i, j) 'on reste à la ligne i, qui correspond au dossier ; colonne j
End If
Next j
End If
Next i
End Subric
Bonjour Ric!
Merci beaucoup pour votre réponse ! C'est quasiment ça (j'ai juste inversé le contenu des 2 boucles, mais c'est un détail).
Mille mercis ! vous me dépannez drôlement !
Excellente journée !!