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

VBA Word Discussion :

Traitement des tableaux dans WORD


Sujet :

VBA Word

  1. #1
    Membre à l'essai
    Traitement des tableaux dans WORD
    Hello

    Je vous soumets le besoinb auquel je suis confronté.
    J'ai un document word avec plusieurs tableaux qui ont la meme structure ( nombre ligne /colonne ; noms des lignes / colonnes )
    Je souhaite faire un toilettage pour chaque tableau avec des instriuctions du type :

    Pour chaque tableau k ,
    aller dans la cellule (i,j)
    supprimer les lignes de la cellule 1 à 10 sauf ligne 5 et 6
    supprimer les lignes i+1 à i+5


    Merci bien de l'aide.

  2. #2
    Expert éminent sénior
    Citation Envoyé par cocopops78 Voir le message

    Bonjour,

    Le code ci-dessous répond à cela :
    supprimer les lignes de la cellule 1 à 10 sauf ligne 5 et 6
    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
     
    Option Explicit
     
    Sub SupprimerDesLignesDUnTableau()
     
    Dim DocEnCours As Document
    Dim I As Long, J As Long, IndexMatrice As Long, LigneEnCours As Long
    Dim MatriceDelete() As Variant
     
        Set DocEnCours = ActiveDocument
        With DocEnCours
             If .Tables.Count = 0 Then Exit Sub
             For J = .Tables.Count To 1 Step -1
                 IndexMatrice = 0
                 LigneEnCours = 0
                 With .Tables(J)
                      For I = 1 To .Range.Cells.Count
                          Select Case I
                                 Case 1 To 10
                                      With .Range.Cells(I)
                                           Select Case .RowIndex
                                                  Case 5, 6
                                                       LigneEnCours = .RowIndex
                                                  Case Else
                                                       If LigneEnCours < .RowIndex Then
                                                          ReDim Preserve MatriceDelete(IndexMatrice)
                                                          MatriceDelete(IndexMatrice) = .RowIndex
                                                          IndexMatrice = IndexMatrice + 1
                                                          LigneEnCours = .RowIndex
                                                       End If
                                            End Select
                                      End With
                                Case Else
                                     Exit For
                          End Select
                      Next I
                      If IndexMatrice > 0 Then
                         For I = .Rows.Count To 1 Step -1
                             For IndexMatrice = LBound(MatriceDelete) To UBound(MatriceDelete)
                                 If I = MatriceDelete(IndexMatrice) Then
                                    .Rows(I).Delete
                                    Exit For
                                 End If
                             Next IndexMatrice
                         Next I
                         Erase MatriceDelete
                      End If
                End With
             Next J
       End With
       Set DocEnCours = Nothing
     
    End Sub
    Eric KERGRESSE
    https://sites.google.com/site/erickergresseeirl/
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter

  3. #3
    Membre à l'essai
    Hello.
    Merci du retour . Ca me semble lourd comme script pour pas grand chose.
    Du coup j ai pu avancer avec des fonctions basiques et la je suis confronté au probleme de devoir suprimer les saut de paragraphe qu il y a dans les cellules par des retour chariot simple. J ai essayé de coder la fonction rechercher /copier mais je n arrive pas a l appliquer uniquement au tableau que j etudie ( word l applique sur tout le document ).
    Merci de l aide si il y a une solution

  4. #4
    Expert éminent sénior
    Citation Envoyé par cocopops78 Voir le message

    Curieuse réponse et ô combien désinvolte !
    Vous n'avez même pas essayé ce code pour voir si cela fonctionnait ?
    J'ai reçu votre réponse sur mon téléphone, j'ai rallumé mon pc juste pour vous "blacklister".
    Eric KERGRESSE
    https://sites.google.com/site/erickergresseeirl/
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter

###raw>template_hook.ano_emploi###