Récupérer dans un tableau informations de plusieurs fichiers Excel

shinobi68

XLDnaute Nouveau
Bonsoir,

Je vous expose mon souci.
Je dois consolider dans un seul tableau Excel les noms et les vacations perçues par plusieurs personnes.
Les personnes sont 38 au total, mais d'une intervention à l'autre ce ne sont pas les mêmes qui interviennent.
Il y a un fichier Excel par intervention (exemple joint, débutant par date du jour)
Je vous joint les fichiers en question.
Dans le fichier des vacations, il faudrait donc que je récupère la liste des intervenants, qui ne sont pas toujours les les mêmes avec à côté la somme perçue, le tout dans une colonne portant la date de l'intervention (onglet recto).
J'ai environ 150 fichiers Excel sur une année, tous avec des noms différents ayant comme début de nom la date du jour,etc.....
Il faudrait donc que je récupère dans mon fichier de vacations autant de colonnes que de fichiers Excel correspondant aux interventions.
La liste totale des intervenants n'est pas toujours la même (arrivée ou démission).
Voilà, j'espère que c'est assez clair, sinon je donnerai des précisions. :)
 

Pièces jointes

  • 20110825-SAP-VILLE-123456.xlsm
    43.9 KB · Affichages: 115
  • Vacations.xlsx
    9.9 KB · Affichages: 99

CHALET53

XLDnaute Barbatruc
Re : Récupérer dans un tableau informations de plusieurs fichiers Excel

Bonjour,

Pourquoi autant de fichiers ?
Un seul fichier avec autant d'onglets que d'intervention (le nom de l'onglet serait la date d'intervention) et une feuille de synthèse ne serait-il pas plus judicieux
Ouvrir 150 fichiers (un peu lourd même en vba)
a+
 

Victor21

XLDnaute Barbatruc
Re : Récupérer dans un tableau informations de plusieurs fichiers Excel

Bonjour, shinobi68, le forum.

J'ai adapté cette macro(dont je ne connais pas l'auteur).
VB:
Private Sub cmdRecupere_Click()
    'Dim intFile As Integer
    Dim CeFichier As String
    Dim RapportInter As String
    Dim DerCol As Long

    Application.ScreenUpdating = False
    Application.EnableEvents = False

    ' Nom du classeur actuel 
    CeFichier = ThisWorkbook.Name

    DerCol = 4
    Application.Goto Reference:="Tout"
    Selection.ClearContents

    ' Récupération du premier fichier dans le répertoire
    RapportInter = Dir(ThisWorkbook.Path & "\*.xls")

    ' Boucle du 1er au dernier classeur dans le répertoire
    Do While RapportInter <> ""
    ' Si le classeur n'est pas "Vacations.xls"
        If RapportInter <> CeFichier Then
    ' Ouvrir le fichier
            Workbooks.Open ThisWorkbook.Path & "\" & RapportInter

    ' Sélectionner le 2me onglet
            ActiveWorkbook.Worksheets("Etat de frais").Activate
    ' Copier la 1° colonne dans le classeur Total
            Worksheets("Etats de frais").Range("O3:O43").Copy
            Workbooks(CeFichier).Worksheets("Feuil1").Activate
            Cells(2, DerCol).Value = RapportInter
            Cells(3, DerCol).Select

            Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
                                                                                   False, Transpose:=False
            DerCol = DerCol + 1
    ' Fermeture du classeur sans sauvegarde
            Workbooks(RapportInter).Close SaveChanges:=False
        End If

    ' Classeur suivant
        RapportInter = Dir
    Loop

    MsgBox "Le traitement des fichiers est terminé.", vbInformation, "Traitement..."
    Range("A2").Select

    Application.ScreenUpdating = True
    Application.EnableEvents = True
End Sub

Placée dans Vacations, elle effacera la zone nommée Tout : D2:IV42 de la feuille 2010, ouvrira tous les fichiers de ton répertoire, et copie-collera le nom du fichier en D2, D3 et suivant, et les montants des cellules O3:O43 dans les colonnes D et suivante de Vacations.
Au lancement,
Le problème, et je ne sais pas le résoudre, est qu'aucun test n'est effectué sur les noms, (il y aura un décallage en cas de suppression - ajout de nom) et qu'une boucle risque d'alourdir considérablement le traitement.
J'espère qu'un vbaiste plus qualifié que moi pourra te proposer une meilleure solution.
(Tableau ?)

PS : attention : les noms dans tes deux fichiers devront être strictement identiques : actuellement User1(sans espace) et User 1(avec espace)
 

shinobi68

XLDnaute Nouveau
Re : Récupérer dans un tableau informations de plusieurs fichiers Excel

