Copie de données de plusieurs fichiers fermés

darkvad

XLDnaute Nouveau
Bonjour,

J'essaie de réaliser une situation d'effectif. Pour ce faire j'ai 8 classeurs Excel (1 par service) et un fichier global (situation d'effectif) dans lequel je retrouve une la liste complète des personnels se trouvant dans les 8 fichiers(la liste des personnels peut évoluer). Ma question est : est-il possible que mon fichier global (situation d'effectif) récupère les données dans les autres fichiers (DRH, ATELIER ...) pour faire la synthèse ?
J'arrive à récupérer les données d'un fichiers mais pas a mettre celles d'un autre fichier à la suite.

Si quelqu'un peux me donner un petit coup de main.

Merci
 

Pièces jointes

  • ADMINISTRATION.xls
    23 KB · Affichages: 47
  • ATELIER.xls
    20.5 KB · Affichages: 43
  • DRH.xls
    20.5 KB · Affichages: 63
  • situation effectif.xls
    36.5 KB · Affichages: 47
  • ATELIER.xls
    20.5 KB · Affichages: 43
  • ADMINISTRATION.xls
    23 KB · Affichages: 53
  • ATELIER.xls
    20.5 KB · Affichages: 44
G

Guest

Guest
Re : Copie de données de plusieurs fichiers fermés

Bonjour,

A noter dans la macro suivante:

1 - Boucle for sur un tableau contenant les noms de feuilles (fichiers). (Attention la feuille de Administration.xls ne s'appelle pas 'administration' --->plantage!!!)

2 - Modification de la chaine de connexion pour inclure les entêtes des tableaux

3 - Détermination d'une plage A4:A1000 dans la requête pour ne par retourner les lignes vides en haut de chaque feuille.

4 - Inclusion d'une clause WHERE pour ne pas ramener les lignes vides des plages A4:H1000

Code:
 Sub RequeteClasseurFerme()
    Dim Cn As ADODB.Connection
    Dim Fichier As String
    Dim NomFeuille, texte_SQL As String
    Dim Rst As ADODB.Recordset
    
    For Each NomFeuille In Array("DRH", "ATELIER", "ADMINISTRATION")
    
    'Définit le classeur fermé servant de base de données
    Fichier = ThisWorkbook.Path & "\" & NomFeuille & ".xls"
        
    Set Cn = New ADODB.Connection
    
    '--- Connection ---
    With Cn
        .Provider = "Microsoft.Jet.OLEDB.4.0"
        .ConnectionString = "Data Source=" & Fichier & _
            ";Extended Properties=""Excel 8.0;HDR=yes;"""
        .Open
    End With
    '-----------------
    
    'Définit la requête.
    '/!\ Attention à ne pas oublier le symbole $ après le nom de la feuille.
    texte_SQL = "SELECT * FROM [" & NomFeuille & "$A4:H1000] WHERE SERVICE<>'';"
    
    Set Rst = New ADODB.Recordset
    Set Rst = Cn.Execute(texte_SQL)
    
    'Ecrit le résultat de la requête
      Range("A" & Rows.Count).End(xlUp)(2).CopyFromRecordset Rst
            
   
    
    '--- Fermeture connexion ---
    Cn.Close
    Set Cn = Nothing
    '-----------------
    Next
End Sub

A+
 

darkvad

XLDnaute Nouveau
Re : Copie de données de plusieurs fichiers fermés

Merci beaucoup.

Je viens de rentrer et voir la réponse. Je vai essayer de bien comprendre le code. Merci encore.

Lol je n'arrivais pas à le faire fonctionner. J'avais oublié d'activer la référence microsoft ADO.
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 581
Messages
2 089 916
Membres
104 305
dernier inscrit
EDIT