Extraire le nb de lignes de differents fichiers

Résolu/Fermé
Mag13180 Messages postés 23 Date d'inscription jeudi 25 février 2016 Statut Membre Dernière intervention 19 novembre 2016 - 25 févr. 2016 à 15:18
Mag13180 Messages postés 23 Date d'inscription jeudi 25 février 2016 Statut Membre Dernière intervention 19 novembre 2016 - 26 févr. 2016 à 08:10
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

f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
25 févr. 2016 à 16:19
Bonjour,

Feuille Base avec entetes en ligne 1 ou pas ??
0
f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
25 févr. 2016 à 16:55
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
0
Mag13180 Messages postés 23 Date d'inscription jeudi 25 février 2016 Statut Membre Dernière intervention 19 novembre 2016 1
25 févr. 2016 à 20:51
bonsoir,
tout d'abord merci pour votre aide.
les Feuilles Bases des différents fichiers ont des entêtes en ligne 1.
J'ai essayé votre code, il me sort un message d'erreur :
erreur d'execution '-214767259 (80004005)':
[Microsoft][pilote ODCB Excel]Erreur générale Impossible d'ouvrir la clé de Registre <<Temporary 'volatile) Ace DSN for process 0x2ec Thread 0x1184DBC 0x1653cfdc Excel>>
Je pense qu'il doit me manquer une référence vba mais je n'arrive pas à trouver laquelle.
je continue à chercher

bonne soirée
Mag
0
f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709 > Mag13180 Messages postés 23 Date d'inscription jeudi 25 février 2016 Statut Membre Dernière intervention 19 novembre 2016
25 févr. 2016 à 20:59
Re,
Vous avez la ligne en erreur?
0
Mag13180 Messages postés 23 Date d'inscription jeudi 25 février 2016 Statut Membre Dernière intervention 19 novembre 2016 1
25 févr. 2016 à 21:15
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 ...
0
Mag13180 Messages postés 23 Date d'inscription jeudi 25 février 2016 Statut Membre Dernière intervention 19 novembre 2016 1
25 févr. 2016 à 21:20
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 ?
0
f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709 > Mag13180 Messages postés 23 Date d'inscription jeudi 25 février 2016 Statut Membre Dernière intervention 19 novembre 2016
Modifié par f894009 le 26/02/2016 à 07:59
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
0