Gestion des erreurs GOTO étiquette

Bonjour,

Je vous écris car je ne comprends pas un soucis dans mon programme,

La gestion des erreurs se fait bien sur une partie, mais à la fin, lorsque je veux ouvrir un fichier qui n'existe pas (erreur), il se met en erreur tout de même.

Voici le code en question :

On Error GoTo S2
' Ouverture de Devis3.xlsx :----------------------------------------------------------------------
     Workbooks.Open "Y:\Industrie\Situation Affaire supérieure à 250k€\Données_112163\Devis3.xlsx"

        Application.DisplayAlerts = False

' Copie des données :
    Workbooks("Devis3.xlsx").Sheets("feuil2").Range("A1:P1000").Copy
    Workbooks("Générateur de bilan de comptes.xlsm").Activate
    Workbooks("Générateur de bilan de comptes.xlsm").Sheets("Devis3").Select
    Workbooks("Générateur de bilan de comptes.xlsm").Sheets("Devis3").Paste
    Workbooks("Générateur de bilan de comptes.xlsm").Sheets("Devis3").Range("A1").Select

 ' Fermeture de Devis3.xlsx :
    Workbooks("Devis2.xlsx").Close False

        Application.DisplayAlerts = True

' Ouverture de Devis4.xlsx :----------------------------------------------------------------------
S2:
On Error GoTo S3:
Workbooks.Open "Y:\Industrie\Situation Affaire supérieure à 250k€\Données_112163\Devis4.xlsx"

        Application.DisplayAlerts = False

' Copie des données :
    Workbooks("Devis4.xlsx").Sheets("feuil2").Range("A1:P1000").Copy
    Workbooks("Générateur de bilan de comptes.xlsm").Activate
    Workbooks("Générateur de bilan de comptes.xlsm").Sheets("Devis4").Select
    Workbooks("Générateur de bilan de comptes.xlsm").Sheets("Devis4").Paste
    Workbooks("Générateur de bilan de comptes.xlsm").Sheets("Devis4").Range("A1").Select

 ' Fermeture de Devis4.xlsx :
    Workbooks("Devis4.xlsx").Close False

        Application.DisplayAlerts = True

S3:

Je vous remercie pour votre.

Cordialement,

Maxime


C'est : Workbooks.Open "Y:\Industrie\Situation Affaire supérieure à 250k€\Données_112163\Devis4.xlsx"

Qui se met en jaune en erreur tout de même.

Encore merci..

Bonjour,

Lorsque qu'une erreur survient, une variable change de valeur pour indiquer qu'une erreur est survenue. Le fait d'écrire "On Error Goto" est une sortie de If. Si la variable erreur indique une erreur, alors je fais le saut. MAIS cela ne reset pas la variable erreur! Donc même si tu corriges ton erreur, si tu n'indiques pas qu'il n'y a plus d'erreur, tu fais tous les sauts 'On Error Goto'!

Deuxième remarque, le programme suis son cours, donc:

'action1
saut1:

entrera toujours dans saut1, alors que toi tu ne veux y entrer que si il y a erreur !!

Solution

On Error Goto saut1
'action1
Exit Sub ' sinon on rentre dans saut1 et ainsi de suite
saut1:
Err.Clear
On error Goto saut2
'actions...

saut2:
Err.Clear
'etc...

Salut,

Il suffit de ''raffraichir'' ton code. Avant l'instruction On Error GoTo S3: place l'instruction On Error GoTo -1.

Cordialement.

Tout d'abord merci pour votre aide,

cela fonctionne,

Seul problème lorsque je supprime des fichiers dans la destination ou aller chercher les infos en cas d'erreurs

pour devis2 (suppression du dossier), il ignore bien l'erreur et passe à l'étape 3...

Mais pour devis 4, il affiche un message élément manquant..

Or je ne veux pas qu'il spécifie ce manque.

Voici le nouveau code complet :

Sub CreationSynthese()

'Synthèse des documents à traiter

