Macro excel:coder "pour toutes les feuilles&q

Fermé
pitchounette - 17 sept. 2006 à 22:39
JvDo Messages postés 1978 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 28 septembre 2020 - 20 sept. 2006 à 00:49
dans une macro excel, comment coder :
- "pour tous les fichiers .XLS d'un répertoire"
et
- "pour toutes les feuilles d'un fichier"

Merci pour votre réponse !
A voir également:

1 réponse

JvDo Messages postés 1978 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 28 septembre 2020 856
20 sept. 2006 à 00:49
Bonsoir,

1) pour les fichiers :
Option Explicit
     Public dossier

     Public Type BROWSEINFO
        hOwner As Long
        pidlRoot As Long
        pszDisplayName As String
        lpszTitle As String
        ulFlags As Long
        lpfn As Long
        lParam As Long
        iImage As Long
     End Type
     '32-bit API declarations
     Declare Function SHGetPathFromIDList Lib "shell32.dll" _
     Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long
     Declare Function SHBrowseForFolder Lib "shell32.dll" _
     Alias "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) As Long

Sub macro_sur_fichiers_xls_Dossier()
' recherche les feuilles de calcul dans une arborescence d'un dossier (et sous dossiers si ".SearchSubFolders = True")
'
Dim fs, i, V_Dossier, V_Nb_Files
Dim fso As New FileSystemObject

V_Dossier = GetDirectory("choisissez le dossier à traiter ")
If V_Dossier <> "" Then

Set fs = Application.FileSearch
With fs
    .LookIn = V_Dossier
    .SearchSubFolders = True
    .FileType = msoFileTypeExcelWorkbooks   
    If .Execute() > 0 Then
        V_Nb_Files = .FoundFiles.Count
        MsgBox "Ce dossier contient " & V_Nb_Files & " fichier(s) répondant aux critères."

        For i = 1 To V_Nb_Files
            Cells(i + 1, 1).Value = .FoundFiles(i)  'affiche les fichiers dans la feuille de calcul. mettre ici le traitement
        Next i
    Else
        MsgBox "Aucun fichier n'a été trouvé."
    End If
End With
End Sub

2) pour les feuilles d'un classeur :
Sub mesfeuilles()
Dim i
i = 1
For Each vfeuille In ActiveWorkbook.Sheets
    Cells(i, 1) = vfeuille.Name
    i = i + 1
Next
End Sub
un For Each / Next convient

cordialement
2