Fichiers excel [Résolu]

Signaler
Messages postés
78
Date d'inscription
mercredi 26 janvier 2005
Statut
Membre
Dernière intervention
19 mars 2014
-
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
-
Bonjour,

j'aurais voulu savoir s'il était possible de créer un programme en VBA qui va parcourir tout un dossier et sous-dossiers à la recherche de fichiers excel, les ouvre un par un et modifier quelque truc dedans?

Pour ouvrire et modifier un fichiers je sais le faire, mais c'est pour qu'il scan un dossier pour trouver les fichiers excel et les ouvre un par un que je sais pas trop

Merci

5 réponses

Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
salut,

voici mon snippet pour lister les fichiers :

Sub Cherche_Fichiers_Dans_Dossier()
' *** le résultat peut apparaitre dans un message box (voir la syntaxe
'       mise en commentaire dans le code) mais je l'ai occulté car, pour cet exemple,
'       il y a environ 1 000 fichiers dans c:\.  Je me sers donc des cellules Excel

    Dim strMessage  As String
    Dim i           As Long
        Set fs =  Application.FileSearch

With fs
    .LookIn = "C:"  ' *** mettre ici le dossier voulu !
    .SearchSubFolders = True
    .Filename = "*.xls"
    If .Execute(SortBy:=msoSortByFileName, _
            SortOrder:=msoSortOrderAscending) > 0 Then
        MsgBox "Il y a " & .FoundFiles.Count & _
            " fichier(s) trouvé(s)."
        For i = 1 To .FoundFiles.Count
            Cells(i, 1).Value = .FoundFiles(i)
              'strMessage = strMessage & .FoundFiles(i) & vbCrLf
        Next i
              'MsgBox strMessage
    Else
        MsgBox "Il n'y a aucun fichier."
    End If
End With

End Sub

~ <small> Mortalino ~ Colorisation automatique </small>

Pour les ouvrir un par un, passe dans la boucle For i ... To ... Next
Suffit d'y mettre l'ouverture, le traitement, et la fermeture de .FounFiles(i), tous les fichiers seront ainsi traités

@++

<hr width ="100%" size="2" />( Nouveau forum : Exclusivement Office & VBA/STRONG>
Messages postés
78
Date d'inscription
mercredi 26 janvier 2005
Statut
Membre
Dernière intervention
19 mars 2014

Merci beaucoup! ça va vraiment bien m'aider
Messages postés
78
Date d'inscription
mercredi 26 janvier 2005
Statut
Membre
Dernière intervention
19 mars 2014

Encore une chose svp.

Voici le code maintenant:

Private Sub CommandButton1_Click()
' *** le résultat peut apparaitre dans un message box (voir la syntaxe
'       mise en commentaire dans le code) mais je l'ai occulté car, pour cet exemple,
'       il y a environ 1 000 fichiers dans c:\.  Je me sers donc des cellules Excel


    Dim strMessage  As String
    Dim i           As Long
        Set fs = Application.FileSearch


With fs
    .LookIn = "H:\temp"  ' *** mettre ici le dossier voulu !
    .SearchSubFolders = True
    .Filename = "*.xls"
    If .Execute(SortBy:=msoSortByFileName, _
            SortOrder:=msoSortOrderAscending) > 0 Then
        MsgBox "Il y a " & .FoundFiles.Count & _
            " fichier(s) trouvé(s)."
        For i = 1 To .FoundFiles.Count
       
            Workbooks.Open Filename:=.FoundFiles(i)
           
    Cells.Replace What:="SVRFRDC01", Replacement:="SVRFRDC02", LookAt:=xlPart _
    , SearchOrder:=xlByRows, MatchCase:=False§
       
        'Workbooks.Close
       
              'strMessage = strMessage & .FoundFiles(i) & vbCrLf
        Next i
              'MsgBox strMessage
    Else
        MsgBox "Il n'y a aucun fichier."
    End If
End With
End Sub

Donc une fois avoir ouvert le fichier excel, je lui demande de remplacer un mot par un autre... (Je me suis aidé des macro pour faire)

Mais ça ne fonctionne pas.... qu'est-ce qui est faux dans mon code? ou aurais-je oublier quelquechose?

Merci
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
   Dim wbk as WorkBook



For i = 1 To .FoundFiles.Count
       
            Set wbk = Workbooks.Open Filename:=.FoundFiles(i)
           
    Cells.Replace What:="SVRFRDC01", Replacement:="SVRFRDC02", LookAt:=xlPart _
    , SearchOrder:=xlByRows, MatchCase:=False§
        
        wbk.Close
        
         Set wbk = Nothing
              'strMessage = strMessage & .FoundFiles(i) & vbCrLf
        Next i

@++

<hr width="100%" size="2" />( Nouveau forum : Exclusivement Office & VBA/STRONG>
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Oups, petit oubli (suis au boulot, désolé..) :

Dim wbk as WorkBook

For i = 1 To .FoundFiles.Count
       
            Set wbk = Workbooks.Open Filename:=.FoundFiles(i)
           
    wbk. Cells.Replace What: ="SVRFRDC01", Replacement:="SVRFRDC02", LookAt:=xlPart _
    , SearchOrder:=xlByRows, MatchCase:=False§
        
        wbk.Close
        
         Set wbk = Nothing
              'strMessage = strMessage & .FoundFiles(i) & vbCrLf
        Next i

@++

<hr width="100%" size="2" />( Nouveau forum : Exclusivement Office & VBA/STRONG>