Bonjour
J'avais déjà posté ici afin de pouvoir générer plusieurs fichiers à partir d'un seul.
Maintenant je cherche une solution pour mettre à jour mon fichier source et donc les refusionner.
J'ai trouvé les macros suivantes mais ça ne va pas
Pour récupérer tous les fichiers dans un seul classeur :
Mais mes fichiers sont créés dans un nouveau classeur et donc les macros doivent être recopiées ...
Bref ensuite pour fusionner les fichiers en un seul :
et enfin pour masquer les feuilles sauf la dernière que je viens de créer
Tout ça n'est pas très "propre" et surtout je ne peux pas lancer les macros automatiquement car après la première étape les informations sont dans un nouveau fichier.
Avez vous une idée ? (Vous l'aurez compris ... je n'y comprends rien en vba...)
Je dois absolument garder la mise en forme de mes fichiers et dans l'idéal garder ma première ligne (uniquement 1 fois sur la première ligne) et enfin si possible, que le résultat soit filtrer.
Le but étant au final de recopier ce tableau fusionné dans mon tableau source.
Tout mes fichiers ont la même structure puisque ils sont tous extraits d'un fichier source (ensuite mis à jour par chaque collaborateur et renvoyé à moi même pour la mise à jour globale).
Merci beaucoup
J'avais déjà posté ici afin de pouvoir générer plusieurs fichiers à partir d'un seul.
Maintenant je cherche une solution pour mettre à jour mon fichier source et donc les refusionner.
J'ai trouvé les macros suivantes mais ça ne va pas
Pour récupérer tous les fichiers dans un seul classeur :
Code:
Sub ConvertirFichiersEnFeuilles()
On Error GoTo gesterreur
Dim VarListeFichiers As Variant, VarFichier As Variant, WkClasseur As Workbook, WkFinal As Workbook, WsFeuille As Worksheet
VarListeFichiers = Application.GetOpenFilename(filefilter:="Classeurs eXceL,*.xlsx", Title:="Choisissez les Classeurs à récupérer", MultiSelect:=True)
If VarType(VarListeFichiers) = vbBoolean Then MsgBox "Abandon !": Exit Sub 'pour identifier le bouton annuler
Set WkFinal = Workbooks.Add 'générer le classeur final
For Ctr = 1 To UBound(VarListeFichiers)
MsgBox VarListeFichiers(Ctr)
Set WkClasseur = Workbooks.Open(Filename:=VarListeFichiers(Ctr))
Set WsFeuille = WkClasseur.Worksheets(1)
WsFeuille.Move before:=WkFinal.Worksheets(1)
WkClasseur.Close savechanges:=False
Next
'For Each VarFichier In VarListeFichiers
'Next VarFichier
Exit Sub
gesterreur:
'classeur vide
If Err.Number = -2147221080 Then
Resume Next
End If
End Sub
Mais mes fichiers sont créés dans un nouveau classeur et donc les macros doivent être recopiées ...
Bref ensuite pour fusionner les fichiers en un seul :
Code:
Sub RegroupeFeuilles() 'dans "Feuil1"
Dim Lg&, Sh As Worksheet, f As Worksheet
Set f = Sheets("Feuil1")
f.Range("a2:AE" & f.[a65000].End(xlUp).Row).ClearContents 'efface Récap
For Each Sh In Worksheets
If Sh.Name <> f.Name And Sh.Name <> "bibi" Then 'feuilles à ne pas traiter
Lg = Sh.Range("a" & Rows.Count).End(xlUp).Row
Sh.Range("a2:AE" & Lg).Copy Destination:= _
f.Range("a" & Rows.Count).End(xlUp)(2)
End If
Next
End Sub
et enfin pour masquer les feuilles sauf la dernière que je viens de créer
Code:
Sub retirer()
Dim ws As Worksheet
For Each ws In Worksheets
Application.DisplayAlerts = False
If ws.Name <> "Feuil1" Then ws.Delete
Next
Application.DisplayAlerts = True
End Sub
Tout ça n'est pas très "propre" et surtout je ne peux pas lancer les macros automatiquement car après la première étape les informations sont dans un nouveau fichier.
Avez vous une idée ? (Vous l'aurez compris ... je n'y comprends rien en vba...)
Je dois absolument garder la mise en forme de mes fichiers et dans l'idéal garder ma première ligne (uniquement 1 fois sur la première ligne) et enfin si possible, que le résultat soit filtrer.
Le but étant au final de recopier ce tableau fusionné dans mon tableau source.
Tout mes fichiers ont la même structure puisque ils sont tous extraits d'un fichier source (ensuite mis à jour par chaque collaborateur et renvoyé à moi même pour la mise à jour globale).
Merci beaucoup
Dernière édition: