Fichiers excel

Résolu
apache88 Messages postés 78 Date d'inscription mercredi 26 janvier 2005 Statut Membre Dernière intervention 19 mars 2014 - 2 août 2007 à 14:37
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 - 2 août 2007 à 18:08
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

mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
2 août 2007 à 15:17
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>
3
apache88 Messages postés 78 Date d'inscription mercredi 26 janvier 2005 Statut Membre Dernière intervention 19 mars 2014
2 août 2007 à 15:28
Merci beaucoup! ça va vraiment bien m'aider
0
apache88 Messages postés 78 Date d'inscription mercredi 26 janvier 2005 Statut Membre Dernière intervention 19 mars 2014
2 août 2007 à 15:51
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
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
2 août 2007 à 18:00
   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>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
2 août 2007 à 18:08
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>
0
Rejoignez-nous