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 paragraphe à partir d'une selection de la table des matière


Sujet :

VBA Word

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Février 2018
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Supprimer paragraphe à partir d'une selection de la table des matière
    Bonjour,

    Je débute sur VBA et je suis confronté à un souci sans réponse.

    Voici ce que je voudrais faire :

    J'ai un document, un cahier des charges global pour une usine.
    Chaque fois qu'il faut le donner, il me faut pas tous le document, seulement les parties correspondant à la machine.

    Pour cela, j'ai commencé à faire un doc Excel ou je sélectionne mes paragraphes et une macro vient créer un doc Word avec ma sélection. Les inconvénients de cette solution, c'est que tous les effets de texte ne sont pas pris en charge, et en plus, le document aurait comporté des photos. Donc j'ai abandonné cette solution.

    J'ai donc pensé à faire une macro sur Word venant, selon ma sélection, supprimer des paragraphes du document. Pour cela, il faut supprimer des paragraphes accessibles par la table des matières. Sauf que je ne sais pas comment faire.
    Mes recherches sur internet ne m'ont pas beaucoup aidé...

    Merci d'avance de votre aide !!

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

    Le code VBA ci-dessous alimente une matrice avec les paragraphes de la première table des matières d'un document. La table des matières est basée sur ce style.
    Pièce jointe 352365

    Le principe est de spliter chaque paragraphe pour récupérer le texte du paragraphe. Sur mon poste, le caractère de séparation est le Chr(9). Si ce n'est pas ce caractère sur votre poste, le code neutralisé vous permettra de trouver le caractère de séparation.
    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
     
    Sub ChargerUneMatriceDesParagraphesDUneTM()
     
    Dim DocEnCours As Document
    Dim I As Integer, J As Integer, K As Integer, L As Integer
    Dim TitreParagraphe As Variant
    Dim MatriceDesTitres() As Variant
     
        Set DocEnCours = ActiveDocument
        With DocEnCours
            If .TablesOfContents.Count > 0 Then
               I = 0
               ReDim MatriceDesTitres(.TablesOfContents(1).Range.Paragraphs.Count - 1, 1)
               For J = .TablesOfContents(1).Range.Paragraphs.Count To 1 Step -1
                   TitreParagraphe = Split(.TablesOfContents(1).Range.Paragraphs(J).Range.Text, Chr(9))
                         'If J = 1 Then
                         '   For L = 1 To Len(Selection.Range)
                         '       For K = 0 To 255
                         '           If Mid(Selection.Range.Text, L, 1) = Chr(K) Then
                         '              Debug.Print "L : " & Mid(Selection.Range.Text, L, 1) & " : " & K
                         '           End If
                         '        Next K
                         '   Next L
                         ' End If
                          MatriceDesTitres(I, 0) = Trim(TitreParagraphe(0))
                       '   Debug.Print TitreParagraphe(0)   ' .TablesOfContents(I).Range.Paragraphs(J).Range.Text
                          I = I + 1
                Next J
            End If
        End With
     
        For I = LBound(MatriceDesTitres, 1) To UBound(MatriceDesTitres, 1)
            Debug.Print MatriceDesTitres(I, 0)
        Next I
        Set DocEnCours = Nothing
     
    End Sub
    Le principe ensuite serait de croiser et de compléter cette matrice avec celle des paragraphes à supprimer et enfin balayer le document dans l'ordre de cette matrice.

    De mon point de vue, il est plus simple de gérer la sélection depuis Excel et ensuite de procéder à la sélection et à la destruction des paragraphes (dans l'ordre inverse) dans une copie du document.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Février 2018
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Supprimer paragraphe à partir d'une selection de la table des matière
    Je débute juste sur VBA, je ne comprend pas trop le code que vous m'avez fournis.
    On vient ajouter le texte dans la matrice si je comprend bien ?

    C'est vrai que c'est pas idiot d'utiliser Excel et ouvrir le document Word !

    Voici comment mon documents est structurer :

    Nom : Capture.PNG
Affichages : 813
Taille : 7,4 Ko

    Il ne serait pas possible d'aller chercher dans le document notre paragraphe par sa dénomination et le supprimer.
    Par exemple, pour "Eau", aller chercher "1.1.2. Eau" et supprimer tout ce qui est dedans ?

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Benjamin79 Voir le message
    Il ne serait pas possible d'aller chercher dans le document notre paragraphe par sa dénomination et le supprimer.
    Par exemple, pour "Eau", aller chercher "1.1.2. Eau" et supprimer tout ce qui est dedans ?
    Ma réponse correspondait à votre demande. Comme indiqué, c'est avec Excel que j'aurais géré cette suppression.

    Pour répondre à votre dernière remarque, il faut ramener les paragraphes de la TM du document dans Excel, sélectionner les paragraphes et supprimer les paragraphes dans l'ordre inverse dans le document.

  5. #5
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Citation Envoyé par Benjamin79 Voir le message
    Bonjour,

    J'ai donc pensé à faire une macro sur Word venant, selon ma sélection, supprimer des paragraphes du document. Pour cela, il faut supprimer des paragraphes accessibles par la table des matières. Sauf que je ne sais pas comment faire.

    Merci d'avance de votre aide !!
    Même pas besoin de macro. Tu utilises le Volet de navigation, tu fais un clic-droit sur ton titre (Utilises les styles) et tu choisis supprimer.

    Pour écrire tes documents, regarde là.
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Février 2018
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par clementmarcotte Voir le message

    Même pas besoin de macro. Tu utilises le Volet de navigation, tu fais un clic-droit sur ton titre (Utilises les styles) et tu choisis supprimer.

    Pour écrire tes documents, regarde là.

    Oui, je sais le faire comme ça mais mon but est de faire un programme qui vient supprimer plusieurs sous paragraphe en 1 clic, selon les besoins du cahier des charges, il peut y avoir une multitude de sous paragraphe à supprimer et un peu partout dans le document...

    J'ai réussi a faire un truc avec les signets, pas l'idéal lors d'une modification de documents de base mais ça marche...

Discussions similaires

  1. une insertion à partir d'une selection + un champ fixe
    Par Smix007 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 31/05/2007, 15h59
  2. Update a partir d'une selection
    Par choubak dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 29/05/2007, 18h28
  3. afficher un jtable a partir d'une selection jlist
    Par lilmo dans le forum Composants
    Réponses: 1
    Dernier message: 31/12/2006, 11h49
  4. affichage simultané à partir d'une selection combo
    Par donyas dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 27/07/2006, 15h59
  5. [oracle 9i]update à partir d'une selection complexe
    Par Requin15 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 13/06/2006, 11h18

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