' Ecriture du numéro de compte puis de la date
    Range("E3:H3") = "Synthèse du compte XXXXXX au XX/XX/XXXX"
' Mise en forme de la ligne de titre :
    Range("E2:H2").Interior.Color = 13434879 '(Jaune pâle)
    Range("E2:H2").Font.Bold = True
    Range("E3:H3").Interior.Color = 13434879 '(Jaune pâle)
    Range("E3:H3").Font.Bold = True
    Range("E4:H4").Interior.Color = 13434879 '(Jaune pâle)
    Range("E4:H4").Font.Bold = True

' Ouverture de ADA.xlsx :--------------------------------------------------------------------------
     Workbooks.Open "Y:\Industrie\Situation Affaire supérieure à 250k€\Données_112163\ADA.xlsx"

        Application.DisplayAlerts = False

' Copie des données :
    Workbooks("ADA.xlsx").Sheets("ADA").Range("A1:P1000").Copy
    Workbooks("Générateur de bilan de comptes.xlsm").Activate
    Workbooks("Générateur de bilan de comptes.xlsm").Sheets("ADA").Select
    Workbooks("Générateur de bilan de comptes.xlsm").Sheets("ADA").Paste
    Workbooks("Générateur de bilan de comptes.xlsm").Sheets("ADA").Range("A1").Select

' Fermeture de ADA.xlsx :
    Workbooks("ADA.xlsx").Close False

        Application.DisplayAlerts = True

' Ouverture de ADA-2.xlsx :-----------------------------------------------------------------------
     Workbooks.Open "Y:\Industrie\Situation Affaire supérieure à 250k€\Données_112163\ADA-2.xlsx"

        Application.DisplayAlerts = False

' Copie des données :
    Workbooks("ADA-2.xlsx").Sheets("ADA-2").Range("A1:P1000").Copy
    Workbooks("Générateur de bilan de comptes.xlsm").Activate
    Workbooks("Générateur de bilan de comptes.xlsm").Sheets("ADA-2").Select
    Workbooks("Générateur de bilan de comptes.xlsm").Sheets("ADA-2").Paste
    Workbooks("Générateur de bilan de comptes.xlsm").Sheets("ADA-2").Range("A1").Select

 ' Fermeture de ADA-2.xlsx :
    Workbooks("ADA-2.xlsx").Close False

        Application.DisplayAlerts = True

' Ouverture de ADM.xlsx :------------------------------------------------------------------------
     Workbooks.Open "Y:\Industrie\Situation Affaire supérieure à 250k€\Données_112163\ADM.xlsx"

        Application.DisplayAlerts = False

' Copie des données :
    Workbooks("ADM.xlsx").Sheets("ADM").Range("A1:P1000").Copy
    Workbooks("Générateur de bilan de comptes.xlsm").Activate
    Workbooks("Générateur de bilan de comptes.xlsm").Sheets("ADM").Select
    Workbooks("Générateur de bilan de comptes.xlsm").Sheets("ADM").Paste
    Workbooks("Générateur de bilan de comptes.xlsm").Sheets("ADM").Range("A1").Select

 ' Fermeture de ADM.xlsx :
    Workbooks("ADM.xlsx").Close False

        Application.DisplayAlerts = True

  ' Ouverture de ADS.xlsx :---------------------------------------------------------------------
     Workbooks.Open "Y:\Industrie\Situation Affaire supérieure à 250k€\Données_112163\ADS.xlsx"

        Application.DisplayAlerts = False

' Copie des données :
    Workbooks("ADS.xlsx").Sheets("ADS").Range("A1:P1000").Copy
    Workbooks("Générateur de bilan de comptes.xlsm").Activate
    Workbooks("Générateur de bilan de comptes.xlsm").Sheets("ADS").Select
    Workbooks("Générateur de bilan de comptes.xlsm").Sheets("ADS").Paste
    Workbooks("Générateur de bilan de comptes.xlsm").Sheets("ADS").Range("A1").Select

 ' Fermeture de ADS.xlsx :
    Workbooks("ADS.xlsx").Close False

        Application.DisplayAlerts = True

   ' Ouverture de COMPTA.xlsx :-------------------------------------------------------------------
     Workbooks.Open "Y:\Industrie\Situation Affaire supérieure à 250k€\Données_112163\COMPTA.xlsx"

        Application.DisplayAlerts = False

