Microsoft 365 Macro ou autre pour préparer fichier publipostage

  • Initiateur de la discussion Initiateur de la discussion mozza
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

mozza

XLDnaute Nouveau
Bonjour à tous,

Afin de préparer un fichier publipostage à destination d'un client, je dois mettre en forme celui-ci à la main. Je m'explique :
Ma feuille Excel regroupe des siret, des n°de magasins et des salariés, il y a une ligne par salarié. Pour le publipostage le fichier ne doit plus comporter qu'une ligne par magasin et siret. Ce qui veut dire que dans la colonne des noms, ils sont regroupés dans 1 seule cellule pour 1 mag et siret (voir Fichier en PJ). Aujourd'hui je fais ça à la main mais j'imagine qu'il y a moyen d'automatiser cela par une macro ou autre chose ?

Merci de votre aide
 

Pièces jointes

Bonjour Mozza, Chris,
Et pour ceux qui n'ont pas PQ, et comme c'est fait, une solution VBA.
Il suffit de sélectionner la feuille "résultat souhaité" la macro s'exécute automatiquement :

VB:
Sub Worksheet_Activate()
Dim DL%, L%, i%, Chaine$, Numéro
[A:C].Clear                                                                     ' suppression colonnes A:C
Application.ScreenUpdating = False                                              ' figeage écran
DL = Sheets("Source").Cells(Cells.Rows.Count, "A").End(xlUp).Row                ' dernière ligne de la source
tablo = Sheets("Source").Range("A1:C" & DL).Value                               ' données source dans tableau
Range("A1:C" & DL) = Sheets("Source").Range("A1:C" & DL).Value                  ' copie données source dans feuille
[A:C].Resize(DL).Sort key1:=[B1], order1:=xlAscending, Header:=xlYes            ' tri sur N°
[A:C].RemoveDuplicates Columns:=2, Header:=xlYes                                ' suppression doublons
[A:A].NumberFormat = "0"                                                        ' format correct pour Siret
DL = Cells(Cells.Rows.Count, "A").End(xlUp).Row                                 ' dernière ligne de feuille
Range("A1:C" & DL).Borders.Weight = xlThin                                      ' quadrillage
For L = 2 To DL                                                                 ' pour toutes les lignes
    Numéro = Cells(L, "B"): Cells(L, "C") = "": Chaine = ""                     ' mémorisation N°, et init variables
    For i = 2 To UBound(tablo)                                                  ' pour toutes données de source
        If tablo(i, 2) = Numéro Then Chaine = Chaine & tablo(i, 3) & Chr(10)    ' si même N° on l'ajoute
    Next i
    Cells(L, "C").FormulaR1C1 = Mid(Chaine, 1, Len(Chaine) - 1)                 ' à la fin on range le résultat
Next L
[A:C].VerticalAlignment = xlCenter                                              ' mise en forme vertical
[B:B].HorizontalAlignment = xlCenter                                            ' et horizontal
End Sub
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
1
Affichages
603
Retour