Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Gestion des erreurs

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Astyanax

XLDnaute Occasionnel
[Résolu] Gestion des erreurs

Bonjour à tout le forum,
j'ai un problème dans une macro Excel et j'aimerais le résoudre au mieux et au + simple, c'est pour cela que je vous demande vos conseils.
J'ai une macro de lancement qui me lance successivement d'autres macros dont l'une d'elles, et c'est une des premières, vient récupérer un fichier à un endroit précis.
Bien sur, le chemin n''est pas toujours le même et il m'est retourné une erreur qui se répercute sur les macros suivantes.
Je tiens à conserver le chemin dans la macro car dans la majorité des cas, le chemin est correct.
Ce que j'aimerais, c'est signaler l'erreur (c'est déjà fait par un msgbox) et sortir proprement de la macro de lancement afin de corriger si je le désire le chemin dans la macro concernée sans avoir la fenêtre de deboguage.
Je vous remercie de me répondre si vous avez des solutions simples
Je vous souhaite un excellent WE
Astyanax
 
Dernière édition:
Re : Gestion des erreurs

Bonjour,

Sans voir ta macro c'est moins facile.
Essaie de placer l'instruction END après ta boite à message.

si pb n'hésite pas.
 
Re : Gestion des erreurs

Bonjour Astyanax,

Une première approche : s'il y a erreur, le premier message d'erreur pourrait-être suivi d'un autre message du style :

' Message pour la prise de décision de sortir
Reponse = MsgBox("voulez sortir de la macro ?", vbYesNo + vbDefaultButton1, "TRAITEMENT DE L'ERREUR")
If Reponse = 6 Then Exit Sub ' 6 = Oui, 7 = Non

Cordialement

Bernard
 
Re : Gestion des erreurs

Salut
je comprends pas bien ton but : pourquoi tu veux gérer une erreur ?
Ne serait-il pas mieux de tester si le chemin/fichier est valide ?
Il est valide tu ouvres ton fichier
la macro ne le trouve pas
X = msgbox ("le chemin " & chemin & " mauvais" & chr(13) & _
"le changer ? ", Vbyesno, "PB CHEMIN")
si oui => input box et on recommence un cycle de test/ouverture*
sinon, on sort de la macro en transmettant une infos (variable globale, ou sub transformé en Function pour avoir un retour) TRUE on continue le programme principal, FALSE on exit sub

En principe, mes gestions d'erreur n'existent que parce que je ne peux pas gérer certaines (ou ça devient trop complexe), ou y penser (le programmeur sait ce qu'il attend et ne fait pas des manips "illogiques" par rapport à ce qu'il a programmé => pensez à Zézette dans "le père noël est une ordure" face à sa déclaration 😛 )
Donc, quand je connais l'erreur, je m'arrange pour qu'elle n'en soit plus une

A+
 
Re : Gestion des erreurs

Re-bonjour et merci pour les réponses.
je voulais "gérer" l'erreur de chemin pour sortir proprement de mes macros de : - recherche du répertoire contenant le fichier à ouvrir (nom du fichier changeant tous les mois)
- puis de ma macro de lancement

Aller avec l'explorateur Windows rechercher le chemin correct du répertoire pour ce PC, puis retourner dans la macro afin d'indiquer en dur le nouveau chemin et enfin enregistrer la macro modifiée avec ce nouveau chemin.

Si je peux tester la validité du chemin avant puis le changer dans la macro, je suis preneur mais je pense que je dois être obligé de sortir de la macro pour rechercher le nouveau chemin et le modifier. Ce qui oblige également à avoir une sortie propre.
Merci de me répondre.
Bon WE
Astyanax
 
Re : Gestion des erreurs

Salut
Je suppose que ta macro d'ouverture de fichier ne fait pas qu'ouvrir le fichier ?
Sinon, il vaudrait mieux ne pas faire un lancement de macro, alors que les instructions en macro principal serait plus efficace

dans le programme principal, tu peux tester le chemin
Code:
Sub Test()
Dim Chemin As String
Chemin = CurDir
 'Workbooks.Open ("C:\MyFolder\MyBook.xls")
Chemin = Dir(CurDir & "\" & "Nat.xls")
If Chemin = "" Then
'Traiement erreur
Else
'ouverture fichier ou lancement de la macro d'ouverture
End If
End Sub
Si le fichier Nat.xls existe dans le path par défaut, Chemin = "Nat.xls", sinon Chemin =""
Donc, si mon chemin est bon, je peux lancer la macro sinon, soit je peux arrêter la macro principale, soit je peux demander le chemin, remplacer celui d'origine par le nouveau, et recommencer le test de validité du chemin.

on peut toujours revenir au bureau pour rechercher le dosiier contenant le fichier et renseigner une boite input

Le seul soucis et que ne connaissant pas ta macro de démarrage du fichier, je ne sais pas ce que tu vas faire. Dans le cas de vérification du chemin dans la macro principale, il faut penser à transmettre le chemin valide à la macro d'ouverture

Autre possibilité, c'est renommer ta Macro_ouverture de sub en function

Dans le principal tu auras
if Macr😵uverture = False then Traitement de problème de chemin
avec
Code:
Function Macro_Ouverture() As Boolean
Dim Chemin As String
Chemin = CurDir
 'Workbooks.Open ("C:\MyFolder\MyBook.xls")
Chemin = Dir(CurDir & "\" & "Nat.xls")
If Chemin = "" Then
 Macro_Ouverture=false
exit function
Else
'ouverture fichier
Macro_Ouverture = true
End If
End Function
Mais tout dépend de tes habitudes de travail, et un bout de fichier centré sur le problème permettrait de te donner un code plus compréhensible, puisqu'il donnerait les bases de ta programmation

A+
 
Dernière édition:
Re : Gestion des erreurs

Bonsoir à tout le forum et merci Gorfael pour ta réponse.
Ta première solution m'intéresse.
Je fais un test du chemin du fichier si OK, je lance la macro de lancement pour les autres macros sinon je sors pour modifier le chemin.
Merci à tous et BON WE
Astyanax
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
0
Affichages
299
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…