Extraire le nb de lignes de differents fichiers [Résolu/Fermé]

Signaler
Messages postés
23
Date d'inscription
jeudi 25 février 2016
Statut
Membre
Dernière intervention
19 novembre 2016
-
Messages postés
23
Date d'inscription
jeudi 25 février 2016
Statut
Membre
Dernière intervention
19 novembre 2016
-
Bonjour à tous

Je sollicite votre aide pour construire une boucle et récupérer des données.

j'ai une macro "EXTRAIRE" qui me liste le chemin et le nom de différents fichiers excel de structures identiques.
en colonne A j'ai extrait le chemin des fichiers
en colonne B j'ai extrait le nom des fichiers
tout cela sur une feuille nommée "shfichiers"
je voudrais reporter en colonne C le nombre de lignes non vides de chaque fichier présent en colonne b (la feuille concernée par le comptage des lignes s'appelle "base" dans tous les fichiers)
je joins un fichier démo en support
merci pour les pistes que vous pourriez me fournir

Mag

http://www.cjoint.com/c/FBzom1zru5C

2 réponses

Messages postés
15831
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
12 juillet 2021
1 512
Bonjour,

Feuille Base avec entetes en ligne 1 ou pas ??
Messages postés
15831
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
12 juillet 2021
1 512
Re,

En attendant:

Sub Lire_Fichier_Ferme()
    Dim P As Long, Fichier As String, Chemin As String, PL As Long
    Dim Cnn As Object, RsL As Object
    Dim TLigne()
    
    With Worksheets("SHFICHIERS")
        Plage = .Range("A1:B" & .Range("A" & Rows.Count).End(xlUp).Row)     'mise en memoire Plage de cellules
    End With
    Nb1 = UBound(Plage, 1): PL = -1: ReDim TLigne(Nb1 + 1)
    For P = 1 To Nb1
        'boucle sur colonne A et B pour repertoire et fichier
        Chemin = Plage(P, 1)
        Fichier = Plage(P, 2)
        Set Cnn = CreateObject("ADODB.Connection")
        Set RsL = CreateObject("ADODB.Recordset")
        With Cnn
            .ConnectionString = "Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=" & Chemin & "\" & Fichier & ";ReadOnly=true;"
            .Open
        End With
        Set RsL = Cnn.Execute("SELECT count(*) as nb FROM [Base$]")
        PL = PL + 1
        TLigne(PL) = RsL("nb")          'mettre +1 si pas d'entete
        Cnn.Close
        Set RsL = Nothing
        Set Cnn = Nothing
    Next P
    Worksheets("SHFICHIERS").Range("C1").Resize(Nb1 + 1) = Application.Transpose(TLigne)
End Sub
Messages postés
15831
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
12 juillet 2021
1 512 >
Messages postés
23
Date d'inscription
jeudi 25 février 2016
Statut
Membre
Dernière intervention
19 novembre 2016

Re,
Vous avez la ligne en erreur?
Messages postés
23
Date d'inscription
jeudi 25 février 2016
Statut
Membre
Dernière intervention
19 novembre 2016
1
oui
c'est sur
.open

remarque : avant de buter sur
. open
lorsque je passe la souris sur Set Cnn = CreateObject("ADODB.Connection") il reconnais bien Cnn= driver ...
lorsque je passe la souris sur Set RsL = CreateObject("ADODB.Recordset")
il ne reconnait rien sur Rsl
je ne sais pas si ça peux vous aider ...
Messages postés
23
Date d'inscription
jeudi 25 février 2016
Statut
Membre
Dernière intervention
19 novembre 2016
1
je combine le double désavantage de bosser sur windows10 et sur excel 2013
je regrette infiniment mon windows 7 et mon office 2010 ...
vous pensez que le problème peux venir de ces versions ?
Messages postés
15831
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
12 juillet 2021
1 512 >
Messages postés
23
Date d'inscription
jeudi 25 février 2016
Statut
Membre
Dernière intervention
19 novembre 2016

Bonjour,

Je provoque cette erreur si chemin n'existe pas, donc voir les lignes en colonne A

Ai fait des essai avec W10 et XL2007, pas de probleme
Messages postés
23
Date d'inscription
jeudi 25 février 2016
Statut
Membre
Dernière intervention
19 novembre 2016
1
Bonjour,
Vous avez mis dans le mille ! j'ai compris ...

Je viens de me rendre compte que votre code marche parfaitement, je vous remercie beaucoup !

par soucis de confidentialité j'avais supprimé les 10 premiers caractères des noms de fichier (les fichiers portant les nom des conseillers) dans le doc de démo et effectivement en mettant les noms complet cela fonctionne.
Je m'excuse vraiment de vous avoir induit en erreur !!!
et encore merci de m'avoir permis de découvrir cette façon de procéder.

bonne journée