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

VBA Word Discussion :

Parcourir un tableau avec remplacement de mot trouvé


Sujet :

VBA Word

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2014
    Messages : 4
    Points : 6
    Points
    6
    Par défaut Parcourir un tableau avec remplacement de mot trouvé
    Bonsoir à tous et à toute,

    Je suis actuellement nouveau en vba et j'ai quelques soucis. Je viens donc vers vous afin de solliciter votre aide.

    Mon problème est le suivant :

    Je veux parcourir la 3eme colonne de mon tableau et rechercher dans chacune des cellules de la 3eme colonne le mot "Date".
    Si ce mot est trouvé alors je veux effacer la cellule sinon je garde le texte et je passe à la suivante.

    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
     
    Sub DeleteCell()
        Dim oCell As cell
        Dim oRow As Row
        Dim MyRange As Range
     
        StartWord = "Date"
     
    '*** Compte le nombre de ligne de mon tableau ****
        i = ActiveDocument.Tables(1).Rows.count
     
        Set MyRange = ActiveDocument.Range(ActiveDocument.Tables(1).cell(2, 3).Range.Start, ActiveDocument.Tables(1).cell(i, 3).Range.End)
     
     
                With MyRange.Find
                    While .Execute(FindText:=StartWord & "*", MatchWildcards:=True) '*** Recherche du mot avec n'importe quoi derrière
                        MyRange.Select
                        If Selection.Information(wdWithInTable) = True Then '*** Je vérifie que je suis encore dans le tableau
                                If .Found = True Then
                                    For Each oCell In MyRange.Columns(3).Cells  '*** Pour chaque celui du tableau de la 3 âme colonne
                                    oCell.Select
                                        With Selection.Tables(1).Rows(oCell.RowIndex) '*** Problème RowIndex garde la meme valeur tous le temps
                                            .Cells(3).Range.Delete
                                        End With
                                    Next oCell
                                End If
                        End If
                    Wend
                End With
    End Sub
    Mon soucis ici est que OCell.RowIndex garde tous le temps la valeur de la première celui lorsque moi je souhaiterais avoir la valeur de la ligne sélectionné.

    Je pense que je ne suis pas loin. Je veux que ce traitement ce fasse sans que j'ai besoin de sélectionner mon tableau.

    Je vous remercie de votre aide

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Une solution possible avec ce code :

    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
     
    Sub DeleteCell_Modifie_EK()
     
    Dim oCell As Cell
    Dim MaColonneDate As Cells
    Dim StartWord As String
    'Dim NbCellules As Integer
     
        StartWord = "Date"
        Set MaColonneDate = ActiveDocument.Tables(1).Columns(3).Cells
        'NbCellules = 0
        For Each oCell In MaColonneDate
            If LCase(Mid(oCell.Range.Text, 1, Len(StartWord))) = LCase(StartWord) Then
               'NbCellules = NbCellules + 1
               oCell.Range.Delete
            End If
        Next oCell
        Set MaColonneDate = Nothing
     
        'If NbCellules < 2 Then
           'MsgBox NbCellules & " cellule mise à jour !", vbInformation
        'Else
           'MsgBox NbCellules & " cellules mises à jour !", vbInformation
        'End If
     
    End Sub
    Nb :
    - J'ai dû utiliser la fonction Mid, car je ne suis pas parvenu à définir Start et End de Ocell.Range.
    - LCase permet de s'affranchir des minuscules, majuscules dans le mot cherché. Vous pouvez supprimer les Lcase si l'orthographe du mot cherché est sure.
    - NbCellules décompte les occurrences si vous le souhaitez.

    Cordialement.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2014
    Messages : 4
    Points : 6
    Points
    6
    Par défaut
    Merci beaucoup Eric KERGRESSE pour cette formidable solution.

    Je pense que je n'aurais jamais pu trouvé cette approche tous seul qui est portant plus simple.


+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WD-2010] Parcourir un tableau avec des cellules fusionnées
    Par Tanoffy dans le forum VBA Word
    Réponses: 0
    Dernier message: 09/12/2014, 14h05
  2. [2.x] [Symfony2-Twig] Parcourir un tableau avec twig
    Par ccomarvin dans le forum Symfony
    Réponses: 2
    Dernier message: 30/07/2014, 14h19
  3. Réponses: 4
    Dernier message: 18/09/2008, 20h44
  4. Parcourir un tableau de String avec logic:iterate
    Par casawi dans le forum Struts 1
    Réponses: 7
    Dernier message: 07/02/2008, 14h40
  5. [CSS] Remplacer un tableau avec des colonnes
    Par mullger dans le forum Mise en page CSS
    Réponses: 6
    Dernier message: 22/08/2006, 15h30

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