pour toutes les valeurs situées dans la colonne B, à partir de B2, pour
chacune valeur qui ne correspond pas au nom d'une feuille existante, alors
je crée une nouvelle feuille dont le nom sera la valeur en question. Les
valeurs ont des noms compatibles avec ce qu'Excel autorise pour nommer les
feuilles. Donc pas de problème de ce côté là.
Excel crée la première feuille manquante et quand arrive le tour de la
deuxième feuille manquante, j'ai droit à un laconique
Erreur 9 - Indice en dehors de la plage sur la ligne
Sheets(LA_VALEUR).Select
Si je relance la macro, il crée cette feuille et bloque à nouveau sur la
suivante.
Donc la solution est de relancer la macro après chaque création. Mais
j'aimerais quand même comprendre pourquoi il s'arrête à la deuxième création
de feuille, malgré le "On error goto 5" qui devrait éviter toute
interruption.
Merci d'avance à qui voudra bien éclairer ma lanterne.
Jac
Sub CREER_FEUILLES()
Sheets(1).Select
' si la feuille n'existe pas on saute à la ligne 5 : nouvelle feuille
On Error GoTo 5
For Y = 2 To [B65536].End(xlUp).Row
LA_VALEUR = Cells(Y, 2).Value
Sheets(LA_VALEUR).Select
' si la feuille existe alors retour à la feuille 1 pour la suite
GoTo 9
5 'création d'une nouvelle feuille
ActiveWorkbook.Worksheets.Add after:=Sheets(Sheets.Count)
ActiveSheet.Name = LA_VALEUR
9 Sheets(1).Select
Next Y
End Sub
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
tissot.emmanuel
Bonjour,
Lorsque ta premiere erreur se produit, tu rentre dans un bloc de code destiné à traiter cette erreur. Si une autre erreur se produit pendant ce traitement c'est la cata, et c'est ce qui se passe quand tu insere ta gestion d'erreur dans une boucle avec des instructions Goto.
Essaye donc ceci:
Sub CREER_FEUILLES2() Sheets(1).Select On Error GoTo ErrH: For Y = 2 To [B65536].End(xlUp).Row LA_Valeur = Cells(Y, 2).Value Sheets(LA_Valeur).Select Next Exit Sub ErrH: ActiveWorkbook.Worksheets.Add after:=Sheets(Sheets.Count) ActiveSheet.Name = LA_Valeur Sheets(1).Select Resume Next End Sub
Cordialement,
Manu/
"Jac" a écrit dans le message de news:
Bonjour à tous,
pour toutes les valeurs situées dans la colonne B, à partir de B2, pour chacune valeur qui ne correspond pas au nom d'une feuille existante, alors je crée une nouvelle feuille dont le nom sera la valeur en question. Les valeurs ont des noms compatibles avec ce qu'Excel autorise pour nommer les feuilles. Donc pas de problème de ce côté là.
Excel crée la première feuille manquante et quand arrive le tour de la deuxième feuille manquante, j'ai droit à un laconique Erreur 9 - Indice en dehors de la plage sur la ligne Sheets(LA_VALEUR).Select
Si je relance la macro, il crée cette feuille et bloque à nouveau sur la suivante. Donc la solution est de relancer la macro après chaque création. Mais j'aimerais quand même comprendre pourquoi il s'arrête à la deuxième création de feuille, malgré le "On error goto 5" qui devrait éviter toute interruption.
Merci d'avance à qui voudra bien éclairer ma lanterne.
Jac
Sub CREER_FEUILLES() Sheets(1).Select ' si la feuille n'existe pas on saute à la ligne 5 : nouvelle feuille On Error GoTo 5 For Y = 2 To [B65536].End(xlUp).Row LA_VALEUR = Cells(Y, 2).Value Sheets(LA_VALEUR).Select ' si la feuille existe alors retour à la feuille 1 pour la suite GoTo 9 5 'création d'une nouvelle feuille ActiveWorkbook.Worksheets.Add after:=Sheets(Sheets.Count) ActiveSheet.Name = LA_VALEUR 9 Sheets(1).Select Next Y End Sub
Bonjour,
Lorsque ta premiere erreur se produit, tu rentre dans un bloc de code
destiné à traiter cette erreur. Si une autre erreur se produit pendant ce
traitement c'est la cata, et c'est ce qui se passe quand tu insere ta
gestion d'erreur dans une boucle avec des instructions Goto.
Essaye donc ceci:
Sub CREER_FEUILLES2()
Sheets(1).Select
On Error GoTo ErrH:
For Y = 2 To [B65536].End(xlUp).Row
LA_Valeur = Cells(Y, 2).Value
Sheets(LA_Valeur).Select
Next
Exit Sub
ErrH:
ActiveWorkbook.Worksheets.Add after:=Sheets(Sheets.Count)
ActiveSheet.Name = LA_Valeur
Sheets(1).Select
Resume Next
End Sub
Cordialement,
Manu/
"Jac" <Jsansp@mfra.net> a écrit dans le message de news:
OHqRtx6NIHA.5140@TK2MSFTNGP05.phx.gbl...
Bonjour à tous,
pour toutes les valeurs situées dans la colonne B, à partir de B2, pour
chacune valeur qui ne correspond pas au nom d'une feuille existante, alors
je crée une nouvelle feuille dont le nom sera la valeur en question. Les
valeurs ont des noms compatibles avec ce qu'Excel autorise pour nommer les
feuilles. Donc pas de problème de ce côté là.
Excel crée la première feuille manquante et quand arrive le tour de la
deuxième feuille manquante, j'ai droit à un laconique
Erreur 9 - Indice en dehors de la plage sur la ligne
Sheets(LA_VALEUR).Select
Si je relance la macro, il crée cette feuille et bloque à nouveau sur la
suivante.
Donc la solution est de relancer la macro après chaque création. Mais
j'aimerais quand même comprendre pourquoi il s'arrête à la deuxième
création de feuille, malgré le "On error goto 5" qui devrait éviter toute
interruption.
Merci d'avance à qui voudra bien éclairer ma lanterne.
Jac
Sub CREER_FEUILLES()
Sheets(1).Select
' si la feuille n'existe pas on saute à la ligne 5 : nouvelle feuille
On Error GoTo 5
For Y = 2 To [B65536].End(xlUp).Row
LA_VALEUR = Cells(Y, 2).Value
Sheets(LA_VALEUR).Select
' si la feuille existe alors retour à la feuille 1 pour la suite
GoTo 9
5 'création d'une nouvelle feuille
ActiveWorkbook.Worksheets.Add after:=Sheets(Sheets.Count)
ActiveSheet.Name = LA_VALEUR
9 Sheets(1).Select
Next Y
End Sub
Lorsque ta premiere erreur se produit, tu rentre dans un bloc de code destiné à traiter cette erreur. Si une autre erreur se produit pendant ce traitement c'est la cata, et c'est ce qui se passe quand tu insere ta gestion d'erreur dans une boucle avec des instructions Goto.
Essaye donc ceci:
Sub CREER_FEUILLES2() Sheets(1).Select On Error GoTo ErrH: For Y = 2 To [B65536].End(xlUp).Row LA_Valeur = Cells(Y, 2).Value Sheets(LA_Valeur).Select Next Exit Sub ErrH: ActiveWorkbook.Worksheets.Add after:=Sheets(Sheets.Count) ActiveSheet.Name = LA_Valeur Sheets(1).Select Resume Next End Sub
Cordialement,
Manu/
"Jac" a écrit dans le message de news:
Bonjour à tous,
pour toutes les valeurs situées dans la colonne B, à partir de B2, pour chacune valeur qui ne correspond pas au nom d'une feuille existante, alors je crée une nouvelle feuille dont le nom sera la valeur en question. Les valeurs ont des noms compatibles avec ce qu'Excel autorise pour nommer les feuilles. Donc pas de problème de ce côté là.
Excel crée la première feuille manquante et quand arrive le tour de la deuxième feuille manquante, j'ai droit à un laconique Erreur 9 - Indice en dehors de la plage sur la ligne Sheets(LA_VALEUR).Select
Si je relance la macro, il crée cette feuille et bloque à nouveau sur la suivante. Donc la solution est de relancer la macro après chaque création. Mais j'aimerais quand même comprendre pourquoi il s'arrête à la deuxième création de feuille, malgré le "On error goto 5" qui devrait éviter toute interruption.
Merci d'avance à qui voudra bien éclairer ma lanterne.
Jac
Sub CREER_FEUILLES() Sheets(1).Select ' si la feuille n'existe pas on saute à la ligne 5 : nouvelle feuille On Error GoTo 5 For Y = 2 To [B65536].End(xlUp).Row LA_VALEUR = Cells(Y, 2).Value Sheets(LA_VALEUR).Select ' si la feuille existe alors retour à la feuille 1 pour la suite GoTo 9 5 'création d'une nouvelle feuille ActiveWorkbook.Worksheets.Add after:=Sheets(Sheets.Count) ActiveSheet.Name = LA_VALEUR 9 Sheets(1).Select Next Y End Sub
Jac
Bonjour Emmanuel,
parfait...
Juste j'ai dû déplacer Sheets(1).Select entre Sheets(LA_Valeur).Select et Next, sinon le traitement bouclait dans la feuille en cours et non dans la feuille de données.
Donc si je résume, il faut toujours mettre un traitement d'erreur en dehors d'une boucle. C'est bien ça ? Quelle est l'autre erreur qui plantait mon processus ?
Merci encore,
Jac
"tissot.emmanuel" a écrit dans le message de news: %
Bonjour,
Lorsque ta premiere erreur se produit, tu rentre dans un bloc de code destiné à traiter cette erreur. Si une autre erreur se produit pendant ce traitement c'est la cata, et c'est ce qui se passe quand tu insere ta gestion d'erreur dans une boucle avec des instructions Goto.
Essaye donc ceci:
Sub CREER_FEUILLES2() Sheets(1).Select On Error GoTo ErrH: For Y = 2 To [B65536].End(xlUp).Row LA_Valeur = Cells(Y, 2).Value Sheets(LA_Valeur).Select Next Exit Sub ErrH: ActiveWorkbook.Worksheets.Add after:=Sheets(Sheets.Count) ActiveSheet.Name = LA_Valeur Sheets(1).Select Resume Next End Sub
Cordialement,
Manu/
"Jac" a écrit dans le message de news:
Bonjour à tous,
pour toutes les valeurs situées dans la colonne B, à partir de B2, pour chacune valeur qui ne correspond pas au nom d'une feuille existante, alors je crée une nouvelle feuille dont le nom sera la valeur en question. Les valeurs ont des noms compatibles avec ce qu'Excel autorise pour nommer les feuilles. Donc pas de problème de ce côté là.
Excel crée la première feuille manquante et quand arrive le tour de la deuxième feuille manquante, j'ai droit à un laconique Erreur 9 - Indice en dehors de la plage sur la ligne Sheets(LA_VALEUR).Select
Si je relance la macro, il crée cette feuille et bloque à nouveau sur la suivante. Donc la solution est de relancer la macro après chaque création. Mais j'aimerais quand même comprendre pourquoi il s'arrête à la deuxième création de feuille, malgré le "On error goto 5" qui devrait éviter toute interruption.
Merci d'avance à qui voudra bien éclairer ma lanterne.
Jac
Sub CREER_FEUILLES() Sheets(1).Select ' si la feuille n'existe pas on saute à la ligne 5 : nouvelle feuille On Error GoTo 5 For Y = 2 To [B65536].End(xlUp).Row LA_VALEUR = Cells(Y, 2).Value Sheets(LA_VALEUR).Select ' si la feuille existe alors retour à la feuille 1 pour la suite GoTo 9 5 'création d'une nouvelle feuille ActiveWorkbook.Worksheets.Add after:=Sheets(Sheets.Count) ActiveSheet.Name = LA_VALEUR 9 Sheets(1).Select Next Y End Sub
Bonjour Emmanuel,
parfait...
Juste j'ai dû déplacer Sheets(1).Select entre Sheets(LA_Valeur).Select et
Next, sinon le traitement bouclait dans la feuille en cours et non dans la
feuille de données.
Donc si je résume, il faut toujours mettre un traitement d'erreur en dehors
d'une boucle. C'est bien ça ?
Quelle est l'autre erreur qui plantait mon processus ?
Merci encore,
Jac
"tissot.emmanuel" <tissot.emmanuel@free.fr> a écrit dans le message de news:
%23TLQtG7NIHA.2064@TK2MSFTNGP06.phx.gbl...
Bonjour,
Lorsque ta premiere erreur se produit, tu rentre dans un bloc de code
destiné à traiter cette erreur. Si une autre erreur se produit pendant ce
traitement c'est la cata, et c'est ce qui se passe quand tu insere ta
gestion d'erreur dans une boucle avec des instructions Goto.
Essaye donc ceci:
Sub CREER_FEUILLES2()
Sheets(1).Select
On Error GoTo ErrH:
For Y = 2 To [B65536].End(xlUp).Row
LA_Valeur = Cells(Y, 2).Value
Sheets(LA_Valeur).Select
Next
Exit Sub
ErrH:
ActiveWorkbook.Worksheets.Add after:=Sheets(Sheets.Count)
ActiveSheet.Name = LA_Valeur
Sheets(1).Select
Resume Next
End Sub
Cordialement,
Manu/
"Jac" <Jsansp@mfra.net> a écrit dans le message de news:
OHqRtx6NIHA.5140@TK2MSFTNGP05.phx.gbl...
Bonjour à tous,
pour toutes les valeurs situées dans la colonne B, à partir de B2, pour
chacune valeur qui ne correspond pas au nom d'une feuille existante,
alors je crée une nouvelle feuille dont le nom sera la valeur en
question. Les valeurs ont des noms compatibles avec ce qu'Excel autorise
pour nommer les feuilles. Donc pas de problème de ce côté là.
Excel crée la première feuille manquante et quand arrive le tour de la
deuxième feuille manquante, j'ai droit à un laconique
Erreur 9 - Indice en dehors de la plage sur la ligne
Sheets(LA_VALEUR).Select
Si je relance la macro, il crée cette feuille et bloque à nouveau sur la
suivante.
Donc la solution est de relancer la macro après chaque création. Mais
j'aimerais quand même comprendre pourquoi il s'arrête à la deuxième
création de feuille, malgré le "On error goto 5" qui devrait éviter toute
interruption.
Merci d'avance à qui voudra bien éclairer ma lanterne.
Jac
Sub CREER_FEUILLES()
Sheets(1).Select
' si la feuille n'existe pas on saute à la ligne 5 : nouvelle feuille
On Error GoTo 5
For Y = 2 To [B65536].End(xlUp).Row
LA_VALEUR = Cells(Y, 2).Value
Sheets(LA_VALEUR).Select
' si la feuille existe alors retour à la feuille 1 pour la suite
GoTo 9
5 'création d'une nouvelle feuille
ActiveWorkbook.Worksheets.Add after:=Sheets(Sheets.Count)
ActiveSheet.Name = LA_VALEUR
9 Sheets(1).Select
Next Y
End Sub
Juste j'ai dû déplacer Sheets(1).Select entre Sheets(LA_Valeur).Select et Next, sinon le traitement bouclait dans la feuille en cours et non dans la feuille de données.
Donc si je résume, il faut toujours mettre un traitement d'erreur en dehors d'une boucle. C'est bien ça ? Quelle est l'autre erreur qui plantait mon processus ?
Merci encore,
Jac
"tissot.emmanuel" a écrit dans le message de news: %
Bonjour,
Lorsque ta premiere erreur se produit, tu rentre dans un bloc de code destiné à traiter cette erreur. Si une autre erreur se produit pendant ce traitement c'est la cata, et c'est ce qui se passe quand tu insere ta gestion d'erreur dans une boucle avec des instructions Goto.
Essaye donc ceci:
Sub CREER_FEUILLES2() Sheets(1).Select On Error GoTo ErrH: For Y = 2 To [B65536].End(xlUp).Row LA_Valeur = Cells(Y, 2).Value Sheets(LA_Valeur).Select Next Exit Sub ErrH: ActiveWorkbook.Worksheets.Add after:=Sheets(Sheets.Count) ActiveSheet.Name = LA_Valeur Sheets(1).Select Resume Next End Sub
Cordialement,
Manu/
"Jac" a écrit dans le message de news:
Bonjour à tous,
pour toutes les valeurs situées dans la colonne B, à partir de B2, pour chacune valeur qui ne correspond pas au nom d'une feuille existante, alors je crée une nouvelle feuille dont le nom sera la valeur en question. Les valeurs ont des noms compatibles avec ce qu'Excel autorise pour nommer les feuilles. Donc pas de problème de ce côté là.
Excel crée la première feuille manquante et quand arrive le tour de la deuxième feuille manquante, j'ai droit à un laconique Erreur 9 - Indice en dehors de la plage sur la ligne Sheets(LA_VALEUR).Select
Si je relance la macro, il crée cette feuille et bloque à nouveau sur la suivante. Donc la solution est de relancer la macro après chaque création. Mais j'aimerais quand même comprendre pourquoi il s'arrête à la deuxième création de feuille, malgré le "On error goto 5" qui devrait éviter toute interruption.
Merci d'avance à qui voudra bien éclairer ma lanterne.
Jac
Sub CREER_FEUILLES() Sheets(1).Select ' si la feuille n'existe pas on saute à la ligne 5 : nouvelle feuille On Error GoTo 5 For Y = 2 To [B65536].End(xlUp).Row LA_VALEUR = Cells(Y, 2).Value Sheets(LA_VALEUR).Select ' si la feuille existe alors retour à la feuille 1 pour la suite GoTo 9 5 'création d'une nouvelle feuille ActiveWorkbook.Worksheets.Add after:=Sheets(Sheets.Count) ActiveSheet.Name = LA_VALEUR 9 Sheets(1).Select Next Y End Sub
tissot.emmanuel
Bonjour,
Donc si je résume, il faut toujours mettre un traitement d'erreur en dehors d'une boucle. C'est bien ça ?
C'est bien ca.
Sub Test() On Error Goto Erreur: ' Instructions susceptibles de provoquer une l'erreur Exit Sub Erreur: ' Instructions de gestion de l'erreur Resume ' Ou Resume Next pour reprendre l'exécution à l'endroit souhaité End Sub
Quelle est l'autre erreur qui plantait mon processus ? Je ne vois rien d'autre qui cloche, mais dans la mesure du possible (cad
presque toujours) ne pas utiliser l'instruction GoTo pour orienter le déroulement du code.
Bonne journée,
Manu/
"Jac" a écrit dans le message de news:
Bonjour Emmanuel,
parfait...
Juste j'ai dû déplacer Sheets(1).Select entre Sheets(LA_Valeur).Select et Next, sinon le traitement bouclait dans la feuille en cours et non dans la feuille de données.
Donc si je résume, il faut toujours mettre un traitement d'erreur en dehors d'une boucle. C'est bien ça ? Quelle est l'autre erreur qui plantait mon processus ?
Merci encore,
Jac
"tissot.emmanuel" a écrit dans le message de news: %
Bonjour,
Lorsque ta premiere erreur se produit, tu rentre dans un bloc de code destiné à traiter cette erreur. Si une autre erreur se produit pendant ce traitement c'est la cata, et c'est ce qui se passe quand tu insere ta gestion d'erreur dans une boucle avec des instructions Goto.
Essaye donc ceci:
Sub CREER_FEUILLES2() Sheets(1).Select On Error GoTo ErrH: For Y = 2 To [B65536].End(xlUp).Row LA_Valeur = Cells(Y, 2).Value Sheets(LA_Valeur).Select Next Exit Sub ErrH: ActiveWorkbook.Worksheets.Add after:=Sheets(Sheets.Count) ActiveSheet.Name = LA_Valeur Sheets(1).Select Resume Next End Sub
Cordialement,
Manu/
"Jac" a écrit dans le message de news:
Bonjour à tous,
pour toutes les valeurs situées dans la colonne B, à partir de B2, pour chacune valeur qui ne correspond pas au nom d'une feuille existante, alors je crée une nouvelle feuille dont le nom sera la valeur en question. Les valeurs ont des noms compatibles avec ce qu'Excel autorise pour nommer les feuilles. Donc pas de problème de ce côté là.
Excel crée la première feuille manquante et quand arrive le tour de la deuxième feuille manquante, j'ai droit à un laconique Erreur 9 - Indice en dehors de la plage sur la ligne Sheets(LA_VALEUR).Select
Si je relance la macro, il crée cette feuille et bloque à nouveau sur la suivante. Donc la solution est de relancer la macro après chaque création. Mais j'aimerais quand même comprendre pourquoi il s'arrête à la deuxième création de feuille, malgré le "On error goto 5" qui devrait éviter toute interruption.
Merci d'avance à qui voudra bien éclairer ma lanterne.
Jac
Sub CREER_FEUILLES() Sheets(1).Select ' si la feuille n'existe pas on saute à la ligne 5 : nouvelle feuille On Error GoTo 5 For Y = 2 To [B65536].End(xlUp).Row LA_VALEUR = Cells(Y, 2).Value Sheets(LA_VALEUR).Select ' si la feuille existe alors retour à la feuille 1 pour la suite GoTo 9 5 'création d'une nouvelle feuille ActiveWorkbook.Worksheets.Add after:=Sheets(Sheets.Count) ActiveSheet.Name = LA_VALEUR 9 Sheets(1).Select Next Y End Sub
Bonjour,
Donc si je résume, il faut toujours mettre un traitement d'erreur en
dehors d'une boucle. C'est bien ça ?
C'est bien ca.
Sub Test()
On Error Goto Erreur:
' Instructions susceptibles de provoquer une l'erreur
Exit Sub
Erreur:
' Instructions de gestion de l'erreur
Resume ' Ou Resume Next pour reprendre l'exécution à l'endroit souhaité
End Sub
Quelle est l'autre erreur qui plantait mon processus ?
Je ne vois rien d'autre qui cloche, mais dans la mesure du possible (cad
presque toujours) ne pas utiliser l'instruction GoTo pour orienter le
déroulement du code.
Bonne journée,
Manu/
"Jac" <Jsansp@mfra.net> a écrit dans le message de news:
uQ7Fed9NIHA.748@TK2MSFTNGP04.phx.gbl...
Bonjour Emmanuel,
parfait...
Juste j'ai dû déplacer Sheets(1).Select entre Sheets(LA_Valeur).Select et
Next, sinon le traitement bouclait dans la feuille en cours et non dans la
feuille de données.
Donc si je résume, il faut toujours mettre un traitement d'erreur en
dehors d'une boucle. C'est bien ça ?
Quelle est l'autre erreur qui plantait mon processus ?
Merci encore,
Jac
"tissot.emmanuel" <tissot.emmanuel@free.fr> a écrit dans le message de
news: %23TLQtG7NIHA.2064@TK2MSFTNGP06.phx.gbl...
Bonjour,
Lorsque ta premiere erreur se produit, tu rentre dans un bloc de code
destiné à traiter cette erreur. Si une autre erreur se produit pendant ce
traitement c'est la cata, et c'est ce qui se passe quand tu insere ta
gestion d'erreur dans une boucle avec des instructions Goto.
Essaye donc ceci:
Sub CREER_FEUILLES2()
Sheets(1).Select
On Error GoTo ErrH:
For Y = 2 To [B65536].End(xlUp).Row
LA_Valeur = Cells(Y, 2).Value
Sheets(LA_Valeur).Select
Next
Exit Sub
ErrH:
ActiveWorkbook.Worksheets.Add after:=Sheets(Sheets.Count)
ActiveSheet.Name = LA_Valeur
Sheets(1).Select
Resume Next
End Sub
Cordialement,
Manu/
"Jac" <Jsansp@mfra.net> a écrit dans le message de news:
OHqRtx6NIHA.5140@TK2MSFTNGP05.phx.gbl...
Bonjour à tous,
pour toutes les valeurs situées dans la colonne B, à partir de B2, pour
chacune valeur qui ne correspond pas au nom d'une feuille existante,
alors je crée une nouvelle feuille dont le nom sera la valeur en
question. Les valeurs ont des noms compatibles avec ce qu'Excel autorise
pour nommer les feuilles. Donc pas de problème de ce côté là.
Excel crée la première feuille manquante et quand arrive le tour de la
deuxième feuille manquante, j'ai droit à un laconique
Erreur 9 - Indice en dehors de la plage sur la ligne
Sheets(LA_VALEUR).Select
Si je relance la macro, il crée cette feuille et bloque à nouveau sur la
suivante.
Donc la solution est de relancer la macro après chaque création. Mais
j'aimerais quand même comprendre pourquoi il s'arrête à la deuxième
création de feuille, malgré le "On error goto 5" qui devrait éviter
toute interruption.
Merci d'avance à qui voudra bien éclairer ma lanterne.
Jac
Sub CREER_FEUILLES()
Sheets(1).Select
' si la feuille n'existe pas on saute à la ligne 5 : nouvelle feuille
On Error GoTo 5
For Y = 2 To [B65536].End(xlUp).Row
LA_VALEUR = Cells(Y, 2).Value
Sheets(LA_VALEUR).Select
' si la feuille existe alors retour à la feuille 1 pour la suite
GoTo 9
5 'création d'une nouvelle feuille
ActiveWorkbook.Worksheets.Add after:=Sheets(Sheets.Count)
ActiveSheet.Name = LA_VALEUR
9 Sheets(1).Select
Next Y
End Sub
Donc si je résume, il faut toujours mettre un traitement d'erreur en dehors d'une boucle. C'est bien ça ?
C'est bien ca.
Sub Test() On Error Goto Erreur: ' Instructions susceptibles de provoquer une l'erreur Exit Sub Erreur: ' Instructions de gestion de l'erreur Resume ' Ou Resume Next pour reprendre l'exécution à l'endroit souhaité End Sub
Quelle est l'autre erreur qui plantait mon processus ? Je ne vois rien d'autre qui cloche, mais dans la mesure du possible (cad
presque toujours) ne pas utiliser l'instruction GoTo pour orienter le déroulement du code.
Bonne journée,
Manu/
"Jac" a écrit dans le message de news:
Bonjour Emmanuel,
parfait...
Juste j'ai dû déplacer Sheets(1).Select entre Sheets(LA_Valeur).Select et Next, sinon le traitement bouclait dans la feuille en cours et non dans la feuille de données.
Donc si je résume, il faut toujours mettre un traitement d'erreur en dehors d'une boucle. C'est bien ça ? Quelle est l'autre erreur qui plantait mon processus ?
Merci encore,
Jac
"tissot.emmanuel" a écrit dans le message de news: %
Bonjour,
Lorsque ta premiere erreur se produit, tu rentre dans un bloc de code destiné à traiter cette erreur. Si une autre erreur se produit pendant ce traitement c'est la cata, et c'est ce qui se passe quand tu insere ta gestion d'erreur dans une boucle avec des instructions Goto.
Essaye donc ceci:
Sub CREER_FEUILLES2() Sheets(1).Select On Error GoTo ErrH: For Y = 2 To [B65536].End(xlUp).Row LA_Valeur = Cells(Y, 2).Value Sheets(LA_Valeur).Select Next Exit Sub ErrH: ActiveWorkbook.Worksheets.Add after:=Sheets(Sheets.Count) ActiveSheet.Name = LA_Valeur Sheets(1).Select Resume Next End Sub
Cordialement,
Manu/
"Jac" a écrit dans le message de news:
Bonjour à tous,
pour toutes les valeurs situées dans la colonne B, à partir de B2, pour chacune valeur qui ne correspond pas au nom d'une feuille existante, alors je crée une nouvelle feuille dont le nom sera la valeur en question. Les valeurs ont des noms compatibles avec ce qu'Excel autorise pour nommer les feuilles. Donc pas de problème de ce côté là.
Excel crée la première feuille manquante et quand arrive le tour de la deuxième feuille manquante, j'ai droit à un laconique Erreur 9 - Indice en dehors de la plage sur la ligne Sheets(LA_VALEUR).Select
Si je relance la macro, il crée cette feuille et bloque à nouveau sur la suivante. Donc la solution est de relancer la macro après chaque création. Mais j'aimerais quand même comprendre pourquoi il s'arrête à la deuxième création de feuille, malgré le "On error goto 5" qui devrait éviter toute interruption.
Merci d'avance à qui voudra bien éclairer ma lanterne.
Jac
Sub CREER_FEUILLES() Sheets(1).Select ' si la feuille n'existe pas on saute à la ligne 5 : nouvelle feuille On Error GoTo 5 For Y = 2 To [B65536].End(xlUp).Row LA_VALEUR = Cells(Y, 2).Value Sheets(LA_VALEUR).Select ' si la feuille existe alors retour à la feuille 1 pour la suite GoTo 9 5 'création d'une nouvelle feuille ActiveWorkbook.Worksheets.Add after:=Sheets(Sheets.Count) ActiveSheet.Name = LA_VALEUR 9 Sheets(1).Select Next Y End Sub