Fichiers excel [Résolu]

apache88 78 Messages postés mercredi 26 janvier 2005Date d'inscription 19 mars 2014 Dernière intervention - 2 août 2007 à 14:37 - Dernière réponse : mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention
- 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
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 2 août 2007 à 15:17
3
Merci
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>

Merci mortalino 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.