Listing adresses - Automatiser le report de plusieurs lignes sur une seule

Pablo1991

XLDnaute Nouveau
Bonjour à toutes et à tous,

Je réalise un travail de recherche et je dois envoyer un questionnaire online à environ 800 entreprises comme un publipostage avec les champs personnalisé à chaque destinataire (il paraît que ça augmente les chances de réponse!)

Pour ce faire, j'ai acheté une base de donnée contenant toutes les informations importantes.

Le hic, c'est que cette base de donnée affiche les mêmes informations à répétitions sur plusieurs lignes, on retrouve donc 2-3-4-5-6-7-8-9x la même adresse e-mail parfois et le risque est que je sois considéré comme SPAM..

La raison pour laquelles les entreprises sont dupliquées se trouve entre la colonne T à X car en fait, chaque ligne donne le le nom, prénom fonction et forme de politesse pour chaque membre de la direction (directeur, responsable RH, responsable marketing et ainsi de suite).

J'aimerais en fait trouver un moyen de reporter ces lignes sur la droite de la première ligne comme sur le fichier excel en pièce jointe de sorte à ce que lorsque je met le champs "responsable" dans le mail, cela ne me donne pas le nom du premier sur la liste mais celui du bon interlocuteur. J'âurais donc un champs "Responsable direction", "Responsable Marketing et Ventes", "Responsable Communication" par exemple.

Est-ce que c'est possible à faire sur excel?


Sinon j'ai découvert la méthode manuelle, mais ça fait quand même 2879 lignes à reporter dans le fichier initial, autant vous dire qu'est ça s'annoncerait (très) long et laborieux xD

Fichier en pièce jointe,

Très bonne après-midi et merci,
Pablo
 

Pièces jointes

  • Echantillon BDD + présentation souhaitée.xlsx
    22.6 KB · Affichages: 26

chris

XLDnaute Barbatruc
Re : Listing adresses - Automatiser le report de plusieurs lignes sur une seule

Bonjour

Il serait plus simple d'ajouter une colonne avec une formule donnant 0 ou 1 selon que la ligne, en fonction de la valeur de X, est celle qui correspond à tes souhaits.

Après il est simple dans Word de filtrer sur cette colonne.

Tu peux aussi prévoir une colonne avec un libellé à toi et filtrer dessus mais cela implique de transposer les fonctions d'origine avec les tiennes...
 

klin89

XLDnaute Accro
Re : Listing adresses - Automatiser le report de plusieurs lignes sur une seule

Bonsoir le forum, :)

A tester :
VB:
Option Explicit

Sub Regroupement()
Dim a, i As Long, j As Long, n As Long, col As Byte, w
    a = Sheets("Feuil1").Range("A2").CurrentRegion.Value
    col = UBound(a, 2): n = 1: a(1, 20) = "Fonction n° 1"
    With CreateObject("Scripting.Dictionary")
        For i = 2 To UBound(a, 1)
            If Not .exists(a(i, 2)) Then
                n = n + 1: .Item(a(i, 2)) = VBA.Array(n, col)
                For j = 1 To col
                    a(n, j) = a(i, j)
                Next
            Else
                w = .Item(a(i, 2)): w(1) = w(1) + 5
                If UBound(a, 2) < w(1) Then
                    ReDim Preserve a(1 To UBound(a, 1), 1 To w(1))
                    a(1, w(1) - 4) = a(1, 20)
                    a(1, w(1) - 3) = a(1, 21)
                    a(1, w(1) - 2) = a(1, 22)
                    a(1, w(1) - 1) = a(1, 23)
                    a(1, w(1)) = a(1, 24)
                End If
                For j = 1 To 5
                    a(w(0), w(1) - 5 + j) = a(i, j + 19)
                Next
                .Item(a(i, 2)) = w
            End If
        Next
    End With
    'Restitution et mise en forme en Feuil2
    Application.ScreenUpdating = False
    With Sheets("Feuil2").Cells(1).Resize(n, UBound(a, 2))
        .CurrentRegion.Clear
        .Value = a
        With .CurrentRegion
            .Font.Name = "calibri"
            .Font.Size = 10
            .HorizontalAlignment = xlCenter
            .VerticalAlignment = xlCenter
            .Borders(xlInsideVertical).Weight = xlThin
            .BorderAround Weight:=xlThin
            With .Rows(1)
                .Font.Size = 11
                .Interior.ColorIndex = 38
                .BorderAround Weight:=xlThin
            End With
            .Columns.AutoFit
            .Rows.RowHeight = 19
        End With
        If UBound(a, 2) > 24 Then
            With .Offset(, 19).Resize(1, 5)
                .AutoFill .Resize(, UBound(a, 2) - 19)
            End With
        End If
        .Parent.Select
    End With
    Application.ScreenUpdating = True
End Sub
klin89
 

Pièces jointes

  • Pablo.xls
    67.5 KB · Affichages: 32

gosselien

XLDnaute Barbatruc
Re : Listing adresses - Automatiser le report de plusieurs lignes sur une seule

Bonjour le forum,

pas sûr d'avoir compris ton problème mais un publipostage entre Word et excel peut se faire comme ceci:
pour l'exemple, j'ai mis dans le document word quelques champs du fichier excel et on n'envoie le mail qu'aux gens qui ont la colonne "désignation" non vide. Cette colonne a été triée auparavant.
(word 2007-excel 2007)
P.
 

Pièces jointes

  • Publipostage Pablo1991.docx
    11.3 KB · Affichages: 20
  • Echantillon BDD Pablo1991.xlsx
    22.8 KB · Affichages: 20

Discussions similaires

Statistiques des forums

Discussions
312 226
Messages
2 086 414
Membres
103 204
dernier inscrit
alaa20dine01