' Copie des données :
    Workbooks("COMPTA.xlsx").Sheets("COMPTA").Range("A1:P1000").Copy
    Workbooks("Générateur de bilan de comptes.xlsm").Activate
    Workbooks("Générateur de bilan de comptes.xlsm").Sheets("COMPTA").Select
    Workbooks("Générateur de bilan de comptes.xlsm").Sheets("COMPTA").Paste
    Workbooks("Générateur de bilan de comptes.xlsm").Sheets("COMPTA").Range("A1").Select

 ' Fermeture de COMPTA.xlsx:
    Workbooks("COMPTA.xlsx").Close False

        Application.DisplayAlerts = True

   ' Ouverture de CHRONO.xlsx :-------------------------------------------------------------------
     Workbooks.Open "Y:\Industrie\Situation Affaire supérieure à 250k€\Données_112163\CHRONO.xlsx"

        Application.DisplayAlerts = False

' Copie des données :
    Workbooks("CHRONO.xlsx").Sheets("CHRONO").Range("A1:V1000").Copy
    Workbooks("Générateur de bilan de comptes.xlsm").Activate
    Workbooks("Générateur de bilan de comptes.xlsm").Sheets("CHRONO").Select
    Workbooks("Générateur de bilan de comptes.xlsm").Sheets("CHRONO").Paste
    Workbooks("Générateur de bilan de comptes.xlsm").Sheets("CHRONO").Range("A1").Select

 ' Fermeture de CHRONO.xlsx :
    Workbooks("CHRONO.xlsx").Close False

        Application.DisplayAlerts = True

'-------------------------------------------------------------------------------------------------
 On Error GoTo S1

' Ouverture de Devis1.xlsx :----------------------------------------------------------------------
     Workbooks.Open "Y:\Industrie\Situation Affaire supérieure à 250k€\Données_112163\Devis1.xlsx"

        Application.DisplayAlerts = False

' Copie des données :
    Workbooks("Devis1.xlsx").Sheets("feuil2").Range("A1:P1000").Copy
    Workbooks("Générateur de bilan de comptes.xlsm").Activate
    Workbooks("Générateur de bilan de comptes.xlsm").Sheets("Devis1").Select
    Workbooks("Générateur de bilan de comptes.xlsm").Sheets("Devis1").Paste
    Workbooks("Générateur de bilan de comptes.xlsm").Sheets("Devis1").Range("A1").Select

 ' Fermeture de Devis1.xlsx :
    Workbooks("Devis1.xlsx").Close False

S1:
On Error GoTo -1
 On Error GoTo S2

 ' Ouverture de Devis2.xlsx :---------------------------------------------------------------------
     Workbooks.Open "Y:\Industrie\Situation Affaire supérieure à 250k€\Données_112163\Devis2.xlsx"

        Application.DisplayAlerts = False

' Copie des données :
    Workbooks("Devis2.xlsx").Sheets("feuil2").Range("A1:P1000").Copy
    Workbooks("Générateur de bilan de comptes.xlsm").Activate
    Workbooks("Générateur de bilan de comptes.xlsm").Sheets("Devis2").Select
    Workbooks("Générateur de bilan de comptes.xlsm").Sheets("Devis2").Paste
    Workbooks("Générateur de bilan de comptes.xlsm").Sheets("Devis2").Range("A1").Select

 ' Fermeture de Devis2.xlsx :
    Workbooks("Devis2.xlsx").Close False

        Application.DisplayAlerts = True

S2:
On Error GoTo -1
 On Error GoTo S3

