XL 2013 Eclater 4 fichiers par macro

nat54

XLDnaute Barbatruc
Bonjour,

Bien qu'ayant conservé d'anciennes macros réalisées notamment grâce à ce forum, je suis en galère d'où ma venue.

Le topo : je dispose de 4 fichiers Excel (extractions de Business Objects) dans lesquels j'ai les destinataires selon un code.
Les 4 fichiers suivent la même trame : les données commencent en B4 jusque Qxxx
--> EJ
--> chrono
--> SF
--> DP

Mon objectif : créer un fichier par destinataire avec 4 onglets (un onglet EJ, un chrono, un SF, un DP)
J'ai entre 10 et 12 destinataires : 1001, 1002 ...

J'ai anonymisé les 4 fichiers

Pourriez-vous svp m'aider ?

Un grand merci d'avance,
 

Pièces jointes

  • (EB)_Chronofactures_en_instance_copie.xlsx
    32.6 KB · Affichages: 16
  • (EB)_DP_en_instance_copie.xlsx
    19.3 KB · Affichages: 11
  • (EB)_Engagements_+3mois_non_soldés_copie.xlsx
    53.9 KB · Affichages: 7
  • (EB)_SF_en_instance_copie.xlsx
    18.8 KB · Affichages: 8

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
re,

Voila, je t'ai fait un truc rapide
tu lances la macro
tu sélectionnes successivement les quatre fichiers sources
les fichiers résultants sont enregistrés au même endroit que le classeur contenant la macro
j'y ai mis des filtres pour le destinataire mais on peut supprimer les autres données si, tu préfères.

si tes fichiers sources sont tous au même endroit, on peut simplifier en autorisant la multi sélection.

Bien cordialement, @+
[ édition : code modifié ]
 
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir à tous,

Un autre essai:

Mettre dans un dossier le fichier .xlsm
Dans ce dossier, créer un dossier nommé "Source" (c'est paramétrable) et y placer tous les 4 fichiers sources
Cliquer sur le bouton Hop !
Les fichiers résultats seront dans un nouveau répertoire nommé Ventil du date heure

Voir le fichier joint qui comprend tout cela.
 

Pièces jointes

  • nat54.zip
    103.2 KB · Affichages: 5

job75

XLDnaute Barbatruc
Bonsoir nat54, Yeahou, mapomme,

Une solution avec un fichier modèle pour le formatage.

Téléchargez les 6 fichiers joints dans le même dossier (le bureau) et exécutez la macro du bouton :
VB:
Sub Ventiler()
Dim chemin$, Source, n As Integer, i As Integer, flag As Boolean, model As Workbook, P As Range
chemin = ThisWorkbook.Path & "\" 'dossier à adapter éventuellement
If Dir(chemin & "Ventilation\", vbDirectory) = "" Then MkDir chemin & "Ventilation\" 'crée le sous-dossier
Source = Array("Source_SF.xlsx", "Source_EJ.xlsx", "Source_Chrono.xlsx", "Source_DP.xlsx") 'à adapter
Application.ScreenUpdating = False
Application.DisplayAlerts = False
For n = 0 To UBound(Source)
    Workbooks.Open chemin & Source(n) 'ouverture des fichiers sources
Next n
For i = 1001 To 1012
    flag = False
    Set model = Workbooks.Open(chemin & "Modele.xlsx")
    For n = 0 To UBound(Source)
        Set P = Workbooks(Source(n)).Sheets(1).Columns(2)
        If Application.CountIf(P, i) Then
            flag = True
            P.Replace i, "#N/A", xlWhole
            P.SpecialCells(xlCellTypeConstants, 16).EntireRow.Copy model.Sheets(n + 1).Range("A4")
            P.Replace "#N/A", i
            model.Sheets(n + 1).Columns(2).Replace "#N/A", i
        End If
    Next n
    If flag Then model.SaveAs chemin & "Ventilation\" & i & ".xlsx": Workbooks(i & ".xlsx").Close
Next i
For n = 0 To UBound(Source)
    Workbooks(Source(n)).Close False 'fermeture des fichiers sources
Next n
On Error Resume Next
model.Close
MsgBox "Ventilation effectuée dans le dossier '" & chemin & "Ventilation'"
End Sub
A+
 

Pièces jointes

  • Source_SF.xlsx
    13.9 KB · Affichages: 3
  • Source_EJ.xlsx
    48.6 KB · Affichages: 2
  • Source_Chrono.xlsx
    22.7 KB · Affichages: 2
  • Source_DP.xlsx
    13.9 KB · Affichages: 2
  • Modele.xlsx
    12.9 KB · Affichages: 2
  • Pilote(1).xlsm
    19.5 KB · Affichages: 3

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
Bonjour
@Yeahou : j'ai utilisé ta 3è proposition, c'est bien, mais les fichiers résultats s'enregistrent où ??
dans le dossier du classeur contenant la macro, si tu l'as utilisé directement en l'ouvrant du site, les fichiers se sont créés dans le dossier temporaire.
enregistre le fichier nat54 quelque part et, là, les fichiers se créeront au même endroit quand tu lanceras la macro

Bonne journée
 
Dernière édition:

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 229
Messages
2 086 426
Membres
103 206
dernier inscrit
diambote