Gestions des erreurs

Egruat

XLDnaute Occasionnel
Bonjour,

Voici les actions de ma macro:
. Je demande à l'utilisateur de compléter un formulaire dans lequel il renseigne des champs (Champ1, Champ2, etc...)
. Je vais chercher l'adresse d'un fichier grâce à ces champs, du type C:\Champ1\dossier TEST\Champ2test.xls
Jusque là ok pas de problème.

Mais, si l'utilisateur se trompe et que l'adresse du fichier n'existe pas, j'aimerai gérer l'erreur avec un message MsgBox ("recommencer").

Quelle est la façon la plus simple ? Et où dans la macro doit-on placer cette gestion d'erreur ?

Merci bien !!
 

monsac

XLDnaute Nouveau
Re : Gestions des erreurs

@Pierrot93 Dsl j'ai un leger retard dans les réponses... J'ai crée un fil de discussion cette semaine mais sans succes sur la question...
Ton idee fonctionne mais comme pour celle de Robert qu'il y ait une erreur ou non la macro va directement au fichier suivant... Incompréhensible !
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Gestions des erreurs

Bonjour le fil, bonjour le forum,

Désolé Monsac mais j'ai pas envie de recréer ton environnement (Dosiers, fichiers factices, etc...) pour tester. Très étonné que ça marche pas. Tant pour la simplification vu que nomdufichier = xfeuille(i) & ".xls" donc onglet REGION1 pour fichier REGION1.xls. Comme pour la gestion des erreurs...
As-tu fais tourner le code pas à pas pour tenter de comprendre ce qui ne va pas ?
 

monsac

XLDnaute Nouveau
Re : Gestions des erreurs

@Robert Merci de m'aider je sais que ce n'est pas évident sans mes fichiers... Etant en entreprise je ne peux pas les transmettre...
Oui j'utilise le code pas à pas : quand le fichier est présent, il s'ouvre puis passe à la ligne suivant "If" et à ce moment la procédure en cas d'erreur commence alors qu'elle ne devrait pas. Donc les lignes du code avec copier/coller ne s'effectuent pas... Je me demande s'il ne faut pas rajouter "Else" pour que dans la condition ou il n'y a pas d'erreur le code continue de facon "normale".
En cas d'erreur en tout cas ca fonctionne ! Mais un peu trop apparement ! :)
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Gestions des erreurs

Bonjour le fil, bonjour le forum,

@Monsac,
J'ai créé un dossier TEST sur mon bureau, j'ai enregistré dans ce dossier un fichier que j'ai nommé REGION1.xls, j'ai remplacé dans le code la ligne :
Code:
Workbooks.Open Filename:="C:\Documents and Settings\monsac\Bureau\TEST\" & nomdufichier 'ERREUR quand fichier absent
par :
Code:
Workbooks.Open Filename:="C:\Documents and Settings\Administrator\Desktop\TEST\" & nomdufichier
je fait tourner le code et ça marche !!!! En tous cas, ça ouvre REGION1.xls et ça passe bien à la ligne suivante On Error GoTo 0. Le plantage vient après mais c'est normal puisque mon fichier n'a que 3 onglets...

Tu me dis : "le fichier s'ouvre et après ça plante". Si tu utilises le code que je t'ai donné sans l'avoir modifié ce n'est pas possible car la condition est If ERR <> 0 Then. Donc si le fichier s'est ouvert il ne peut pas y avoir d'erreur... Je pense que tu as utilisé le code que je t'ai proposé en le modifiant ou dans un aute contexte. Il faudrait que tu renvoies le code car, je me répète, celui que je t'ai proposé fonctionne...
 

monsac

XLDnaute Nouveau
Re : Gestions des erreurs

Robert, c'est gentil de recreer mon dossier sur ton ordi...

Voici exactement le code que j'utilise, en réalitée je passe pas par des dossier "REGION" c'était pour illustrer mon exemple et raccourcir le code... Bref normalement ce n'est pas à ce niveau qu'il devrait y avoir le probleme... C'est la ligne suivant l'ouverture. Je suis d'accord avec ta logique sans erreur le If ne devrait pas "marcher" et le code devrait continuer normalement !

Code:
Sub Import()
'
' Import Macro
' Pour importer
'
' Touche de raccourci du clavier: Ctrl+Maj+Q
'
'######################################### DECLARATIONS #######################################
    
Dim xfeuille(32) As String

