Extraire le nb de lignes de differents fichiers

Résolu
Mag13180 Messages postés 23 Statut Membre -  
Mag13180 Messages postés 23 Statut Membre -
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

  1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    Feuille Base avec entetes en ligne 1 ou pas ??
    0
  2. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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
    1. Mag13180 Messages postés 23 Statut Membre 1
       
      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
    2. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717 > Mag13180 Messages postés 23 Statut Membre
       
      Re,
      Vous avez la ligne en erreur?
      0
    3. Mag13180 Messages postés 23 Statut Membre 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 ...
      0
    4. Mag13180 Messages postés 23 Statut Membre 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 ?
      0
    5. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717 > Mag13180 Messages postés 23 Statut Membre
       
      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