Creation de macro dans Worksheets via macro

Imon

XLDnaute Nouveau
Bonjour à toutes et à tous

Habitué à venir trouver des solutions à mes problèmes sur XLD, je m'adresse cette fois-ci à vous car, une fois n'est pas coutume, je n'ai pas trouvé mon bonheur.

Pour les données matériels, je suis sous Seven et XP et j'utilise excel 2010 et 2003 (2 ordis : 1 Seven avec 2010 et 2003 ; 1 XP avec 2003), mon souci ayant lieu uniquement sous 2003 sur les 2 plateformes.

Le code qui me pose problème a pour but d'écrire une macro de mise à jour automatique dans une feuille du classeur concernée. Il (le code) fait partie d'une marco, elle même executée depuis une macro-mère qui gère l'ensemble du programme.

Lorsque la sous-macro est éxécutée seule tout se passe bien. En revanche lorsqu'elle est fait partie du processus de la macro-mère Excel plante. Je n'ai pas de message d'erreur de la macro, uniquement Excel qui se ferme et essaye d'envoyer un rapport de plantage (qui ne passe pas à cause de la configuration du proxy auquel je n'ai pas accès).

Les lignes de codes qui engendre l'arret sont les suivantes :
Code:
Dim l, lecodedebase(1 To 52)
Dim pagerapport As VBComponent
[...]
Set pagerapport = ActiveWorkbook.VBProject.VBComponents(Worksheets("Rapport").CodeName)
    With pagerapport.CodeModule
        For l = 1 To 52
            .InsertLines l, lecodedebase(l)
        Next
    End With

Dans les deux versions d'excel et sur les deux plateformes la référece "M$ Visual basics for application extensibility 5.3" est utilisée, et l'accès aux modification du projet VBA est approuvé (faire confiance aux projet VBA sous 2003).

J'ai utilisés un tableau (comme dans le fichier joint) ou du texte pour la variable contenant le code à ecrire mais sans succès.

Enfin lorsque la macro mère exécute uniquement la sous-macro en question cela se passe bien, en revanche lorsque la programme s'execute de A à F (comme il s'arrète en cours je ne peux pas encore dire de A à Z), Excel2003 plante. Je vous joint donc le fichier complet, qui j'espère contient assez de commentaires pour être compréhensible.

La macro-mère s'appelle "general", la sous macro qui bug s'appelle "debutcreationmacro". Toutes les variables sont définies en option explicit.
Pour lancer la macro général, un bouton est présent dans la page "instructions". Des données sont pré-rentrées, vous pouvez donc ignorer les 2 premiers msgbox.

J'espère ne pas vous avoir embrouillé et je vous remercie d'avance pour le temps que vous pourez consacrer à mon problème.

Simon
 

Pièces jointes

  • suivi des matières premieres.xls
    115 KB · Affichages: 67

Imon

XLDnaute Nouveau
Re : Creation de macro dans Worksheets via macro

Après quelques investigations supplémentaires :
En se passant de la référence "M$ Visual [...] 5.3" et en définissant ma varible comme 'Objet' et non comme 'VBComponent', hé bien j'obtient exactement les mêmes résultats. (Mais je peux me passer d'une référence, c'est déjà ça).

Et comme j'ai oublié de le mentionner avant, la sécurité est au plus faible.

Après il peut s'agir des différences des "Object Library" entre 2003 et 2010, ou bien des capacités de traitement de chaque logiciel (le matériel est identique je le rappel), mais là je suis bien incapable de savoir quoi faire. Je ne connais pas d'autre methode pour inserer du code.
 

vmax01

XLDnaute Occasionnel
Re : Creation de macro dans Worksheets via macro

bonjour le forum et bonjour imon.

peut etre une solution peut etre une erreur de compilation programme.

j'avai eu un problème comma ça et j'avais trouvé la soluc sur un autre forum.

voila ce que j'avai fait....

À partir de la fenêtre VBA, barre des menus / outils / références /
et tu décoches les références qui sont marquées : Manquantes


bonne journée a tous.
 

Imon

XLDnaute Nouveau
Re : Creation de macro dans Worksheets via macro

Bonjour vmax01

Merci pour ta réponse.

Malheureusement ce n'est pas cela. Je n'ai pas de référence marquée manquante dans VBA.
Et depuis que j'ai réussi à me passé de la référence "M$ visual basics for application extensibility 5.3" je n'ai d'ailleurs plus que les références cochées par défaut.
 

Imon

XLDnaute Nouveau
Re : Creation de macro dans Worksheets via macro

Problème identifié et résolu :

Il provenait sans grande surprise du code que j'insère qui est un code evenmentiel. L'ecriture de ce code empechait toute action sur la feuille en question, malgré les "application.EnableEvents = False".

La supression de tous les "Activate" et "Select" a permis de faire tourner le code un peu mieux. Mais il y a un "select" que je n'ai pas su supprimer (pour cause de copie partielle en format image de la feuille) donc retour à la case départ.

Du coup la solutions à laquelle j'aurais du penser depuis le début a fini par me venir à l'esprit : stocker dans une variable tableau dynamique (avec Redim) (en texte ça aurait aussi marché) mon code au fur et à mesure qu'il se génère. Et l'écrire uniquement à la toute fin du programme.

Et du coup maintenant ça marche.
En esperant que ça puisse servir à d'autre qui auront également voulu de se compliquer la vie.
 
Dernière édition:

Statistiques des forums

Discussions
312 234
Messages
2 086 467
Membres
103 226
dernier inscrit
smail12