Construction d'un module

Le
Joël André
Bonjour,
Sous Excel2000, un classeur crée en automatique par vba un nouveau classeur.
La construction des feuilles de travail, de leurs contenus, des userforms et
de leurs contenus ne pose aucun problème grâce à vous tous et à michdenis en
particulier.
Je me heurte à celle du module.
J'ai adapté une procédure issue de la base de données d'explication de
Microsoft pour insérer du code à partir d'une plage nommée sous Excel2000.
Le code à insérer provient d'un classeur tiers par la méthode 'copier' et à
été collé en mode texte seul sur la "feuil2" du classeur constructeur.
Puis, en suivant l'explication, j'ai sélectionné la plage intéressée qui
contient le code macro. Dans le menu Insertion, cliqué sur Nom, cliqué sur
Définir et tapé le nom de la plage "MacrosModule1".
Dans le seul module du classeur constructeur, j'ai tapé le code suivant :

Sub ConstruitModule1()
Dim cl As Variant
Code as String

Code = ""
For Each cl In Range("macrosmodule1")
Code = Code & cl.Value & Chr$(10)
Next

Set FormeUtile =
NouveauClasseur.VBProject.VBComponents.Add(vbext_ct_StdModule)
.
.

End Sub

L'objet NouveaClasseur est créé en première macro et utilisé dans toutes les
autres macros, sans problème.
Toute la construction du nouveau classeur s'effectue sans anomalie sauf sur
cette macro, appelée en dernier.
Et ça plante à chaque fois avec le message "Erreur d'exécution 1004, la
méthode 'Range' de l'objet '_Global' à échoué'.

Merci pour votre temps et vos idées.

Joël André
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
michdenis
Le #22201881
Bonjour,

| Et ça plante à chaque fois avec le message
| "Erreur d'exécution 1004, la méthode
| 'Range' de l'objet '_Global' à échoué'.

Est-ce que tu es sûr que ce bout de code faire référence
au bon classeur où le nom a été créé. Pourquoi ne pas
mettre la référence complète, quelque chose comme :

With Workbooks("NomDuClasseur.xls").Worksheets("NomFeuille")
For Each cl In .Range("macrosmodule1")
Code = Code & cl.Value & Chr$(10)
Next
End With

P.S - Ne pas oublier le point devant l'expression "Range"




"Joël André"
Bonjour,
Sous Excel2000, un classeur crée en automatique par vba un nouveau classeur.
La construction des feuilles de travail, de leurs contenus, des userforms et
de leurs contenus ne pose aucun problème grâce à vous tous et à michdenis en
particulier.
Je me heurte à celle du module.
J'ai adapté une procédure issue de la base de données d'explication de
Microsoft pour insérer du code à partir d'une plage nommée sous Excel2000.
Le code à insérer provient d'un classeur tiers par la méthode 'copier' et à
été collé en mode texte seul sur la "feuil2" du classeur constructeur.
Puis, en suivant l'explication, j'ai sélectionné la plage intéressée qui
contient le code macro. Dans le menu Insertion, cliqué sur Nom, cliqué sur
Définir et tapé le nom de la plage "MacrosModule1".
Dans le seul module du classeur constructeur, j'ai tapé le code suivant :

Sub ConstruitModule1()
Dim cl As Variant
Code as String

Code = ""
For Each cl In Range("macrosmodule1")
Code = Code & cl.Value & Chr$(10)
Next

Set FormeUtile NouveauClasseur.VBProject.VBComponents.Add(vbext_ct_StdModule)
....
....

End Sub

L'objet NouveaClasseur est créé en première macro et utilisé dans toutes les
autres macros, sans problème.
Toute la construction du nouveau classeur s'effectue sans anomalie sauf sur
cette macro, appelée en dernier.
Et ça plante à chaque fois avec le message "Erreur d'exécution 1004, la
méthode 'Range' de l'objet '_Global' à échoué'.

Merci pour votre temps et vos idées.

Joël André
Joël André
Le #22206871
Merci michdenis,

Ca marche et cela m'a permis de comprendre mes erreurs.
Chaleureux remerciements.

Joël André

"michdenis" uW$
Bonjour,

| Et ça plante à chaque fois avec le message
| "Erreur d'exécution 1004, la méthode
| 'Range' de l'objet '_Global' à échoué'.

Est-ce que tu es sûr que ce bout de code faire référence
au bon classeur où le nom a été créé. Pourquoi ne pas
mettre la référence complète, quelque chose comme :

With Workbooks("NomDuClasseur.xls").Worksheets("NomFeuille")
For Each cl In .Range("macrosmodule1")
Code = Code & cl.Value & Chr$(10)
Next
End With

P.S - Ne pas oublier le point devant l'expression "Range"




"Joël André" discussion :

Bonjour,
Sous Excel2000, un classeur crée en automatique par vba un nouveau
classeur.
La construction des feuilles de travail, de leurs contenus, des userforms
et
de leurs contenus ne pose aucun problème grâce à vous tous et à michdenis
en
particulier.
Je me heurte à celle du module.
J'ai adapté une procédure issue de la base de données d'explication de
Microsoft pour insérer du code à partir d'une plage nommée sous Excel2000.
Le code à insérer provient d'un classeur tiers par la méthode 'copier' et
à
été collé en mode texte seul sur la "feuil2" du classeur constructeur.
Puis, en suivant l'explication, j'ai sélectionné la plage intéressée qui
contient le code macro. Dans le menu Insertion, cliqué sur Nom, cliqué sur
Définir et tapé le nom de la plage "MacrosModule1".
Dans le seul module du classeur constructeur, j'ai tapé le code suivant :

Sub ConstruitModule1()
Dim cl As Variant
Code as String

Code = ""
For Each cl In Range("macrosmodule1")
Code = Code & cl.Value & Chr$(10)
Next

Set FormeUtile > NouveauClasseur.VBProject.VBComponents.Add(vbext_ct_StdModule)
....
....

End Sub

L'objet NouveaClasseur est créé en première macro et utilisé dans toutes
les
autres macros, sans problème.
Toute la construction du nouveau classeur s'effectue sans anomalie sauf
sur
cette macro, appelée en dernier.
Et ça plante à chaque fois avec le message "Erreur d'exécution 1004, la
méthode 'Range' de l'objet '_Global' à échoué'.

Merci pour votre temps et vos idées.

Joël André


Publicité
Poster une réponse
Anonyme