bonjour
je travaille sur un fichier dont le code fait appel à une macro
(affecter_boutons, qui affecte des macros à des boutons de la feuille
active) d'un autre fichier
çà donne à peu près çà
...
NouveauNom = "toto.xls" 'un nouveau nom pour le classeur
...
Application.Run NouveauNom & "!affecter_boutons"
et là çà plante
"Erreur d'exécution -2147024809 (80070057)
L'élément portant ce nom est introuvable"
l'élément en question est bien là pourtant : quand je lance la macro en
question en solo, elle fonctionne bien
les maîtres d'excel auraient-ils le début du commencement d'une piste ????
merci par avance
claude
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
michdenis
Bonjour Claude,
Ce n'est pas parce que tu as affecté un nouveau nom de classeur à une variable que le fichier en question a été "baptisé". Pour modifier le nom d'un classeur, celui doit être enregistré avec ce nouveau nom. En utilisant ceci :
Enregistre le classeur dans le même répertoire que l'ancien mais sous un nouveau nom.
With Workbooks("SonVieuxNom") .SaveAs .Path & Application.PathSeparator & nouveaunom End Sub
L'ancien Fichier est toujours là dans le répertoire. Si tu décides de le liquider définitivement ... pas dans la poubelle
With Workbooks("SonVieuxNom") .SaveAs .Path & Application.PathSeparator & nouveaunom .kill .Path & Application.PathSeparator & "SonVieuxNom" End Sub
Maintenant si tu veux rouler une macro dans ce classeur, et d'après la syntaxe que tu as utilisé, c'est une macro située dans un classeur ouvert et ce n'est pas le classeur actif
Application.Run Toto.xls!affecter_boutons
Tu ne peux utiliser la variable, cette dernière est du type String, elle ne représente rien d'autre qu'une chaîne de caractères ( le nom du classeur) . Pour pouvoir utiliser une variable, il faudrait que tu définisses un objet de TYPE WORKBOOK et que tu affectes à cette l'objet le classeur dont il est question.
Dim Wk as Workbook, NouveauNom as String NouveauNom = "Toto.xls" Set Wk = Workbooks("SonVieuxNom) 'Cela suppose que le classeur est ouvert. Pour l'enregistrer sous un nouveau nom Wk.saveas nouveaunom Pour détruire l'ancien classeur Kill wk.Path & Application.PathSeparator & "SonVieuxNom"
Et pour appeler une macro de ce classeur Application.Run Wk!affecter_boutons
Salutations!
"claude" a écrit dans le message de news:3f0c6869$0$10855$ bonjour je travaille sur un fichier dont le code fait appel à une macro (affecter_boutons, qui affecte des macros à des boutons de la feuille active) d'un autre fichier
çà donne à peu près çà
... NouveauNom = "toto.xls" 'un nouveau nom pour le classeur ... Application.Run NouveauNom & "!affecter_boutons"
et là çà plante "Erreur d'exécution -2147024809 (80070057) L'élément portant ce nom est introuvable"
l'élément en question est bien là pourtant : quand je lance la macro en question en solo, elle fonctionne bien
les maîtres d'excel auraient-ils le début du commencement d'une piste ???? merci par avance claude
Bonjour Claude,
Ce n'est pas parce que tu as affecté un nouveau nom de classeur à une variable que le fichier en question a été "baptisé".
Pour modifier le nom d'un classeur, celui doit être enregistré avec ce nouveau nom. En utilisant ceci :
Enregistre le classeur dans le même répertoire que l'ancien mais sous un nouveau nom.
With Workbooks("SonVieuxNom")
.SaveAs .Path & Application.PathSeparator & nouveaunom
End Sub
L'ancien Fichier est toujours là dans le répertoire. Si tu décides de le liquider définitivement ... pas dans la poubelle
With Workbooks("SonVieuxNom")
.SaveAs .Path & Application.PathSeparator & nouveaunom
.kill .Path & Application.PathSeparator & "SonVieuxNom"
End Sub
Maintenant si tu veux rouler une macro dans ce classeur, et d'après la syntaxe que tu as utilisé, c'est une macro située dans
un classeur ouvert et ce n'est pas le classeur actif
Application.Run Toto.xls!affecter_boutons
Tu ne peux utiliser la variable, cette dernière est du type String, elle ne représente rien d'autre qu'une chaîne de
caractères ( le nom du classeur) . Pour pouvoir utiliser une variable, il faudrait que tu définisses un objet de TYPE
WORKBOOK et que tu affectes à cette l'objet le classeur dont il est question.
Dim Wk as Workbook, NouveauNom as String
NouveauNom = "Toto.xls"
Set Wk = Workbooks("SonVieuxNom) 'Cela suppose que le classeur est ouvert.
Pour l'enregistrer sous un nouveau nom
Wk.saveas nouveaunom
Pour détruire l'ancien classeur
Kill wk.Path & Application.PathSeparator & "SonVieuxNom"
Et pour appeler une macro de ce classeur
Application.Run Wk!affecter_boutons
Salutations!
"claude" <doclaude@free.fr> a écrit dans le message de news:3f0c6869$0$10855$626a54ce@news.free.fr...
bonjour
je travaille sur un fichier dont le code fait appel à une macro
(affecter_boutons, qui affecte des macros à des boutons de la feuille
active) d'un autre fichier
çà donne à peu près çà
...
NouveauNom = "toto.xls" 'un nouveau nom pour le classeur
...
Application.Run NouveauNom & "!affecter_boutons"
et là çà plante
"Erreur d'exécution -2147024809 (80070057)
L'élément portant ce nom est introuvable"
l'élément en question est bien là pourtant : quand je lance la macro en
question en solo, elle fonctionne bien
les maîtres d'excel auraient-ils le début du commencement d'une piste ????
merci par avance
claude
Ce n'est pas parce que tu as affecté un nouveau nom de classeur à une variable que le fichier en question a été "baptisé". Pour modifier le nom d'un classeur, celui doit être enregistré avec ce nouveau nom. En utilisant ceci :
Enregistre le classeur dans le même répertoire que l'ancien mais sous un nouveau nom.
With Workbooks("SonVieuxNom") .SaveAs .Path & Application.PathSeparator & nouveaunom End Sub
L'ancien Fichier est toujours là dans le répertoire. Si tu décides de le liquider définitivement ... pas dans la poubelle
With Workbooks("SonVieuxNom") .SaveAs .Path & Application.PathSeparator & nouveaunom .kill .Path & Application.PathSeparator & "SonVieuxNom" End Sub
Maintenant si tu veux rouler une macro dans ce classeur, et d'après la syntaxe que tu as utilisé, c'est une macro située dans un classeur ouvert et ce n'est pas le classeur actif
Application.Run Toto.xls!affecter_boutons
Tu ne peux utiliser la variable, cette dernière est du type String, elle ne représente rien d'autre qu'une chaîne de caractères ( le nom du classeur) . Pour pouvoir utiliser une variable, il faudrait que tu définisses un objet de TYPE WORKBOOK et que tu affectes à cette l'objet le classeur dont il est question.
Dim Wk as Workbook, NouveauNom as String NouveauNom = "Toto.xls" Set Wk = Workbooks("SonVieuxNom) 'Cela suppose que le classeur est ouvert. Pour l'enregistrer sous un nouveau nom Wk.saveas nouveaunom Pour détruire l'ancien classeur Kill wk.Path & Application.PathSeparator & "SonVieuxNom"
Et pour appeler une macro de ce classeur Application.Run Wk!affecter_boutons
Salutations!
"claude" a écrit dans le message de news:3f0c6869$0$10855$ bonjour je travaille sur un fichier dont le code fait appel à une macro (affecter_boutons, qui affecte des macros à des boutons de la feuille active) d'un autre fichier
çà donne à peu près çà
... NouveauNom = "toto.xls" 'un nouveau nom pour le classeur ... Application.Run NouveauNom & "!affecter_boutons"
et là çà plante "Erreur d'exécution -2147024809 (80070057) L'élément portant ce nom est introuvable"
l'élément en question est bien là pourtant : quand je lance la macro en question en solo, elle fonctionne bien
les maîtres d'excel auraient-ils le début du commencement d'une piste ???? merci par avance claude