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 :

Boucle qui ne supprime pas toutes les lignes d'un tableau [WD-2010]


Sujet :

VBA Word

  1. #1
    Candidat au Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Juillet 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2018
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Boucle qui ne supprime pas toutes les lignes d'un tableau
    Bonjour à tous,

    J’ai tourné ce sujet dans tous les sens et je n’arrive pas à comprendre pourquoi le résultat de la macro n’est pas celui que j’attends.

    Je retravaille un tableau Word.
    Il liste l’ensemble des contrats d’un individu sur deux lignes à chaque fois. Pour certains, la date de clôture de ce contrat est renseignée dans la colonne correspondante et pour d’autres non.
    Ce que je souhaite faire: passer en revue l’ensemble des contrats est supprimer les lignes de ceux qui sont clôturés.

    Au final, après avoir passé pas mal de temps sur les forums, et avoir envisagé plusieurs solutions, j’ai trouvé la solution suivante.
    Elle est peu satisfaisante puisque mon code tague chacune des lignes des dossiers clôturés par la mention «*A supprimer*»*et qu’ensuite il repasse sur ces lignes pour les supprimer,
    Mais elle ferait l’affaire si l’ensemble des lignes à supprimer, l’était, mais ce n’est pas le cas... et je ne sais plus quoi faire...


    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
     Sub Macro5()
    '
    ' Macro5 Macro
    '
    Dim objTable As Table
    Dim R As Integer
    Set objTable = ActiveDocument.Tables(1)
    For R = 1 To objTable.Rows.Count
    ActiveDocument.Tables(1).Cell(R, 5).Select
    cherche10 = Selection.Find.Execute(FindText:="/")
    If cherche10 = True Then
    ActiveDocument.Tables(1).Cell(R + 1, 4).Select
    cherche11 = Selection.Find.Execute(FindText:="Prescription entreprise")
    cherche12 = Selection.Find.Execute(FindText:="Non suivi")
    cherche13 = Selection.Find.Execute(FindText:="Forclusion")
    If cherche11 = True Then
    ActiveDocument.Tables(1).Cell(R, 1).Select
    Selection.TypeText Text:="A supprimer"
    ActiveDocument.Tables(1).Cell(R + 1, 1).Select
    Selection.TypeText Text:="A supprimer"
    ElseIf cherche12 = True Then
    ActiveDocument.Tables(1).Cell(R, 1).Select
    Selection.TypeText Text:="A supprimer2"
    ActiveDocument.Tables(1).Cell(R + 1, 1).Select
    Selection.TypeText Text:="A supprimer2"
    ElseIf cherche13 = True Then
    ActiveDocument.Tables(1).Cell(R, 1).Select
    Selection.TypeText Text:="A supprimer3"
    ActiveDocument.Tables(1).Cell(R + 1, 1).Select
    Selection.TypeText Text:="A supprimer3"
    End If
    End If
    Next R
    Set objTable1 = ActiveDocument.Tables(1)
    For i = 1 To objTable1.Rows.Count
    ActiveDocument.Tables(1).Cell(i, 1).Select
    cherche14 = Selection.Find.Execute(FindText:="A supprimer")
    If cherche14 = True Then
    ActiveDocument.Tables(1).Rows(i).Range.Select
    Selection.Rows.Delete
    End If
    Next i
    End Sub
    Est-ce que vous auriez une idée de comment faire ?
    Je vous remercie,

    Amos
    Fichiers attachés Fichiers attachés

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Amos81 Voir le message
    Bonjour,

    Il vous faut commencer par la fin pour la suppression dans la dernière partie du code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
        For R = ObjTable.Rows.Count To 1 Step -1
           ObjTable.Cell(R, 1).Select
           Cherche14 = Selection.Find.Execute(FindText:="A supprimer")
           If Cherche14 = True Then
               ObjTable.Rows(R).Delete
           End If
        Next R

  3. #3
    Candidat au Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Juillet 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2018
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Ca Marche ! Merci !
    Merci Erik,

    J'ai effectivement le résultat escompté avec le codes que vous m'avez donné.
    Je comprends également pourquoi ça ne marchait pas, ça parait évident d'un seul coup !

    Bonne soirée !
    Amaury

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 13/07/2017, 17h39
  2. [Débutant] écrire dans excel mais pas toutes les lignes
    Par lauri-anne dans le forum MATLAB
    Réponses: 2
    Dernier message: 14/07/2010, 11h35
  3. Logminer: ne voit pas toutes les lignes
    Par learaph dans le forum Administration
    Réponses: 3
    Dernier message: 06/02/2009, 12h18
  4. BufferedWriter ne ramène pas toutes les lignes
    Par ceriise dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 31/08/2007, 11h55
  5. [sql2005]trigger qui s'éxecte sur toutes les lignes
    Par malikoo dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 31/07/2006, 12h33

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