Macro qui fait planter SolidWorks

Bonjour,

ce matin, revenant de vacances, j'ai eu la stupéfaction de voir quand lançant une de mes macros, Solidworks plantait.

 

C'est assez embetant, et d'ailleurs pas la première fois que ça se produit (D'ou la raison que je fais des sauvegardes le plus régulièrement possible, mais malgré celà la sauvegarde date un peu..) [Je précise que j'ai essayé sur deux postes, pareil pour les deux. (SW2013 Win7 64 pro)]

Donc je ne comprend vraiment pas, quand j'essaye de lancer ou d'éditer la macro, SolidWorks génère un rapport d'erreur et ce ferme (Et ceci à chaque fois.. donc impossible de récuperer mon code :/)

 

Je ne peux malheureusement pas vous donner la macro, pour des soucis de confidentialité.

 

Je ne sais donc pas si vous avez déjà eu affaire à sa ou si vous avez une solution qui pourrait me permettre de récuperer mon code (Et pourquoi pas d'éviter ceci..)

Salut,

Pourquoi tu ne parviens pas à récupérer ton code ? Tes fichiers .swp sont supprimés ?

Ce sera difficile de t'aider sans code. Essaye tout de même de dous donner la liste des actions réaliser par ta macro.

A plus.

1 « J'aime »

La réponse est simple

Je ne peux plus du tout ouvrir le fichier .swp (Il existe .. mais quand je vais sur "Macro -> Exécuter, ou Editer" alors solidWorks Plante et se ferme) Impossible donc de récuperer le code.

C'est comme si le fichier est corrompu, mais qu'est-ce qui a pu provoquer ça ? J'était en vacances et avant que je parte le fichier fonctionnait très bien..

 

Donc c'est selon moi non pas un soucis au niveau du code, mais du fichier .swp en lui-même

Salut.

 

Tu as tenté d'en faire une copie (CTRL+c, CTRL+v) et d'ouvrir la copie ?

C'est idiot comme principe mais défois ça fonctionne

Doublon

Oui j'ai essayé ...

J'ai également mis le fichier sur le réseau et j'ai tester sur un autre PC, résultat simillaire

Bonjour,

Par hasard, il n'y a eu aucune mise à jour des ordinateurs pendant ton absence ? Je pense toujours à la fameuse mise à jour : http://www.mycadblog.fr/problemes-solidworks-rencontres-apres-la-mise-a-jour-de-microsoft/

2 « J'aime »

Bonjour,

c'est peux être l'editeur de macro qui a un problème.

Est ce que la création d'une nouvelle macro fonctionne ?

1 « J'aime »

verifie si tu as eu des mise a jours log depuis ta derniere macro qui fonctionnait et regarde la date

si tu peux via windaude te remettre en config a la derniere date ou fonctionnait ta macro

je pense que tu aura resolu ton probleme

voir ce lien entre autre

http://www.leguide3d.com/profiles/blogs/alerte-technique-conflit-avec-la-mise-jour-windows-kb3072630

@+

Un seul fichier est concerné ?

Merci de vos réponses,

Pas de traces de cette mise à jour installé.

 

Concernant l'éditeur de macro, je peux ouvrir et éditer d'autre macro sans problème.

 

Et je me rappelle déjà avoir eu ce problème il y a un certain temps, ou tout à coup la macro ne fonctionnais plus.

 

Concernant la réstauration, ça m'étonnerais que le service info soit d'accord ..

Et oui c'est actuellement le seul fichier concerné, mais comme je l'ai dit ça m'est déjà arriver une ou deux fois au par-avant.

Salut,

Une solution qui pourrait marcher :

Ouvrir la macro dans une autre version de SolidWorks pour la ré-enregistrer en .bas ou .swp, et parfois elle marche à nouveau sur l'autre version.

4 « J'aime »

Sans voir la macro ni connaitre son fonctionnement, ça risque d'être compliqué de rentrer plus en amont.

 

Parcontre, peut-être as tu des pré-requis qui ne sont pas fait ? Par exemple, sur une de mes macros excel, je demande un dévérouillage des feuilles. Si elles ne sont pas vérouillées, j'ai l'ensemble qui bug.

Ou alors tu as fait une boucle infinie sans le vouloir avec une option non prévu ?

 

Ce qui est plus étrange, c'est la fermeture lors de l'édition.

Tu as essayée de l'ouvrir avec un éditeur de texte ?

Avec l'éditeur de texture ça fonctionne ! (Enfin bon c'est illisible mais le fichier s'ouvre).

ça peut venir du code, mais j'ai des doutes, car le problème serait apparu en codant et je pourrais toujours l'éditer.

Est-ce qu'il y a un risque quand SolidWorks ouvre la macro qu'il la corrompe sans faire exprès ? Car il s'agirait ici d'un bug.. (Car la plupart des macros qui ne m'ont jamais poser problème sont en lecture seule, or ici comme je travaillais dessus elle ne l'était pas).

1 « J'aime »

Bonjour,

On a eu le meme soucis chez nous...

La cause avait été la suivante: Mon collègue avait rajout un dossier avec espace qui avait fait planté la macro.

Pour eviter cette inconvenient de mon coté j'ai toujours la macro dans une carnet, ce qui nous a permit de réécrir la macro et de comprendre sont fonctionnement.

Donc tous ce que je peux vous dire c'est que si la macro a planté pendant le fonctionnement de solidworks, meme en redemarrant ou en la copié vous avez peu de rique de pouvori le reutilisé chose vecu...Nous on avait du toute la refaire

Ou peut etre l'idee de @.PL

Mais conseille recopié toujours votre macro dans un word et imprimer la sa peu toujours sauver dans ces cas la :)
 

2 « J'aime »

C'est ce que je suis en train de me dire depuis ce matin @Centor. Il faut vite que je les sauves en fichier texte quelque part ^^

 

chaud quand même l'histoire du dossier avec un espace qui fait tout planter !

Merci,

effectivement je fais des sauvegardes, mais la je n'avais pas eu de soucis depuis un moment et j'ai perdu quelques jours de travail.

 

Bref, j'ai donner le fichier macro à .PL, il me dira si elle s'ouvre sur SW2015.

 

En attendant sa réponse, je vous remercie d'ores et déjà.

2 « J'aime »

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.

 

 

1 « J'aime »

J'ai réussi à l'ouvrir sous SW 2014, j'ai renvoyé le fichier.

Si besoin je peux copier-coller le code pour refaire la macro !

Très intéressant @caronmaxime

Il serait peut-être plus judicieux de faire une tutoriel ?

http://www.lynkoa.com/tutorial/create

Car malheureusement, les pages du forum n'acceptent pas la msie en forme donc on ne voit pas ce qui est souligné !