Bonjour,

Il y a un fichier par intervention car les intervenants ne sont jamais les mêmes, chacun possède une trame vierge qu'il remplit de son côté.
Les interventions devant être dissociées au niveau de leur descriptif ou actions.
C'est pour cela que je dois uniquement récupérer le coût de chacune d'elle et les rassembler dans un seul tableau pour le bilan annuel.
 

Victor21

XLDnaute Barbatruc
Re : Récupérer dans un tableau informations de plusieurs fichiers Excel

Bonjour à tous.

Un petit up pour notre ami pompier :)

J'ai bien quelques idées, mais ne parviens pas à les concrétiser :eek:
- Tester la partie date des noms des fichiers pour contrôler qu'ils n'ont pas encore été traités.
- Sinon rajouter les nouvelles dates en tête de colonne, ajouter les noms qui n'apparaissent pas encore dans le récap.
- Utiliser sommeprod() pour renseigner les bonnes lignes...
 

Pierrot93

XLDnaute Barbatruc
Re : Récupérer dans un tableau informations de plusieurs fichiers Excel

Bonsoir,
@Victor:),
J'ai bien quelques idées, mais ne parviens pas à les concrétiser
- Tester la partie date des noms des fichiers pour contrôler qu'ils n'ont pas encore été traités.

pas tout suivi, mais pour récupérer la date dans le nom du fichier, peut être ainsi :

Code:
Dim d As Date, a As Integer, m As Integer, j As Integer
With ActiveWorkbook
    a = Mid(.Name, 1, 4)
    m = Mid(.Name, 5, 2)
    j = Mid(.Name, 7, 2)
End With
d = DateSerial(a, m, j)

bonne soirée
@+
 

Victor21

XLDnaute Barbatruc
Re : Récupérer dans un tableau informations de plusieurs fichiers Excel

Re, shinobi68.

Peut-il y avoir plusieurs fichiers pour une même date ?
Autrement dit, les 8 premiers caractères suffisent-ils à identifier un fichier ?
 

shinobi68

XLDnaute Nouveau
Re : Récupérer dans un tableau informations de plusieurs fichiers Excel

Il peut y avoir plusieurs interventions le même jour.....dans une même ville....de même type d'intervention (ex NDG) mais alors c'est le numéro d'intervention (dernier chiffre) qui va changer.
 

Victor21

XLDnaute Barbatruc
Re : Récupérer dans un tableau informations de plusieurs fichiers Excel

Bonjour, Shinobi, le forum.

Désolé que ce fil n'ait pas plus inspiré les spécialistes du VBA, hormi Pierrot93 :). Un test plein de maladresses, mais qui semble fonctionner chez moi (Excel 2003) en PJ).
Dis-moi.

Précision : le dossier doit être décompressé, et tous les noms doivent être préalablement inscrits dans Vacations
 

Pièces jointes

  • Pompiers.zip
    67.4 KB · Affichages: 78
Dernière édition:

shinobi68

XLDnaute Nouveau
Re : Récupérer dans un tableau informations de plusieurs fichiers Excel

En tout cas ça fonctionne.......il suffit que je remplace les user par la liste des vraies personnes ?
Par contre comment ça se passe si une personne a démissionné ? et donc qui se trouvait dans un rapport mais pas sur la dernière liste en date ?
Désolé pour toutes ces questions, mais je ne suis de loin pas Vbaiste chevronné. :eek:
 

Victor21

XLDnaute Barbatruc
Re : Récupérer dans un tableau informations de plusieurs fichiers Excel

Re, shinobi.

il suffit que je remplace les user par la liste des vraies personnes ?
Oui. Attention, il faut que les noms dans le récap et dans les fichiers d'intervention soient strictement orthographiés de manière identique, et il ne faut pas supprimer du fichier récap les noms des démissionnaires. Tu peux faire un test en supprimant un nom sur un fichier d'intervention pour simuler une démission : le montant pour ce nom et cette intervention sera à 0.
Par contre, tu dois ajouter les noms des nouveaux entrants. Il n'est pas nécessaire que les noms soient classés.

Telle quelle, la macro :
  1. - Efface le fichier récap
  2. - Ouvre chaque fichier du répertoire,
  3. - Place en face des noms du fichier récap les sommes correspondantes, si elles existent,
  4. - Referme les fichiers du répertoire, sans rien y changer.
Donc si tous les noms figurent dans le récap, tous les montants apparaitront.


:)
 

Discussions similaires

Statistiques des forums

Discussions
312 506
Messages
2 089 122
Membres
104 039
dernier inscrit
ERe