Extractions de données de fichiers excel

borisparis Messages postés 87 Statut Membre -  
borisparis Messages postés 87 Statut Membre -
Bonjour,

J'ai une centaine de fichiers contenant des variables situées toujours à la même place. Je souhaiterais extraire les valeurs de ces variables pour les mettre dans un seul fichier: une variable par colonne et une ligne par fichier initial.

Voici deux exemples de ces fichiers

https://www.cjoint.com/c/EJluoHv5xpO
https://www.cjoint.com/c/EJluelYUluO

J'ai mis en jaune les variables à extraire (les mêmes dans tous les fichiers biensur)

Quelqu'un peut-il m'aider ? Je ne suis pas doué en macro...

Merci

1 réponse

  1. Kuartz Messages postés 852 Date d'inscription   Statut Membre Dernière intervention   65
     
    Bonjour,

    1°/ : Souhaitez-vous que Excel ouvre également ce nouveau fichier pour y mettre les données ou le fichier excel existe déjà?

    2°/ : Si le fichier excel où vous voulez mettre vos données existe déjà, pouvez vous le joindre? Et pouvez-vous me donner le chemin (C:\....) sur votre machine?

    Cordialement.
    0
    1. borisparis Messages postés 87 Statut Membre 1
       
      Non le fichier n'existe pas . je préfèrerais qu'il soit créé par le programme
      Merci
      0
    2. Kuartz Messages postés 852 Date d'inscription   Statut Membre Dernière intervention   65
       
      Voici le code que je viens de créer :

      Sub Code()
      
      Dim fichier_recap As Workbook, wb As Workbook, Ligne As Long
      
      Set fichier_recap = Workbooks.Add
      fichier_recap.SaveAs ("Récapitulatif.xls")
      With fichier_recap
          .Sheets(1).Range("A1").Value = "Fichier"
          .Sheets(1).Range("B1").Value = "NOM Prénom"
          .Sheets(1).Range("C1").Value = "DDN"
          .Sheets(1).Range("D1").Value = "Sexe"
          .Sheets(1).Range("E1").Value = "Poids"
          .Sheets(1).Range("F1").Value = "Taille (cm)"
          .Sheets(1).Range("G1").Value = "SC"
          .Sheets(1).Range("H1").Value = "Clairance"
          .Sheets(1).Range("I1").Value = "Clairance / Inuline"
          .Sheets(1).Range("J1").Value = "Clairance normalisée"
      End With
      
      Ligne = 1
      
      For Each wb In Workbooks
          If wb.Name <> "Récapitulatif.xls" Then
         Ligne = Ligne + 1
      With fichier_recap.Sheets(1)
          .Cells(Ligne, 1).Value = wb.Name
          .Cells(Ligne, 2).Value = wb.Sheets(1).Range("B10").Value
          .Cells(Ligne, 3).Value = wb.Sheets(1).Range("D10").Value
          .Cells(Ligne, 4).Value = wb.Sheets(1).Range("F10").Value
          .Cells(Ligne, 5).Value = wb.Sheets(1).Range("B12").Value
          .Cells(Ligne, 6).Value = wb.Sheets(1).Range("D12").Value
          .Cells(Ligne, 7).Value = wb.Sheets(1).Range("F12").Value
          .Cells(Ligne, 8).Value = wb.Sheets(1).Range("B41").Value
          .Cells(Ligne, 9).Value = wb.Sheets(1).Range("C43").Value
          .Cells(Ligne, 10).Value = wb.Sheets(1).Range("C45").Value
      End With
          End If
      Next wb
      
      End Sub


      Ce code impose l'ouverture préalable de tous les fichier excel contenant les données. Et uniquement ces fichiers.

      Le fichier exemple : https://www.cjoint.com/c/EJmjBZdxLef

      Le fichier nommé "Récapitulatif" est enregistré dans "Mes documents".

      Merci de me dire si ce code vous convient.

      Cordialement.
      0
    3. borisparis Messages postés 87 Statut Membre 1
       
      Merci
      Ou dois-je mettre les fichiers sources pour qu'il les trouves ?
      0
    4. Kuartz Messages postés 852 Date d'inscription   Statut Membre Dernière intervention   65
       
      Le code ci-dessus traite tous les fichiers excel ouverts. Donc il faut ouvrir tous les fichiers source. Il est également possible de tous les ouvrir au préalable si vous me donnez le chemin où ils se trouvent. Il faut cependant qu'il n'y ait dans ce dossier QUE vos fichiers source. Le chemin sera sous la forme (C:\....). Sinon le code marche si vous ouvrez tous vos fichiers source à traiter.
      0
    5. borisparis Messages postés 87 Statut Membre 1
       
      Merci beaucoup . C'est vraiment parfait, même génial pour moi.
      0