Utilisation du gestionnaire d'erreur

Bonjour à tous!

Je suis débutant en VBA et j'essaye d'utiliser un gestionnaire d'erreur d'une façon spéciale, vous allez peut être trouvé ça facile mais je bloque depuis hier ^^

Voici une partie de mon code:

Windows("VLT_S100_Volume mis en distribution.xls").Activate

Range("B3").Select

Range(Selection, Selection.End(xlDown)).Select

Selection.Copy

Windows("SECTO_octobre2016 - Copie.xlsm").Activate

Sheets("VLT_S100").Select

Range("B6").Select

Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _

False, Transpose:=True

Windows("VLT_S100_Volume télérelevé.xls").Activate

Range("B2").Select

Range(Selection, Selection.End(xlDown)).Select

Selection.Copy

Windows("SECTO_octobre2016 - Copie.xlsm").Activate

Sheets("VLT_S100").Select

Range("B7").Select

Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _

False, Transpose:=True

Windows("VLT_S000_Volume mis en distribution.xls").Activate

Range("B3").Select

Range(Selection, Selection.End(xlDown)).Select

Selection.Copy

Windows("SECTO_octobre2016 - Copie.xlsm").Activate

Sheets("VLT_S000").Select

Range("B6").Select

Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _

False, Transpose:=True

Windows("VLT_S000_Volume télérelevé.xls").Activate

Range("B2").Select

Range(Selection, Selection.End(xlDown)).Select

Selection.Copy

Windows("SECTO_octobre2016 - Copie.xlsm").Activate

Sheets("VLT_S000").Select

Range("B7").Select

Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _

False, Transpose:=True

Voici le problème: en fonction des mois, il n'existe pas certains fichiers (par exemple juste le Volume distribution du secteur 100)

du coup le debogage se met en place.

J'ai bien testé un on error GoTo mais je n'arrive pas à exprimer mon idée: j'aimerai juste sauter un "bloc" (une partie de code) lorsque mon fichier n'existe pas (On error Resume Next marche mais continue sur ma page active et du coup fait n'importe quoi)

Bonsoir,

il vous faudrait utiliser On Error Resume Next avec juste la gestion de l'erreur éventuelle, car cette instruction demmande simplement à VBA de continuer "à tourner" malgré la détection d'une erreur, du coup dans votre cas, si vous demandez d'activer une feuille qui n'existe pas, l'instruction dit à VBA de continuer donc il effectue les lignes de codes prévues pour la feuille cherchée mais non trouvée sur la feuille actuellement active... Comme vous dites "...et du coup fait n'importe quoi"

Le principe serait celui là (attention ce n'est que mon idée ) et il faut le répéter pour chaque bloc :

On Error Resume Next ' on demmande à VBA de continuer à tourner même s'il détecte une erreur
Windows("VLT_S100_Volume mis en distribution.xls").Activate
If Err > 1 Then ' une erreur est détectée
    ' on ne fait rien ou bien on affiche un message signalant qu'il n'y a pas cette feuille
    MsgBox ("Le classeur : VLT_S100_Volume mis en distribution.xls n'existe pas.")
Else ' si pas d'erreur alors on fait ce qui suit
    Range("B3").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Windows("SECTO_octobre2016 - Copie.xlsm").Activate
    Sheets("VLT_S100").Select
    Range("B6").Select
    Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
    False, Transpose:=True
End If
On Error GoTo 0 ' on réinitialise les code d'erreur sinon Err resterait en valeur de l'erreur précedemment trouvée... ou un truc comme ça

En espérant que cela vous convienne.

@ bientôt

LouReeD

Excusez-moi de répondre que maintenant..

En faite c'est presque ça sauf que je m'en fiche si le fichier n'existe pas, je voudrais qu'il continue sans me prévenir.

Donc je voudrais obtenir un code du style

On error resume next
    if Err > 1 then 
       "continue to the next bloc"
    End if

Mes compétences en VBA sont trop basiques pour faire ça donc si vous avez une idée je suis tout ouïe

Bonsoir,

il suffit de supprimer la ligne

MsgBox ("Le classeur : VLT_S100_Volume mis en distribution.xls n'existe pas.")

du coup s'il y a erreur le code ne fait rien et continue sa "course"...

La ligne était juste là pour vous permettre de suivre ce qui se passe...

@ bientôt

LouReed

Rechercher des sujets similaires à "utilisation gestionnaire erreur"