' Ouverture de Devis3.xlsx :----------------------------------------------------------------------
     Workbooks.Open "Y:\Industrie\Situation Affaire supérieure à 250k€\Données_112163\Devis3.xlsx"

        Application.DisplayAlerts = False

' Copie des données :
    Workbooks("Devis3.xlsx").Sheets("feuil2").Range("A1:P1000").Copy
    Workbooks("Générateur de bilan de comptes.xlsm").Activate
    Workbooks("Générateur de bilan de comptes.xlsm").Sheets("Devis3").Select
    Workbooks("Générateur de bilan de comptes.xlsm").Sheets("Devis3").Paste
    Workbooks("Générateur de bilan de comptes.xlsm").Sheets("Devis3").Range("A1").Select

 ' Fermeture de Devis3.xlsx :
    Workbooks("Devis3.xlsx").Close False

        Application.DisplayAlerts = True

S3:
 On Error GoTo -1
 On Error GoTo S4

' Ouverture de Devis4.xlsx :----------------------------------------------------------------------

Workbooks.Open "Y:\Industrie\Situation Affaire supérieure à 250k€\Données_112163\Devis4.xlsx"

        Application.DisplayAlerts = False

' Copie des données :
    Workbooks("Devis4.xlsx").Sheets("feuil2").Range("A1:P1000").Copy
    Workbooks("Générateur de bilan de comptes.xlsm").Activate
    Workbooks("Générateur de bilan de comptes.xlsm").Sheets("Devis4").Select
    Workbooks("Générateur de bilan de comptes.xlsm").Sheets("Devis4").Paste
    Workbooks("Générateur de bilan de comptes.xlsm").Sheets("Devis4").Range("A1").Select

 ' Fermeture de Devis4.xlsx :
    Workbooks("Devis4.xlsx").Close False

        Application.DisplayAlerts = True

S4:
     Sheets("Bilan comparatif général").Select

 End Sub

Je vous remercie pour votre aide.

Cordialement,

Maxime

Ne serait t'il pas mieux de faire ça avec la fonction :

If Than

ElseIf Than

End If

Si fichier 1 existe (adresse du répertoire) alors faire ça :

Sinon essayer avec fichier 2 sinon ... ainsi de suite

jusqu'à la fin du programme...

Pouvez-vous m'aider ?

Je vous remercie,

Cordialement,

Maxime

J'ai bien ré-écrit mon pgm et cela fonctionne parfaitement, je vous remercie tous deux pour votre aide.

voici mon nouveau code :

Sub CreationSynthese()  'Synthèse des documents à traiter

' Ecriture du numéro de compte puis de la date
    Range("E3:H3") = "Synthèse du compte XXXXXX au XX/XX/XXXX"
' Mise en forme de la ligne de titre :
    Range("E2:H2").Interior.Color = 13434879 '(Jaune pâle)
    Range("E2:H2").Font.Bold = True
    Range("E3:H3").Interior.Color = 13434879 '(Jaune pâle)
    Range("E3:H3").Font.Bold = True
    Range("E4:H4").Interior.Color = 13434879 '(Jaune pâle)
    Range("E4:H4").Font.Bold = True

'__________________________________________________________________________________________________

' Ouverture de ADA.xlsx :
     Workbooks.Open "Y:\Industrie\Situation Affaire supérieure à 250k€\Données_112163\ADA.xlsx"

        Application.DisplayAlerts = False

' Copie des données :
    Workbooks("ADA.xlsx").Sheets("ADA").Range("A1:P1000").Copy
    Workbooks("Générateur de bilan de comptes.xlsm").Activate
    Workbooks("Générateur de bilan de comptes.xlsm").Sheets("ADA").Select
    Workbooks("Générateur de bilan de comptes.xlsm").Sheets("ADA").Paste
    Workbooks("Générateur de bilan de comptes.xlsm").Sheets("ADA").Range("A1").Select

