Lecture de fichiers Excel l'un apres l'autre dans un dossier

Bonjour,

je suis entrain de faire une macro qui me permet de traiter des fichier excel les uns après les autres, mais j'ai beaucoup de mal à déboguer. les fichier que j'aimerais traiter se trouvent dans un dossier, et ce que je fais c'est: je donne le chemin de ce dossier à ma macro et ensuite elle doit ouvrir ces fichiers, faire le traitement que je souhaite dans tous les fichier se trouvant dedans et les refermer. voici le code la partie de la macro qui bogue:

Public Sub Ouvrir_Fichiers()

Dim wbSource, wbFichierUsager As Workbook

Dim strFileName, strPath, strSpec As String

Dim strFileList() As String

Dim i, FoundFiles As Integer   'Déclarer les variables de base

Set wbFichierUsager = ThisWorkbook

' On commence par identifier le chemin où les fichiers se trouvent

strPath =   "C:\Directory\Subdirectory\" ' Évidemment, ce chemin sera différent dans chaque cas

strSpec = strPath & "*.xlsx"   ' Il faut spécifier l’extension des fichiers convoités

'  On extrait le contenu du répertoire

strFileName = Dir(strSpec)

'  Avons-nous des fichiers?

If strFileName <> " " Then

FoundFiles = 1

ReDim Preserve strFileList(1 To FoundFiles)

strFileList(FoundFiles) = strPath & strFileName

Else      'Le repertoire est vide, donc on annule tout!

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

'   On fait les traitements requis pour chaque fichier

For i = 1 To FoundFiles

Workbooks.Open strFileName:=strFileList(i)

Set wbSource = ActiveWorkbook

l'erreur que j'ai est se trouve se trouve juste apres le Do : strFileName = Dir , elle m'indique que: erreur d’exécution (5) l'argument ou l'appel de procédure est incorrecte. c'est la que je ne comprends pas pourquoi.

il manque la suite mais ce n'est pas important car c'est juste le traitement des fichiers ....

merci de votre aide

Bonjour

Bonne Année

A tester

Public Sub Ouvrir_Fichiers()
Dim wbFichierUsager As Workbook
Dim strFileName As String, strPath As String, strSpec As String

  Application.ScreenUpdating = False
  Set wbFichierUsager = ThisWorkbook
  strPath = "C:\Directory\Subdirectory\"      ' Évidemment, ce chemin sera différent dans chaque cas
  strSpec = strPath & "*.xlsx"                ' Il faut spécifier l’extension des fichiers convoités

  strFileName = Dir(strSpec)
  Do While strFileName <> ""
    If strFileName <> wbFichierUsager.Name Then
      With Workbooks.Open(strPath & strFileName)
        '
        ' Traitement à faire dans le fichier
        '
        .Close savechanges:=True      ' Fermeture en l'enregistrant
      End With
    End If
    strFileName = Dir()
  Loop
End Sub

je n'arrive pas à la faire fonctionner, la macro ne fait strictement rien.

voici tout mon code:

Public Sub Ouvrir_Fichiers()
Dim wbFichierUsager As Workbook
Dim strFileName As String, strPath As String, strSpec As String

  Application.ScreenUpdating = False
  Set wbFichierUsager = ThisWorkbook
  strPath = "C:\Users\Desktop\dossier1"      ' Évidemment, ce chemin sera différent dans chaque cas
  strSpec = strPath & "*.xlsm"                ' Il faut spécifier l’extension des fichiers convoités

  strFileName = Dir(strSpec)

  Do While strFileName <> ""
    If strFileName <> wbFichierUsager.Name Then
      With Workbooks.Open(strPath & strFileName)
        '
       ' Traitement à faire dans le fichier
         Set f1 = wbFichierUsager
         Set f2 = w1.Sheets(" feuil2")
         f2.Activate

         derLn1 = f1.Cells.SpecialCells(xlCellTypeLastCell).Row
         derLn2 = f2.Cells.SpecialCells(xlCellTypeLastCell).Row

         For i2 = 6 To derLn2
         If f2.Range("B" & i2) <> "" Then
            For i1 = 3 To derLn1
                If f2.Range("B" & i2) = f1.Range("A" & i1) Then
                    If f2.Range("C" & i2) = f1.Range("B" & i1) Then

                        f1.Range("B" & i1).Interior.Color = RGB(0, 255, 0)
                    Else

                        f1.Range("B" & i1).Interior.Color = RGB(255, 0, 0)

                    End If
                End If
            Next i1
          End If
    Next i2

       .Close savechanges:=True      ' Fermeture en l'enregistrant
     End With
    End If
    strFileName = Dir()
    f1.Activate 'je veux mettre en premier plan le fichier dont j'ai colorier les cases.
  Loop

End Sub

Bonjour

Comme cela je ne sais pas

C'est quoi ces variables f1,f2 et w1 ?

Il faudrait que dans une archive tu joignes ton fichier principal et 2-3 fichiers sources

Rechercher des sujets similaires à "lecture fichiers dossier"