Appel à une macro dans un classeur externe avec apostrophe

Bonjour,

Dans un classeur j'appelle une macro contenue dans un autre classeur.

Set wbNv = Workbooks.Open(MyPath & range("nomfichier").value)
Application.Run "'" & wbNv.Name & "'!" & "NomMacro"

Cela fonctionne bien quand le classeur avec la macro n'a pas d'apostrophe dans son nom.

Mais lorsqu'il y a une apostrophe, cela génère une erreur.

Quelle astuce pourrais-je utiliser pour que cela fonctionne avec les noms de fichiers avec apostrophe ?

Je vous remercie.

Bonsoir,

As-tu essayer l'appel sans les apostrophes dans les 2 cas ?

C'est à dire sans les apostrophes dans les 2 cas ?

Avec ça plante, sans ça ne plante pas .

Bonjour Damiani, bonjour le fil, bonjour le forum,

Les ' sont là pour encadrer le nom du fichier. Si le nom comporte une ' , l'encadrement échoue, c'est normal.

Si les noms des fichiers doivent impérativement garder ce caractère perturbateur, je suggère de renommer temporairement le fichier pour ensuite, lui redonner son nom d'origine.

Deux bouts de code peuvent s'en charger aisément.

Joseph

Je ne comprends pas pourquoi les apostrophes ne posent pas de problème pour ce code par exemple :

Fileabc = Dir(MyPath & "*.xlsx")
Do While Fileabc <> ""
Set wbCopyFrom = Workbooks.Open(MyPath & Fileabc)

Y aurait-il une autre solution que de renommer les classeurs (même temporairement) ?

Bonjour Damiani, bonjour le fil, bonjour le forum,

Damiani a écrit :

Je ne comprends pas pourquoi les apostrophes ne posent pas de problème pour ce code par exemple :

Fileabc = Dir(MyPath & "*.xlsx")
Do While Fileabc <> ""
Set wbCopyFrom = Workbooks.Open(MyPath & Fileabc)

Y aurait-il une autre solution que de renommer les classeurs (même temporairement) ?

Dans cet exemple, le code ne fait qu'ouvrir le fichier, c'est pour cela qu'une ou plusieurs apostrophes ne posent pas problème.

Dans ta demande, le code est : Application.Run "'" & wbNv.Name & "'!" & "NomMacro".

Là, le code demande quelque chose dans le fichier, dont le nom de ce fichier comporte une espace typographique ou une apostrophe, d'où la différence.

Dès que le nom du fichier comporte autre chose que des caractères alphabétiques et numériques consécutifs, les formules ou le code exigent d'encadrer ce nom avec des apostrophes.

Application.Run "'" & wbNv.Name & "'!" & "NomMacro" est le même principe qu'avec le nom d'une feuille

dans une formule : ='Le Nom'!A1

Je trouve cela intéressant. Je tente de trouver un contournement ... sans succès à date.

Joseph

Bonjour Damiani, bonjour le fil, bonjour le forum,

La foi et la persévérance donnent parfois des résultats.

Tant qu'il n'y aura qu'une seule apostrophe dans le nom du fichier. Sinon, je te laisse tricoter.

Le code pourra être amélioré.

Explication : il faut réussir à doubler l'apostrophe dans le nom du fichier.

Dans le champ nommé, si le texte comporte une apostrophe, Excel en ajoute une au début.

C'est pour cela que le InStr doit commencer à la position 2.

Sub Macro1()
Dim wbNv As Workbook
Dim MyPath As String
Dim LeNom As String
Dim x As Byte

MyPath = ActiveWorkbook.Path & "\"
LeNom = "'" & Range("nomfichier") & "'!" & Range("NomMacro")
x = InStr(2, LeNom, "'")
LeNom = Left(LeNom, x - 1) & "'" & Right(LeNom, Len(LeNom) - (x - 1))

Set wbNv = Workbooks.Open(MyPath & Range("nomfichier").Value)
Application.Run LeNom
End Sub

Joseph

Bonjour

Il est de toute façon plus que conseillé d'appliquer la norme internationale pour les noms de dossiers et fichiers : en minuscule, sans espace, sans accent, sans caractères spéciaux autre que le _

comme sur le net.

Microsoft est plus permissif mais le fait ensuite payer.

Je me souviens de Windows Millenium : il y avait un fond d'écran appelé Bouton D'or

On livrait un PC tout neuf a priori en parfait état de marche, puis l'utilisateur choisissait ce joli fond d'écran et là ordi en panne.

Impossible de redémarrer Windows.

Millenium avait d'autres bugs mais cela illustre bien que même MS se prend les pieds dans son laxisme.

Bonjour le fil, bonjour le forum,

78chris a écrit :

... Il est de toute façon plus que conseillé d'appliquer la norme internationale pour les noms de dossiers et fichiers : en minuscule, sans espace, sans accent, sans caractères spéciaux autre que le _ comme sur le net. ...

Entièrement d'accord. Ça simplifie bien des bidules.

L'évolution étant ce qu'elle est, à tort ou à raison, peut-on y changer quelque chose ?

Joseph

Rechercher des sujets similaires à "appel macro classeur externe apostrophe"