xfeuille(0) = "00"
xfeuille(1) = "01 IDF EST"
xfeuille(2) = "03 DRN OUEST"
xfeuille(3) = "04 Pays de Loire"
xfeuille(4) = "05 IDF Grands Chantiers"
xfeuille(5) = "10 DIL"
xfeuille(6) = "11 Bagnols sur Ceze"
xfeuille(7) = "12 GCOA"
xfeuille(8) = "16 Souterrains"
xfeuille(9) = "19 Grands Projets"
xfeuille(10) = "22 Barrages"
xfeuille(11) = "29 Travaux Maritimes & Fluviaux"
xfeuille(12) = "30 Direction Regions Sud"
xfeuille(13) = "31 Midi Pyrenees"
xfeuille(14) = "32 Cote d'Azur GC"
xfeuille(15) = "33 LR Perpignan"
xfeuille(16) = "34 Provence"
xfeuille(17) = "35 LR Montpellier"
xfeuille(18) = "36 Materiaux SO"
xfeuille(19) = "37 Cote d'Azur"
xfeuille(20) = "39 Rhone Alpes"
xfeuille(21) = "40 Dir Afrique"
xfeuille(22) = "41 Export"
xfeuille(23) = "50 Dir Dev Durable"
xfeuille(24) = "51 EBL"
xfeuille(25) = "90 DGR"
xfeuille(26) = "700 Garasso TP"
xfeuille(27) = "300 Coteg"
xfeuille(28) = "710 Sirfia"
xfeuille(29) = "800 Lachaux"
xfeuille(30) = "900 Singlande"
xfeuille(31) = "6200 Bianco"
xfeuille(32) = "82000 Cameroun"


Dim nomdufichier As String
    
    For i = 0 To 32
  
    
    Select Case i
    
    Case 0
        nomdufichier = "Ets00-FGX.xls"
        
    Case 1
        nomdufichier = "Ets01-FGX IDF EST.xls"
    
    Case 2
        nomdufichier = "Ets03-FGX DRN OUEST.xls"
        
    Case 3
        nomdufichier = "Ets04-FGX Pays de Loire.xls"
        
    Case 4
        nomdufichier = "Ets05-FGX IDF Grands Chantiers.xls"
        
    Case 5
        nomdufichier = "Ets10-FGX DIL.xls"
    
    Case 6
        nomdufichier = "Ets11-FGX Bagnols sur Ceze.xls"
        
    Case 7
        nomdufichier = "Ets12-FGX GCOA.xls"
        
    Case 8
        nomdufichier = "Ets16-FGX Souterrains.xls"
        
    Case 9
        nomdufichier = "Ets19-FGX Grands Projets.xls"
        
    Case 10
        nomdufichier = "Ets22-FGX Barrages.xls"
        
    Case 11
        nomdufichier = "Ets29-FGX Travaux Maritimes & Fluviaux.xls"
        
    Case 12
        nomdufichier = "Ets30-FGX Direction Regions Sud.xls"
        
    Case 13
        nomdufichier = "Ets31-FGX Midi Pyrenees.xls"
        
    Case 14
        nomdufichier = "Ets32-FGX Cote d'Azur GC.xls"
        
    Case 15
        nomdufichier = "Ets33-FGX LR Perpignan.xls"
        
    Case 16
        nomdufichier = "Ets34-FGX Provence.xls"
        
    Case 17
        nomdufichier = "Ets35-FGX LR Montpellier.xls"
        
    Case 18
        nomdufichier = "Ets36-FGX Materiaux SO.xls"
        
    Case 19
        nomdufichier = "Ets37-FGX Cote d'Azur.xls"
        
    Case 20
        nomdufichier = "Ets39-FGX Rhone Alpes.xls"
        
    Case 21
        nomdufichier = "Ets40-FGX Dir Afrique.xls"
        
    Case 22
        nomdufichier = "Ets41-FGX Export.xls"
        
    Case 23
        nomdufichier = "Ets50-FGX Dir Dev Durable.xls"
        
    Case 24
        nomdufichier = "Ets51-FGX EBL.xls"
        
    Case 25
        nomdufichier = "Ets90-FGX DGR.xls"
        
    Case 26
        nomdufichier = "Ets700-FGX Garasso TP.xls"
        
    Case 27
        nomdufichier = "Ets300-FGX Coteg.xls"
        
    Case 28
        nomdufichier = "Ets710-FGX Sirfia.xls"
        
    Case 29
        nomdufichier = "Ets800-FGX Lachaux.xls"
        
    Case 30
        nomdufichier = "Ets900-FGX Singlande.xls"
        
    Case 31
        nomdufichier = "Ets6200-FGX Bianco.xls"
        
    Case 32
        nomdufichier = "Ets82000-FGX Cameroun.xls"
        
    
    End Select
   
   

    '???????????? ON ERROR  ????????????????
    
'###################################### DEBUT DU CODE #########################################
    
'Importation des données types 2

