Bonjour à tous,
Vos macros ne plantaient pas et maintenant Oui. C'est balot, voir facheux!
SolidWorks et plus largement Windows ne vous informe pas des changements qu'ils opèrent,
vos collègues, par manque de temps ne vous disent pas les détails de leurs mises à jour de ça et de ça d'autre.
Conclusion vos macros ne peuvent être fiable dans le temps!
Deux précautions à prendre à mon sens :
- la corruption du fichier contenant une macro >> c'est rare mais faire de l'archivage évolutif (évolutif = n°
de version dans noms des fichiers) : demander un Import à partir de l'interface de programmation "VBA",
régulièrement, ou, quand votre macro à pris du "poids". Un copier coller dans Word ne donne que du
texte mais pourquoi pas (bidouille).
- la macro n'a pas de gestion d'erreur >> utiliser au minimum les instructions "On error goto" ou "On error
resume next" (cliquer sur un mot clé de votre macro [ex : "error"], puis appuyer sur F1 afin d'obtenir de
l'aide local ou en ligne).
Un exemple de macros Excel avec un embryon de gestion d'erreur (mots soulignés):
Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error GoTo TraitementDErreur 'A placer en début de chaque procédure (événementielle ou pas)
'Masquer systématiquement la feuille "Paramètres"
Sheets("Paramètres").Visible = False
'Revenir au zoom de la feuille "Petit mode d'emploi" tel qu'en ouverture du fichier.
Sheets("Petit mode d'emploi").Activate
Range("A1:AI111").Select: ActiveWindow.Zoom = True: [A1].Select
'Revenir au zoom de la feuille "EVAL_GLOBALE_EXPLO2015" tel qu'en ouverture du fichier.
With Sheets("EVAL_GLOBALE_EXPLO2015")
.Activate
Range("A1:S30").Select: ActiveWindow.Zoom = True: [B6].Select
'Revenir à la visualisation tel qu'en ouverture du fichier.
[CTRL1] = 1: VisualiserEnseignement 'Visualiser tous les enseignements.
[CTRL2] = 1: VisualiserGroupe 'Visualiser le premier des groupes d'élèves.
'Forcer le mode "Saisie activée" tel qu'en ouverture de fichier.
.Unprotect
.Shapes("EtatSaisie").TextFrame.Characters.Text = "Saisie activée": [EtatDeLaSaisie] = True
.Protect
End With
'Enregistrer automatiquement le fichier avant sa fermeture.
ActiveWorkbook.Save
Exit Sub
TraitementDErreur: 'Etiquette
Stop 'Pour vérif
'au cas ou les feuilles auraient changer de nom par exemple,
'au cas ou ...
'le traitement des erreurs n'est pas programmé ici ...
End Sub
Si une ligne sous On Error GoTo TraitementDErreur est "merdique", elle entraîne une erreur lors de l'exécution de la macro, elle stoppe alors à l'instruction "Stop". Cela indique une erreur, c'est un premier pas.
Petite astuce pour localiser la ligne "merdique"> cliquer sur () pas à pas pour lancer la macro et la faire se dérouler > une trace jaune indique la ligne qui va être exécutée. Dès l'apparition de l'erreur l'exécution de la ligne merdique ne se fait pas et le déroulement se poursuit en dessous de l'étiquette TraitementDErreur: .
Le traitement d'erreur minima est un 'Stop' (mot clé) sous TraitementDErreur: . A partir de là vous pouvez récupérer le numéro de l'erreur et vous en servir pour traiter l'erreur, pour avertir, pour ....
Bonne journée.