Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Construction d'un module

2 réponses
Avatar
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é

2 réponses

Avatar
michdenis
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é" a écrit dans le message de groupe de 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é
Avatar
Joël André
Merci michdenis,

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

Joël André

"michdenis" a écrit dans le message de news:
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é" a écrit dans le message de groupe de
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é