' Fermeture de ADA.xlsx :
    Workbooks("ADA.xlsx").Close

'__________________________________________________________________________________________________

' Ouverture de ADA-2.xlsx
     Workbooks.Open "Y:\Industrie\Situation Affaire supérieure à 250k€\Données_112163\ADA-2.xlsx"

' Copie des données :
    Workbooks("ADA-2.xlsx").Sheets("ADA-2").Range("A1:P1000").Copy
    Workbooks("Générateur de bilan de comptes.xlsm").Activate
    Workbooks("Générateur de bilan de comptes.xlsm").Sheets("ADA-2").Select
    Workbooks("Générateur de bilan de comptes.xlsm").Sheets("ADA-2").Paste
    Workbooks("Générateur de bilan de comptes.xlsm").Sheets("ADA-2").Range("A1").Select

' Fermeture de ADA-2.xlsx :
    Workbooks("ADA-2.xlsx").Close

'__________________________________________________________________________________________________

' Ouverture de ADM.xlsx :
     Workbooks.Open "Y:\Industrie\Situation Affaire supérieure à 250k€\Données_112163\ADM.xlsx"

' Copie des données :
    Workbooks("ADM.xlsx").Sheets("ADM").Range("A1:P1000").Copy
    Workbooks("Générateur de bilan de comptes.xlsm").Activate
    Workbooks("Générateur de bilan de comptes.xlsm").Sheets("ADM").Select
    Workbooks("Générateur de bilan de comptes.xlsm").Sheets("ADM").Paste
    Workbooks("Générateur de bilan de comptes.xlsm").Sheets("ADM").Range("A1").Select

' Fermeture de ADM.xlsx :
    Workbooks("ADM.xlsx").Close

'________________________________________________________________________________________________

' Ouverture de ADS.xlsx :
     Workbooks.Open "Y:\Industrie\Situation Affaire supérieure à 250k€\Données_112163\ADS.xlsx"

' Copie des données :
    Workbooks("ADS.xlsx").Sheets("ADS").Range("A1:P1000").Copy
    Workbooks("Générateur de bilan de comptes.xlsm").Activate
    Workbooks("Générateur de bilan de comptes.xlsm").Sheets("ADS").Select
    Workbooks("Générateur de bilan de comptes.xlsm").Sheets("ADS").Paste
    Workbooks("Générateur de bilan de comptes.xlsm").Sheets("ADS").Range("A1").Select

' Fermeture de ADS.xlsx :
    Workbooks("ADS.xlsx").Close

'__________________________________________________________________________________________________

' Ouverture de COMPTA.xlsx :
     Workbooks.Open "Y:\Industrie\Situation Affaire supérieure à 250k€\Données_112163\COMPTA.xlsx"

' Copie des données :
    Workbooks("COMPTA.xlsx").Sheets("COMPTA").Range("A1:P1000").Copy
    Workbooks("Générateur de bilan de comptes.xlsm").Activate
    Workbooks("Générateur de bilan de comptes.xlsm").Sheets("COMPTA").Select
    Workbooks("Générateur de bilan de comptes.xlsm").Sheets("COMPTA").Paste
    Workbooks("Générateur de bilan de comptes.xlsm").Sheets("COMPTA").Range("A1").Select

' Fermeture de COMPTA.xlsx:
    Workbooks("COMPTA.xlsx").Close

'__________________________________________________________________________________________________
   ' Ouverture de CHRONO.xlsx :
     Workbooks.Open "Y:\Industrie\Situation Affaire supérieure à 250k€\Données_112163\CHRONO.xlsx"

' Copie des données :
    Workbooks("CHRONO.xlsx").Sheets("CHRONO").Range("A1:V1000").Copy
    Workbooks("Générateur de bilan de comptes.xlsm").Activate
    Workbooks("Générateur de bilan de comptes.xlsm").Sheets("CHRONO").Select
    Workbooks("Générateur de bilan de comptes.xlsm").Sheets("CHRONO").Paste
    Workbooks("Générateur de bilan de comptes.xlsm").Sheets("CHRONO").Range("A1").Select

 ' Fermeture de CHRONO.xlsx :
    Workbooks("CHRONO.xlsx").Close

