Erreur sur macro

Hello,

Je cherche à pouvoir actualiser les données de plusieurs fichiers excel par une seule macro.
Etant très novice en VBA j'ai recherché et trouvé un code qui fait l'affaire parfaitement.
Cependant il ne fonctionne pas, et je ne comprend pas pourquoi.

Ci après le code :

</code>
Sub Maj_Lundi()

'Déclaration des variables de base

Dim wbSource, wbFichierUsager As Workbook
Dim strFileName, strPath, strSpec As String
Dim strFileList() As String
Dim i, FoundFiles As Integer

Set wbFichierUsager = ThisWorkbook

'Identification du chemin

strPath = "K:\Partenariat exclusif\RESULTATS VENTES PARTENAIRES EXCLUSIFS en xlsx\01. Lundi\"
strSpec = strPath & "*.xlsx"

'Extraction du contenu du répertoire

strFileName = Dir(strSpec)

If strFileName <> "" Then
FoundFiles = 1

ReDim Preserve strFileList(1 To FoundFiles)
strFileList(FoundFiles) = strPath & strFileName

Else
MsgBox "Aucun fichier trouvé"

Exit Sub

End If

'Trouver tous les autres noms de fichiers

Do
strFileName = Dir
If strFileName = "" Then Exit Do
FoundFiles = FoundFiles + 1
ReDim Preserve strFileList(1 To FoundFiles)
strFileList(FoundFiles) = strPath & strFileName
Loop

'Effectuer les traitements requis pour chaque fichier

For i = 1 To FoundFiles

Workbooks.Open strFileName:=strFileList(i)

Set wbSource = ActiveWorkbook
ActiveWorkbook.RefreshAll
wbSource.Close SaveChanges:=False

Next i

End Sub

L'erreur se passe au niveau de l'expression en gras : "Erreur de compilation : argument nommé introuvable"
Pourtant il me semble que la variable est correctement définie plus haut !

Si quelqu'un pourrait m'éclairer.

Merci d'avance :)

Thibaut

4 réponses

  1. Bonjour,

    Workbooks.Open strFileList(i)
    1
    1. Bonjour,

      Avec le bon nom de l'argument de la méthode Open :
      Workbooks.Open Filename:=strFileList(i)

      Pour le nom des arguments, voir l'intellisense ou l'aide :
      https://docs.microsoft.com/fr-FR/office/vba/api/Excel.Workbooks.Open

      1
      1. Bonjour Patrice33740,

        Il est vrai qu'il faut faire la difference entre une variable et le chemin ecrit en "dur"
        0
    2. C'est de nouveau moi ! Déjà merci pour votre aide, plus d'erreur dans le code mais...
      J'ai cependant un autre problème, j'ai l'impression en faisant des checks après avoir fait tourner la macro que les données ne se mettent pas à jour. En ouvrant chaque fichier, c'est seulement une fois que j'active le contenu (connexions de données externes) que le contenu se met à jour.

      J'ai essayé d'utiliser le code UpdateLinks avant le Refresh :

      'Effectuer les traitements requis pour chaque fichier

      For i = 1 To FoundFiles

      Workbooks.Open Filename:=strFileList(i)

      Set wbSource = ActiveWorkbook
      wbSource.UpdateLinks = xlUpdateLinksAlways
      wbSource.RefreshAll
      wbSource.Close SaveChanges:=True

      Next i

      End Sub

      Mais cela ne fonctionne pas...

      Une idée ?

      Merci d'avance
      Thib
      0
      1. Bonjour,

        Essaies plutôt :
          For i = 1 To FoundFiles
            Set wbSource = Workbooks.Open(Filename:=strFileList(i))
            wbSource.UpdateLink
            wbSource.RefreshAll
            wbSource.Close SaveChanges:=True
          Next i


        Avec UpdateLink (sans s)

        0