On Error Resume Next
    Workbooks.Open Filename:="C:\Documents and Settings\monsac\Bureau\TEST\" & nomdufichier 'ERREUR quand fichier absent
    If Err <> 0 Then
        Err = 0
        GoTo suite
    End If
    On Error GoTo 0
    Sheets(4).Range("AZ112:AZ142").Selection.Copy
    Windows("Import Frais G").Sheets(xfeuille(i)).Range("C12").PasteSpecial Paste:=xlValues
    
    Windows(nomdufichier).Sheets(4).Range("BB112:BB142").Copy
    Windows("Import Frais G").Sheets(xfeuille(i)).Range("E12").PasteSpecial Paste:=xlValues
    
    Windows(nomdufichier).Sheets(4).Range("BD112:BD142").Copy
    Windows("Import Frais G").Sheets(xfeuille(i)).Range("G12").PasteSpecial Paste:=xlValues
    
    Windows(nomdufichier).Sheets(4).Range("BH112:BH142").Copy
    Windows("Import Frais G").Sheets(xfeuille(i)).Range("I12").PasteSpecial Paste:=xlValues
    
    'Importation des données types 8
    
    Windows(nomdufichier).Sheets(10).Range("AZ112:AZ142").Copy
    Windows("Import Frais G").Sheets(xfeuille(i)).Range("K12").PasteSpecial Paste:=xlValues
    
    Windows(nomdufichier).Sheets(10).Range("BB112:BB142").Copy
    Windows("Import Frais G").Sheets(xfeuille(i)).Range("M12").PasteSpecial Paste:=xlValues
    
    Windows(nomdufichier).Sheets(10).Range("BD112:BD142").Copy
    Windows("Import Frais G").Sheets(xfeuille(i)).Range("O12").PasteSpecial Paste:=xlValues
    
    Windows(nomdufichier).Sheets(10).Range("BH112:BH142").Copy
    Windows("Import Frais G").Sheets(xfeuille(i)).Range("Q12").PasteSpecial Paste:=xlValues


'Importation date

    Windows(nomdufichier).Activate
        Sheets(1).Activate
        Range("C112").Select
        Selection.Copy
    Windows("Import Frais G").Activate
        Sheets(xfeuille(i)).Select
        Range("A1").Select
        Selection.PasteSpecial Paste:=xlValues


    Windows(nomdufichier).Close
    
suite:

  
  Next i
  
End Sub
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Gestions des erreurs

Bonsoir le fil, bonsoir le forum,

@Monsac,

Ton code ne semble pas déceler d'erreur. Je l'ai repassé à la brosse épaisse (j'ai pas retrouvé mon peigne fin...) mais tout semble clair. Désolé, je ne vois pas pourquoi ça plante...
J'ai refait un test en créant une fichier factice Ets00-FGX.xls que j'ai mis dans un dossier TEST sur mon bureau et en modifiant la ligne :
Workbooks.Open Filename:="C:\Documents and Settings\monsac\Bureau\TEST\" & nomdufichier par le chemin d'accès conduisant au dossier TEST sur mon bureau et, même constat que dans mon post précédent : Le premier fichier s'ouvre, Err = 0 pour i = 0 , les copier/coller se font. Évidemment, ça plante peu après car je ne dispose pas des bons fichiers.

Est-tu absolument sûr que le fichier s'ouvre ?

 

monsac

XLDnaute Nouveau
Re : Gestions des erreurs

Bonsoir le fil, bonsoir le forum,

@Monsac,

Ton code ne semble pas déceler d'erreur. Je l'ai repassé à la brosse épaisse (j'ai pas retrouvé mon peigne fin...) mais tout semble clair. Désolé, je ne vois pas pourquoi ça plante...
J'ai refait un test en créant une fichier factice Ets00-FGX.xls que j'ai mis dans un dossier TEST sur mon bureau et en modifiant la ligne :
Workbooks.Open Filename:="C:\Documents and Settings\monsac\Bureau\TEST\" & nomdufichier par le chemin d'accès conduisant au dossier TEST sur mon bureau et, même constat que dans mon post précédent : Le premier fichier s'ouvre, Err = 0 pour i = 0 , les copier/coller se font. Évidemment, ça plante peu après car je ne dispose pas des bons fichiers.

Est-tu absolument sûr que le fichier s'ouvre ?


Bonjour Robert,
Merci tout de même ! Je suis certain qu'il s'ouvre puisque en utilisant le code pas à pas dans VBA, je vois les macro/modules de mon fichier "Ets...xls" s'ouvrir avec en plus l'onglet qui apparait dans ma barre des taches... Je vais essayer avec un autre ordi pour voir sinon je vais tester d'autres méthodes que l'on m'a donné !
Bonne journee !
 

monsac

XLDnaute Nouveau
Re : Gestions des erreurs

Re Robert, Bonjour Si...

Merci à vous deux pour votre aide, c'est donc la solution de Si... qui fonctionne, quand à celle de Robert je ne comprends toujours pas pourquoi elle ne fonctionne pas avec mon ordi... L'essentiel c'est que mon code fonctionne enfin !!
Bonne journee !

Code:
Dim Nom As String
    Set filesys = CreateObject("Scripting.FileSystemObject")
     Nom = "C:\Documents and Settings\monsac\Bureau\TEST\" & nomdufichier
     If filesys.FileExists(Nom) Then

        Workbooks.Open Filename:="C:\Documents and Settings\mdewaubert\Bureau\TEST\" & nomdufichier
'BLABLA... le reste du code à executer...
End If
 

Statistiques des forums

Discussions
312 325
Messages
2 087 306
Membres
103 513
dernier inscrit
adel.01.01.80.19