Problème de fonctionnement d'une macro à cause du nom de fichier

Bonjour,

Je souhaite créé une macro qui ouvre un autre fichier Excel (protégé par un mot de passe) et qui lance une macro (afficheGrille) de ce fichier Excel que l'on vient d'ouvrir.

Ce code VBA (ci-dessous) marche comme un charme quand le fichier se nomme simplement test.xlsm

Par contre, quand il a son vrai nom (RVI-Trim_202204_PF MOBILITE AUTO FR_DIRECTION COMMERCIALE_RESEAU COMMERCIAL_13129047_RESEAU COMMERCIAL.xlsm), il a le bug suivant :

image

Une idée de modification de code pour pouvoir ouvrir n'importe quel classeur, même un avec un long nom ?

Merci d'avance

Sub cmdFileDialog()
Dim LaMacro As String
    With Application.FileDialog(msoFileDialogFilePicker)
        .AllowMultiSelect = False
        .Title = "Veuillez sélectionner un fichier excel"
        .Filters.Clear
        .Filters.Add "Excel files", "*.xlsm*"
        If .Show = True Then
         fname = .SelectedItems(1)
                Workbooks.Open fname, , Password:="motdepasse"

                LaMacro = ActiveWorkbook.Name & "!afficheGrille"
                Application.Run LaMacro

        Else
            MsgBox "pas de fichier sélectionné"
        End If
    End With
End Sub

Bonsoir Pikathoto,

Ton message d'erreur se situe au lancement de la variable LaMacro et non au niveau de la variable fname.

Ce qui prouve que ce n'est pas le nom de ton fichier qui est en cause puisque ton Workbooks.Open fname n'est pas bloquant.

En fait, il conviendrait d'utiliser fname puisque tu viens de le rechercher et trouver plutôt que Activeworkbook.Name

If .Show = True Then
         fname = .SelectedItems(1)
                Workbooks.Open fname, , Password:="motdepasse"
  'Insérer avant le nom du fichier portant la macro un simple quote entre des guillements et un simple quote avant le point d'exclamation
                LaMacro = "'" & fname & "'!afficheGrille"
                Application.Run LaMacro

Bonjour X cellus et merci pour ton retour et ton explication.

Je dois faire quelque chose de mauvais car, quand je copie ta ligne de code et que je lance la Macro, j'ai ce message d'erreur ci-dessous :

image

La ligne est en rouge avant même de lancer la macro

Une idée pour résoudre ?

Merci beaucoup,

Thomas

Bonjour Pikathoto,

C'est

LaMacro = "'" & fname & "'!afficheGrille"

Sans le & avant fname il n'y a pas de concaténation. Et donc cela provoque l'erreur de compilation. => erreur de synthaxe

Un GRAND merci pour ton aide sur le code et les explications qui me permettent de mieux comprendre.

J'ai encore des progrès à faire ;)

Pour ceux qui en auront besoin, voici le code complet corrigé :

Sub cmdFileDialog()
Dim LaMacro As String
    With Application.FileDialog(msoFileDialogFilePicker)
        .AllowMultiSelect = False
        .Title = "Veuillez sélectionner un fichier excel"
        .Filters.Clear
        .Filters.Add "Excel files", "*.xlsm*"

If .Show = True Then
         fname = .SelectedItems(1)
                Workbooks.Open fname, , Password:="motdepasse"
  'Insérer avant le nom du fichier portant la macro un simple quote entre des guillements et un simple quote avant le point d'exclamation
                LaMacro = "'" & fname & "'!afficheGrille"

                Application.Run LaMacro

        Else
            MsgBox "pas de fichier sélectionné"
        End If
    End With
End Sub
Rechercher des sujets similaires à "probleme fonctionnement macro cause nom fichier"