Erreur sur macro

thibjln -  
Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   -
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. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    Workbooks.Open strFileList(i)
    1
  2. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 783
     
    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. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Bonjour Patrice33740,

      Il est vrai qu'il faut faire la difference entre une variable et le chemin ecrit en "dur"
      0
  3. thibjln
     
    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
  4. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 783
     
    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