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 :

Supprimer une page sous condition, par macro dans Word 2003


Sujet :

VBA Word

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 11
    Par défaut Supprimer une page sous condition, par macro dans Word 2003
    Bonjour,

    Je m'adresse aux spécialistes pour résoudre un petit problème.

    J'ai un document Word 2003 qui peut contenir un nombre indéfini de pages.
    Toutes mes pages contiennent le texte suivant :

    Nombre de cellules déjà contrôlées x où x est égal à un chiffre qui peut varier de 0 à...

    Pour m'éviter des impressions inutiles, je dois maintenant supprimer toutes les pages du document qui contiendraient le texte suivant :

    Nombre de cellules déjà contrôlées 0

    Je dois aussi supprimer toutes les pages qui ne contiennent pas le texte suivant :

    Cellules ouvertes

    Le document en question ne contient aucun signet et aucun tableau.
    Que mettre dans ma macro pour lui faire comprendre cela ?

    Merci pour le petit coup de pouce qui pourra me faire avancer

  2. #2
    Membre émérite Avatar de Souriane
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2009
    Messages
    541
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2009
    Messages : 541
    Par défaut
    Bonjour Dreamer84,

    J'ai bidulé un code pour toi. Essaie-le voir si ça fonctionne.

    Aux "experts" qui le liront, svp, n'hésitez pas à simplifier mon code si c'est possible. Je suis en mode "apprentissage"!

    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
    Sub Dreamer84()
     
    Dim NumPage As Integer
    Dim NbLigne As Long
    Dim NombrePage As Integer
     
    Dim iChaine(1 To 2) As String
    'Déterminer ici les chaînes à rechercher
     iChaine(1) = "Nombre de cellules déjà contrôlées 0"
     iChaine(2) = "Cellules ouvertes"
     
    'Recherche de les chaînes une après l'autre en commençant par iChaine(1)
    For I = 1 To 2
     
    Do
    'Déplacement du point de sélection au début du document
    Selection.HomeKey unit:=wdStory
     
        Selection.Find.ClearFormatting
            With Selection.Find
                .Text = iChaine(I)
                .Execute
            End With
     
    If Selection.Find.Found = False Then
     Else
    'Si la chaîne est trouvée est trouvée, alors :
     
    'Récupération du numéro de la page où la chaîne est rencontrée
    NumPage = Selection.Information(wdActiveEndPageNumber)
     
    NombrePage = ActiveDocument.BuiltInDocumentProperties("Number of Pages")
    ''If NombrePage < NumPage Then Exit Sub
     
    'Déplace le curseur après le dernier charactère de la page en cours en allant à la page suivante puis en revenant d'un caractère
    ActiveDocument.Range.Select
    Selection.GoTo What:=wdGoToPage, _
     Which:=wdGoToAbsolute, Count:=NumPage + 1
    Selection.Move unit:=wdCharacter, Count:=-1
     
            'Cependant, si la chaîne est trouvée sur la dernière page du document, le curseur se repositionne au bon endroit
            If NombrePage = NumPage Then Selection.Move unit:=wdCharacter, _
            Count:=ActiveDocument.Range.Characters.Count
     
    'Détermine combien de ligne la page courante compte (=ligne de la page se trouve le curseur actuellement)
    NbLigne = Selection.Information(wdFirstCharacterLineNumber)
     
    'Si le curseur se trouve sur la dernière page du document NbLigne sera réduit de un
    If NombrePage = NumPage Then NbLigne = NbLigne - 1
     
    Selection.Move unit:=wdCharacter, Count:=1
     
    'Étend la sélection du nombre de ligne de la page courante (NbLigne)
    With Selection
    .HomeKey unit:=wdLine, Extend:=wdMove
    .ExtendMode = True
    .MoveUp unit:=wdLine, Count:=NbLigne
    .ExtendMode = False
    End With
     
    'Efface la sélection en cours
    Selection.delete
     
    End If
      Loop While Selection.Find.Found = True
     
    Next I
     
    End Sub

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 11
    Par défaut
    Merci beaucoup Souriane.

    Les premiers tests que j'ai effectué sont très concluants et je ne sais pas
    si ton code est optimisé mais dans tous les cas il fonctionne nickel.

    Je vais approfondir les tests ce jour au boulot, mais il est possible que je
    puisse avoir besoin d'une petite modification dans un cas de figure bien précis
    qu'il va falloir que je teste.

    Je mettrais en résolu ensuite.

    Encore un grand merci

  4. #4
    Membre Expert

    Homme Profil pro
    Spécialiste progiciel
    Inscrit en
    Février 2010
    Messages
    1 747
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Spécialiste progiciel
    Secteur : Service public

    Informations forums :
    Inscription : Février 2010
    Messages : 1 747
    Par défaut
    Bonjour,

    Pour optimiser le code, voici quelques pistes :
    • Travailler avec l'objet range plutôt que selection. L'objet selection oblige la pagination ce qui peut être lent sur des documents de taille importante.
    • Passer le document en mode normal au lieu de page.
    • Eventuellement désactiver les options de pagination.
    • Désactiver l'affichage, la grammaire et orthographe, etc
    • Désactiver les messages d'avertissements

  5. #5
    Membre émérite Avatar de Souriane
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2009
    Messages
    541
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2009
    Messages : 541
    Par défaut
    Merci beaucoup carden!

    Si j'ai du temps aujourd'hui, je vais me pencher sur ces points. Car en effet, quand j'ai testé mon code sur une centaine de page, c'était pas assez rapido à mon goût!

    Je vais d'ailleurs les garder en note pour mes prochains codes!

    Merci pour ton temps, c'est très apprécié!!

    Souriane

  6. #6
    Membre averti
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 11
    Par défaut
    Bonsoir,

    J'ai effectué tous mes tests aujourd'hui et c'est parfait !
    Mais je ne manquerais pas de suivre ce post si tu proposes une solution
    plus rapide d'exécution, car il est vrai que sur de gros documents c'est un peu
    long, mais j'ai le temps donc ce n'est pas primordial.

    Merci encore


    Je mets en résolu

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

Discussions similaires

  1. [XL-2007] Comment supprimer des lignes d'une plage dans une colonne sous condition
    Par capi81 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 05/06/2015, 12h34
  2. Excel VBA - Supprimer une ligne sous condition
    Par freygeo dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 13/08/2012, 17h55
  3. [CR XI] Supprimer une page par condition
    Par Arkilon dans le forum Débuter
    Réponses: 4
    Dernier message: 05/11/2011, 13h55
  4. [XL-2003] Supprimer une ligne sous condition de date
    Par fortbelin dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 09/09/2011, 22h37
  5. [PHP-JS] Actualisation d'une page sous condition
    Par oceane751 dans le forum Langage
    Réponses: 7
    Dernier message: 28/01/2007, 18h55

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