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.
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+
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)
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.
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
- 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...
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)
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.
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
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é.
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 :
- Efface le fichier récap
- Ouvre chaque fichier du répertoire,
- Place en face des noms du fichier récap les sommes correspondantes, si elles existent,
- Referme les fichiers du répertoire, sans rien y changer.
Donc si tous les noms figurent dans le récap, tous les montants apparaitront.