'__________________________________________________________________________________________________
On Error GoTo S1

' Ouverture de Devis1.xlsx :
     Workbooks.Open "Y:\Industrie\Situation Affaire supérieure à 250k€\Données_112163\Devis1.xlsx"

' Copie des données :
    Workbooks("Devis1.xlsx").Sheets("feuil2").Range("A1:P1000").Copy
    Workbooks("Générateur de bilan de comptes.xlsm").Activate
    Workbooks("Générateur de bilan de comptes.xlsm").Sheets("Devis1").Select
    Workbooks("Générateur de bilan de comptes.xlsm").Sheets("Devis1").Paste
    Workbooks("Générateur de bilan de comptes.xlsm").Sheets("Devis1").Range("A1").Select

 ' Fermeture de Devis1.xlsx :
    Workbooks("Devis1.xlsx").Close

S1:
Err.Clear
On Error GoTo S2

'__________________________________________________________________________________________________
 ' Ouverture de Devis2.xlsx :
     Workbooks.Open "Y:\Industrie\Situation Affaire supérieure à 250k€\Données_112163\Devis2.xlsx"

' Copie des données :
    Workbooks("Devis2.xlsx").Sheets("feuil2").Range("A1:P1000").Copy
    Workbooks("Générateur de bilan de comptes.xlsm").Activate
    Workbooks("Générateur de bilan de comptes.xlsm").Sheets("Devis2").Select
    Workbooks("Générateur de bilan de comptes.xlsm").Sheets("Devis2").Paste
    Workbooks("Générateur de bilan de comptes.xlsm").Sheets("Devis2").Range("A1").Select

 ' Fermeture de Devis2.xlsx :
    Workbooks("Devis2.xlsx").Close

S2:
Err.Clear
On Error GoTo S3

'__________________________________________________________________________________________________
' Ouverture de Devis3.xlsx :
     Workbooks.Open "Y:\Industrie\Situation Affaire supérieure à 250k€\Données_112163\Devis3.xlsx"

' Copie des données :
    Workbooks("Devis3.xlsx").Sheets("feuil2").Range("A1:P1000").Copy
    Workbooks("Générateur de bilan de comptes.xlsm").Activate
    Workbooks("Générateur de bilan de comptes.xlsm").Sheets("Devis3").Select
    Workbooks("Générateur de bilan de comptes.xlsm").Sheets("Devis3").Paste
    Workbooks("Générateur de bilan de comptes.xlsm").Sheets("Devis3").Range("A1").Select

 ' Fermeture de Devis3.xlsx :
    Workbooks("Devis3.xlsx").Close

S3:
Err.Clear
On Error GoTo S4

'__________________________________________________________________________________________________
' Ouverture de Devis4.xlsx :

Workbooks.Open "Y:\Industrie\Situation Affaire supérieure à 250k€\Données_112163\Devis4.xlsx"

' Copie des données :
    Workbooks("Devis4.xlsx").Sheets("feuil2").Range("A1:P1000").Copy
    Workbooks("Générateur de bilan de comptes.xlsm").Activate
    Workbooks("Générateur de bilan de comptes.xlsm").Sheets("Devis4").Select
    Workbooks("Générateur de bilan de comptes.xlsm").Sheets("Devis4").Paste
    Workbooks("Générateur de bilan de comptes.xlsm").Sheets("Devis4").Range("A1").Select

 ' Fermeture de Devis4.xlsx :
    Workbooks("Devis4.xlsx").Close

        Application.DisplayAlerts = True

S4:
Err.Clear
     Sheets("Bilan comparatif général").Select

 End Sub

Le sujet est résolu.

Cordialement,

Maxime.

Rechercher des sujets similaires à "gestion erreurs goto etiquette"