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

IHM Discussion :

Pulipostage Access-->Word : supprimer lignes vides tableau


Sujet :

IHM

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 41
    Points : 34
    Points
    34
    Par défaut
    Bonjour,

    j'ai réussi à automatiser un publipostage de Access vers Word. Mon publipostage crée un tableau dans Word. Tout marche bien. Cependant, quand je sors ma lettre, le tableau Word contient des lignes vides. Existe-t-il une fonction ou autre qui me permet de couper ou supprimer les lignes vides de mon tableau ?

    Quelqu'un peut m'aider ?

    Merci

    J'ai utilisé le code suivant ca ne marche pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        If ActiveDocument.MonTableau.Cell(i, 1).Range.Text = Chr(13) & Chr(7) Then
    ActiveDocument.MonTableau.Rows(i).Select
    Selection.MoveDown Unit:=wdLine, Count:=1, Extend:=wdExtend
    Selection.Cut
    End If

  2. #2
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    C'est bien beau , mais tu ne nous dis pas comment tu fais pour ton publipostage.

    Le tableau Word, tu l'obtiens comment ?

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 41
    Points : 34
    Points
    34
    Par défaut
    Merci Heureux-oli de répondre.

    Je suis pret à partager tout mes codes sur le forum pour assurer la beauté du jeux. J'ai assez galéré pour réaliser le publipostage mais j'arrive toujour pas à finir. Si seulement quelqu'un pouvait m'aider à avancer.

    Voici le code que j'ai utiliser :
    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
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    Private Sub Publipostage_Click()
    Dim MaBD As Database
        Dim MaRequete As Recordset
     
        Dim NbEnreg, i As Integer
        Dim MonTableau As Object
        Dim vnt As Variant
        Dim j As Integer
     
    'Vérifie si un élément est choisi dans la liste
          If Me.choix_proprietaire.ItemsSelected.Count = 0 Then
            MsgBox "Vous n'avez pas sélectionné de propriétaire !", vbCritical, "Opération annulée !"
       Else
     
    'confirmer l'impression
       answer = MsgBox("Etes-vous sûr de vouloir exporter la sélection dans Word ?", vbYesNo + vbQuestion, "Confirmer export")
     
       'MsgBox "Etes-vous sûr de vouloir imprimer un courrier pour la sélection ?", vbYesNo + vbQuestion, "Confirmer impression"
     If answer = vbYes Then
     
       'Compte le nombre d'enregistrements dans la requête R_proprietaire_publipostage
       'et arrête la procédure de transfert
       'si la requête ne contient aucun enregistrement
     
        For Each vnt In Me.choix_proprietaire.ItemsSelected
        For j = 0 To Me.choix_proprietaire.ColumnCount - 4
     
     
        NbEnreg = DCount("[Id_prop]", "R_proprietaire_publipostage", "Id_prop like " & Me.choix_proprietaire.Column(j, vnt))
     
         If NbEnreg = 0 Then
            MsgBox "Aucune parcelle n'a été liée à ce propriétaire !", vbCritical, "Opération annulée !"
            Exit Sub
        End If
     
       'Ouvre la base de données en cours et la requête concernée
     
       Set MaBD = CurrentDb()
       Set MaRequete = MaBD.OpenRecordset("SELECT * FROM R_proprietaire_publipostage  WHERE Id_prop like " & "" & Me.choix_proprietaire.Column(j, vnt) & "", dbOpenSnapshot)
     
             MaRequete.MoveFirst
     
       'Création d'une instance de Word et activation de l'application.
        Set MonAppliWord = New Word.Application
     
       'Création de la variable objet Lettre_type représentant
       'le document Word
        Set Lettre_type = MonAppliWord.Documents.Add("C:\BD_travaux_SMBA\Lettre_type.dotx")
        MonAppliWord.Visible = True
     
       'Positionnement sur le premier enregistrement de la requête
       MaRequete.MoveFirst
     
    'Insertion des coordonnées du client
    On Error Resume Next
       With Lettre_type.Bookmarks
            .Item("societe").Range.Text = MaRequete.Fields("societe")
            .Item("civilité").Range.Text = MaRequete.Fields("civilité")
            .Item("civilite1").Range.Text = MaRequete.Fields("civilite1")
            .Item("civilite2").Range.Text = MaRequete.Fields("civilite2")
            .Item("nom_jeune_fille").Range.Text = MaRequete.Fields("nom_jeune_fille")
            .Item("nom_usage").Range.Text = MaRequete.Fields("nom_usage")
            .Item("prenom").Range.Text = MaRequete.Fields("prenom")
            .Item("adresse1").Range.Text = MaRequete.Fields("adresse1")
            .Item("adresse2").Range.Text = MaRequete.Fields("adresse2")
            .Item("code_postal").Range.Text = MaRequete.Fields("code_postal")
            .Item("commune").Range.Text = MaRequete.Fields("commune")
            .Item("pays").Range.Text = MaRequete.Fields("pays")
    End With
     
       'Création du tableau Word
       'recevant les parcelles des propriétaires
     
     
        Set MonTableau = Lettre_type.Tables.Add(Lettre_type.Bookmarks.Item("Debut_parcelle").Range, NbEnreg + 1, 3)
     
    'Remplissage de la ligne d'en-tête du tableau
     
        With MonTableau
            .Cell(1, 1).Range.InsertAfter "Commune"
            .Cell(1, 2).Range.InsertAfter "Section"
            .Cell(1, 3).Range.InsertAfter "Numéro"
     
    'Mise en forme du tableau
     
            .Rows(1).SetHeight RowHeight:=24, HeightRule:=wdRowHeightAtLeast
            .Rows(1).Cells.VerticalAlignment = wdAlignVerticalCenter
            .Rows(1).Cells.HorizontalAlignment = wdAlignHorizontalCenter
     
    'Ajustement des largeurs de colonnes aux dimensions souhaitées
     
            .Columns(1).SetWidth ColumnWidth:=170, RulerStyle:=wdAdjustProportional
            .Columns(2).SetWidth ColumnWidth:=60, RulerStyle:=wdAdjustProportional
            .Columns(3).SetWidth ColumnWidth:=60, RulerStyle:=wdAdjustProportional
     
        End With
     
    'Remplissage du tableau avec les données
    'issues de la requête R_proprietaire_publipostage
    'si proprietaire et secteur sont identiques à la selection dans la zone de liste
     
        For i = 1 To NbEnreg
     
        If (MaRequete.Fields("Id_prop") & MaRequete.Fields("code_secteur")) = (Me.choix_proprietaire.Column(j, vnt) + Me.choix_proprietaire.Column(j + 3, vnt)) Then
     
     
       'Parcourt la requête R_proprietaire_publipostage,
       'ajoute les contenus dans les cellules
     
        With MonTableau
     
             .Cell(i + 1, 1).Range.InsertAfter MaRequete!nom_commune
             .Cell(i + 1, 2).Range.InsertAfter MaRequete!section
             .Cell(i + 1, 3).Range.InsertAfter MaRequete!num_parcelle
     
       'Puis Centrage vertical des contenus de cellules de toute la ligne
     
             .Rows(i).Cells.VerticalAlignment = wdCellAlignVerticalCenter
     
       'Alignement de la référence et de la quantité au centre de la cellule
     
             .Cell(i + 1, 2).Range.Paragraphs.Alignment = wdAlignParagraphCenter
             .Cell(i + 1, 3).Range.Paragraphs.Alignment = wdAlignParagraphCenter
     
            End With
     
     
      End If
            'Se positionne sur l'enregistrement suivant
     
        MaRequete.MoveNext
     
        Next i
     
        With Lettre_type.Tables(1)
     
           With .Borders(wdBorderLeft)
                .LineStyle = wdLineStyleSingle
                .LineWidth = wdLineWidth150pt
            End With
     
            With .Borders(wdBorderRight)
                .LineStyle = wdLineStyleSingle
                .LineWidth = wdLineWidth150pt
            End With
     
            With .Borders(wdBorderTop)
                .LineStyle = wdLineStyleSingle
                .LineWidth = wdLineWidth150pt
            End With
     
            With .Borders(wdBorderBottom)
                .LineStyle = wdLineStyleSingle
                .LineWidth = wdLineWidth150pt
            End With
     
            With .Borders(wdBorderHorizontal)
                .LineStyle = wdLineStyleSingle
                .LineWidth = wdLineWidth075pt
            End With
     
            With .Borders(wdBorderVertical)
                .LineStyle = wdLineStyleSingle
                .LineWidth = wdLineWidth075pt
            End With
     
        End With
           MonAppliWord.Close
     
     
         Next j
     
        MaRequete.Close
        MaBD.Close
     
     
        Next vnt
        Set MonAppliWord = Nothing
    End If
     
    End If
    End Sub
    Le tableau est réalisé dans mon document word avec des lignes vides que je souhaite selectionner et supprimer automatiquement.

    Pour utiliser le code, il faut créer un fichier word de format .dotx, contenant des signets de meme nom que les champs de la requete utilisée dans le code. Modifier le chemin du fichier word.

    Merci de votre aide.

  4. #4
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Je suis prêt à partager tout mes codes sur le forum pour assurer la beauté du jeux. J'ai assez galèré pour réaliser le publipostage mais j'arrive toujours pas à finir.
    http://heureuxoli.developpez.com/off.../publipostage/
    http://heureuxoli.developpez.com/publipostage/

    C'est un peu le bazar ton code ?

    Le problème vient de cette ligne

    Tu utilises le i pour adresser les cellules de ton tableau.
    Et si un enregistrement est vide, le i est comptabilisé.

    Regardes dans les liens que je t'ai donné, il y a une section qui parle de ce mode de publipostage.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 41
    Points : 34
    Points
    34
    Par défaut
    Merci beaucoup je vais voir, je te tiens au courant.

Discussions similaires

  1. [WD-2003] Supprimer ligne vide dans tableau
    Par ginaub00 dans le forum Word
    Réponses: 1
    Dernier message: 27/05/2010, 17h09
  2. Réponses: 20
    Dernier message: 03/05/2008, 00h20
  3. supprimer ligne vide
    Par SnakemaN dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 22/08/2007, 17h57
  4. supprimer ligne de tableau ou div
    Par trax44 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 22/11/2006, 11h32
  5. Réponses: 2
    Dernier message: 31/03/2006, 11h29

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