Erreur sur macro

Fermé
thibjln - 24 nov. 2020 à 10:47
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 30 nov. 2020 à 21:27
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

f894009 Messages postés 17192 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 16 juin 2024 1 708
24 nov. 2020 à 11:12
Bonjour,

Workbooks.Open strFileList(i)
1
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 778
Modifié le 24 nov. 2020 à 12:13
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
f894009 Messages postés 17192 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 16 juin 2024 1 708
24 nov. 2020 à 16:57
Bonjour Patrice33740,

Il est vrai qu'il faut faire la difference entre une variable et le chemin ecrit en "dur"
0
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
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 778
Modifié le 30 nov. 2020 à 21:28
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