Fonction VBA - multi classeurs

Mouss11

XLDnaute Nouveau
Bonjour,

Je suis débutant en VBA

Je cherche un bout de code me permettant de faire les actions suivantes. J'ai dans un même répertoire plusieurs classeurs et j'aimerais :

- Que Excel calcule le nombre de feuilles de chaque classeur contenu dans ce répertoire et insère la valeur dans la prochaine cellule disponible de la colonne A a partir de la cellule A12 (des infos sont saisies de A1 a A12

-Que Excel report le nom du classeur en face du nombre de feuilles dans la colonne B a partir de la cellule B12 (exemple nombre de feuilles en A18; nom du classeur en B18)

Merci

Voici le code que j'ai commencé a écrire mais celui ci beug

Code:
Sub CLASSEUR()

Dim wbk As Excel.Workbook
fold_up = ThisWorkbook.Path

For Each wbk In fold_up
    Sheets("feuil1").Select
    Range("A12").Select
    Range(Selection, Selection.End(xlToDown)).Select
    Selection = Workbook.Sheets.Count
Next wbk

End Sub
 
Dernière édition:

zebanx

XLDnaute Accro
Bonjour Mouss11, le forum

Un fichier qui extrait les informations. Pas tout à fait la demande mais on a le dossier actif, on peut avoir les dates de modifications (bouton en haut à mettre à jour après affichage des fichiers), le lien complet et un lien hypertexte pour ouvrir un fichier.
Les zones en grises ne doivent pas être supprimées (formules)

xl-ment
zebanx
 

Pièces jointes

  • folder_extraire classeurs.xls
    69.5 KB · Affichages: 35

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour le fil, bonjour le forum,

Essaie comme ça :

VB:
Sub Macro1()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim CA As String 'déclare la variable CA (Chemin d'Accès)
Dim F As String 'déclare la variable F (Fichiers)
Dim CL As Workbook 'déclare la variable CL (CLasseur)
Dim DEST As Range 'déclare la variable DEST (cellule de DESTination)

Application.ScreenUpdating = False 'masque les raffraîchissements d'écran
Set O = ThisWorkbook.Worksheets("Feuil1") 'définit l'onglet O (à adapter à ton cas)
CA = ThisWorkbook.Path 'définit le chemin d'accès CA
F = Dir(CA & "\*.xls*") 'définit le premier classeur excel ayant CA comme chemin d'accès
Do While F <> "" 'exécute tant qu'il existe des classeurs
    If Not F = ThisWorkbook.Name Then 'condition : si le classeur n'est pas celui-ci
        'définit la cellule de destination DEST (A12 si A12 est vide sinon, la première cellule vide de la colonne A de l'onglet O)
        If O.Range("A12") = "" Then Set DEST = O.Range("A12") Else Set DEST = O.Cells(Application.Rows.Count, "A").End(xlUp).Offset(1, 0)
        Set CL = Workbooks.Open(CA & "\" & F) 'définit le classeur CL en l'ouvrant
        DEST.Value = CL.Sheets.Count 'renvoie le nombre d'onglets dans DEST
        DEST.Offset(0, 1).Value = F 'renvoie le nom du classeur F dans DEST décalé d'une colonne à droite
        CL.Close False 'ferme le classeur CL sans enregistrer
        F = Dir 'définit le prochain classeur du dossier ayant CA comme chemin d'accès
    End If 'fin de la condition
Loop 'boucle
Application.ScreenUpdating = True 'affiche les raffraîchissements d'écran
End Sub
 

Mouss11

XLDnaute Nouveau
Bonjour tout le monde !

Robert, merci pour ton code il marche nickel.

En revanche vu que la majorité de mes classeurs nt des liaisons Excel me demande pour chaque classeur si je veux mettre a jour les liaison. Y'a t-il un moyen d'automatiser la réponse , ne pas mettre a jour lors de l'ouverture ?

En tout cas merci pour ton aide ;) !

Mouss
 

Discussions similaires

Statistiques des forums

Discussions
312 026
Messages
2 084 754
Membres
102 654
dernier inscrit
kulas11