IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Word Discussion :

Multi-fusion à l'aide d'un tableau dans un seul document


Sujet :

Word

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    apt
    apt est déconnecté
    Membre éclairé
    Inscrit en
    Mai 2002
    Messages
    867
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 867
    Par défaut Multi-fusion à l'aide d'un tableau dans un seul document
    Bonjour à tous,

    J’aimerais réaliser un publipostage simple et multiple selon la référence de la décharge (Etiquette Réf/Bon de la colonne C dans la feuille Excel)

    S’il n’y a qu’une ligne à fusionner, c’est un publipostage simple, et je dois utiliser le document de fusion "Décharge.doc", avec insertion des champs de fusion dans le texte seulement d’une lettre type.

    S’il y a plus d’une ligne à fusionner, c’est un publipostage multiple, et je dois utiliser un deuxième document de fusion "Déchargetableau.doc", avec insertion des champs de fusion dans un texte en plus d’un tableau multi-lignes.

    Dans l’exemple Excel fournie, il y a trois lignes à fusionner (Marquées par une croix « X » dans la colonne O) :

    - Réf/Bon = 002/13 : 1 ligne => Fusion simple dans le document Décharge.doc

    - Réf/Bon = 010/13 : 2 lignes => Fusion multiple dans le document DéchargeTableau.doc

    1) Y a-t-il une possibilité de n’avoir qu’un document de fusion entre les deux documents présents dans l’exemple fournie ?

    2) Comment dire à Word, dans le cas de la fusion multiple, qu’il y a plusieurs lignes à intégrer dans le tableau pour une seule référence (Ici Réf/Bon = 010/13) ?

    Des liens que j’ai lu, mais je n’ai pu adapter l’exemple fournie à mon besoin :

    http://support.microsoft.com/kb/189025/fr
    http://support.microsoft.com/kb/212375/fr


    Merci d’avance.
    Fichiers attachés Fichiers attachés

  2. #2
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 086
    Par défaut
    Salut,

    Sans code, on en peut pas le faire.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  3. #3
    apt
    apt est déconnecté
    Membre éclairé
    Inscrit en
    Mai 2002
    Messages
    867
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 867
    Par défaut
    Bonjour Heureuxoli,

    Voila la macro Excel que j'utilise, mais elle ne focntionne pas bien encore :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    Sub PublipostageTest()
        Dim C As Range, Plage As Range, Sh As Worksheet, Acc As Range
        Dim NbreX As Long, L As Long, Cel As Range
        Dim Wd As Word.Application, WdDoc As Word.Document
        Dim Chemin As String, Fichier As String, Source As String
     
     
        'En supposant que le document Word est dans le
        'même répertoire que le fichier Excel ouvert
        Chemin = ThisWorkbook.Path & "\"
     
        'Chemin & Nom du fichier Excel où est le tableau des données
        'Ce fichier est présumé ouvert
        Source = ThisWorkbook.FullName
        'MsgBox "Chemin : " & Chemin & vbCrLf & _
               "Fichier : " & Fichier & vbCrLf & _
               "Chemin & Fichier : " & Chemin & Fichier & vbCrLf & _
               "Source : " & Source
     
        With Sheets("feuil1")
            .Activate
            NbreX = Application.CountIf(.Range(.[O2], .[O65536]), "x")
            If NbreX = 0 Then
                MsgBox "Il n'y a pas d'étiquette à extraire.", vbInformation + vbOKOnly
                .Range("A1").Select
                Exit Sub
            End If
        End With
     
     
        'Attribution d'un nom "Insertion / names" de la plage de données du tableau
        With Workbooks(ThisWorkbook.Name).Worksheets("Feuil1")
            .Range("A1:O" & .Range("A65536").End(xlUp).Row).Name = "Données"
        End With
     
     
        '---------
     
        With Sheets("Feuil1")
            .AutoFilterMode = False
            Set Plage = .Range(.[C1], .Cells(.Rows.Count, 3).End(xlUp))
     
            'Plage.AdvancedFilter xlFilterInPlace, unique:=True
            .Range(.[A1], .Cells(.Rows.Count, 1).End(xlUp)).Resize(, 15).AutoFilter 15, "x"
            Set Plage = Plage.Offset(1).Resize(Plage.Rows.Count - 1)
            Set Plage = Plage.SpecialCells(xlCellTypeVisible)
            .ShowAllData
            For Each C In Plage
                .AutoFilterMode = False
                .Range(.[A1], .Cells(.Rows.Count, 1).End(xlUp)).Resize(, 15).AutoFilter 3, C.Value
                .Range(.[A1], .Cells(.Rows.Count, 1).End(xlUp)).Resize(, 15).AutoFilter 15, "x"
     
                'on test le nombre d'occurence de C dans la plage filtrée
                If Application.Subtotal(103, .[A:A]) > 2 Then
     
                    '+1 on utilise le deuxième modèle pour le publipostage avec un tableau
                    'MsgBox "Lignes supérieur à 2 :" & Application.Subtotal(103, .[A:A])
                    Fichier = "DéchargeTableau.doc"
                    L = 1
                Else
                    'MsgBox "Lignes inférieur ou égal à 2 :" & Application.Subtotal(103, .[A:A])
                    Fichier = "Décharge.doc"
                    L = 0
                End If
                With .AutoFilter.Range
                    Set Acc = .Offset(1).Resize(.Rows.Count - 1).SpecialCells(xlCellTypeVisible)
     
                    'Création d'une instance de Word
                    Set Wd = CreateObject("Word.Application")
     
                    'Rendre visible ou nom l'application Word
                    Wd.Visible = True    ' or False
     
                    'Ouverture du document pour la publication
                    Set WdDoc = Wd.Documents.Open(Chemin & Fichier)
     
                    With WdDoc.MailMerge
     
                        .OpenDataSource Name:=Source, _
                                        Connection:="Driver={Microsoft Excel Driver (*.xls)};" & "DBQ=" & _
                                                    Chemin & "; ReadOnly=True;", SQLStatement:="SELECT * FROM [feuil1$] WHERE [impression] like 'x' OR [impression] like 'X'"
     
     
                        ' Lancer l'impression du publipostage
                        .Destination = wdSendToNewDocument    ' OU wdSendToPrinter
     
                        'parcourir la plage Acc ligne par ligne pour la fusion
                        For Each Cel In Acc.Column(3).Address
     
                            With .DataSource
                                .FirstRecord = wdDefaultFirstRecord
                                .LastRecord = wdDefaultLastRecord
                            End With
                            .Execute Pause:=False
                            'Prochaine ligne dans Acc
                        Next Cel
     
                        'Attente que l'impression soit terminée avant de fermé
                        'le document et Word
                        While Wd.BackgroundPrintingStatus <> 0
                            DoEvents
                        Wend
     
                    End With
                    WdDoc.Close SaveChanges:=wdDoNotSaveChanges  'Ferme le document
                    'Ferme Word
                    Wd.Quit wdDoNotSaveChanges
     
                    '-------------
                End With
     
            Next C
            .AutoFilterMode = False
            'Libère la mémoire occupée par les objects
            Set WdDoc = Nothing
            Set Wd = Nothing
     
        End With
    End Sub

  4. #4
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 086
    Par défaut
    Salut,

    Je ne pense pas que passer par une fusion dans ton cas soit la bonne solution.

    Le nombre d'enregistrement "simple" est-il sujet à variation ?
    On pourrait parler de documents finaux.

    Le but serait d'envoyer les données dans chaque document sans utiliser de publipostage.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  5. #5
    apt
    apt est déconnecté
    Membre éclairé
    Inscrit en
    Mai 2002
    Messages
    867
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 867
    Par défaut
    Bonsoir,

    Citation Envoyé par Heureux-oli Voir le message
    Le nombre de 'enregistrement "simple" est-il sujet à variation ?
    J'enttend dire par "simple" toute publication avec un seul enregistrement pour une unique référence "Réf/Bon"

    Et chaque "Réf/Bon" sera publier dans une page à part.

    Le but serait d'envoyer les données dans chaque document sans utiliser de publipostage.
    Tu veux parler de l'utilisation des macros (Excel + Word) avec des signets à la place des champs de fusion ?

  6. #6
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 086
    Par défaut
    Salut,

    Oui.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

Discussions similaires

  1. Imprimer plusieurs pages dans un seul document
    Par mofx71 dans le forum Documents
    Réponses: 0
    Dernier message: 08/12/2008, 21h49
  2. Réponses: 4
    Dernier message: 10/03/2008, 16h12
  3. Réponses: 2
    Dernier message: 09/08/2007, 15h39
  4. Réponses: 6
    Dernier message: 27/09/2006, 20h27
  5. plusieurs entetes dans un seul document
    Par hammag dans le forum Autres Logiciels
    Réponses: 4
    Dernier message: 05/09/2006, 09h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo