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 :

Sélection d'un paragraphe jusqu'à changement de style


Sujet :

VBA Word

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 72
    Par défaut Sélection d'un paragraphe jusqu'à changement de style
    Bonjour,

    J'ai un (très long) fichier doc avec beaucoup de paragraphes numérotés.

    Structure type :

    Chapitre 1

    1. Lorem ipsum... 2. ABraljfd podfs 3. dofidfo

    Par chance, les numéros de paragraphe sont dans un style "N° paragraphe", et le texte du paragraphe dans un style "Texte paragraphe".
    J'aimerais faire une macro qui change le texte d'un paragraphe donné.

    J'ai donc fait un UserForm avec les champs N° Chapitre et N° Paragraphe.

    Lorsque je fais rechercher, il retourne au début du doc, et là il cherche d'abord le chapitre demandé, puis il cherche le paragraphe demandé en fonction de son numéro. Jusqu'ici tout va bien : j'ai trouvé le paragraphe que je cherchais, très rapidement.

    La seconde étape, c'est que j'aimerais qu'il sélectionne tout le paragraphe donné, et qu'il le copie dans un textbox de mon UserForm, afin de le modifier...

    Je me suis donc dit qu'il fallait faire une sélection jusqu'à changement de style, non ?

    Donc voilà ma question : comment réussir à sélectionner le paragraphe demandé ?

    Merci, et désolé si je n'ai pas été clair.

  2. #2
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 086
    Par défaut
    La raison de le mettre dans ton textbox est un peu floue.

    Veux-tu modifier le style ou le contenu ou les deux ?

    Le fait de mettre le paragraphe dans le TextBox signifie qu'il faut copier le paragraphe et lorsque la modification est terminée, le remplacer.

    Pourquoi ne pas le modifier à la volée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ActiveDocument.Paragraphs(1).select
    Selection.range.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 72
    Par défaut
    En fait, mettre le paragraphe dans le textbox me permet d'aller plus rapidement.

    Par exemple, on me signale une faute d'orthographe dans le paragraphe 5 du chapitre 2.

    Avec la macro que je veux faire, je peux aller directement au paragraphe concerné, récupérer le texte du paragraphe, corriger la faute et le remplacer.

    (Je ne souhaite pas changer le style).

    Quand j'exécute ton code, il me dit "membre de données ou de méthode introuvable".

  4. #4
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 086
    Par défaut
    C'est normal, il est incomplet, ne sachant pas ce que je devais faire avec !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Dim A as String
    ActiveDocument.Paragraphs(i).select
    A = Selection.Range.Text
    A contiendra le texte du paragraphe.

    Reste ensuite à coller le texte corrigé.

    Mais pour les fautes d'orthographe, il y a un outil intégré à Word.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 72
    Par défaut
    Merci.

    Je ne comprends pas, il me refait la même erreur en surlignant le .Select à la fin de ActiveDocument.Paragraphs(i).select, peu importe ce que je mette dans les parenthèses.

    C'est non seulement pour les fautes non détectées par Word, mais aussi pour améliorer certaines tournures parfois.

  6. #6
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 086
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Sub SelPara()
    Dim a As String
     
    ActiveDocument.Paragraphs(2).Range.Select
    a = Selection.Text
    MsgBox a
     
    End Sub
    Mea culpa, j'ai pas mis le range au bon endroit !

    Désolé.

    Essaie cette fois !
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 72
    Par défaut
    Nickel, merci beaucoup : ça marche !

    Le seul souci que je rencontre, c'est que ma notion de paragraphe diffère de celle de Word (et je crois que c'est lui qui a raison) : en effet, il considère comme "paragraphe" plusieur des miens.

    Il va par exemple me retourner comme un seul paragraphe :
    1. Lorem ipsum... 2. ABraljfd podfs

    Alors que je n'aurais souhaité que
    1. Lorem ipsum...

    Je pressentais ce problème au début, c'est pourquoi la séparation entre les 2 paragraphes pouvait se détecter grâce au changement de style :

    1. Lorem ipsum

    Le numéro est en style "num_paragraphe" et le texte est en style "texte_par"

    Sais-tu si ce que je veux réaliser est faisable malgré tout ? Ou j'en demande trop (ce que je conçois tout à fait !) ?

  8. #8
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 086
    Par défaut
    Un paragraphe est le texte situé entre deux symboles ressenblant à un p à retourné.

    Si tu as de simples retours à la ligne, c'est toujours le même paragraphe.

    Mais un paragraphe est composés de phrases et de lignes.

    Une Phrase se termine par un point.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 72
    Par défaut
    Dans mes "blocs de texte" (je ne sais plus comment appeler ça), j'ai des fois plusieurs phrases, c'est pourquoi je ne peux pas utiliser le point comme critère de sélection.

    Dans mon cas, la seule différence entre deux blocs de texte, c'est le changement de style.

  10. #10
    Expert confirmé
    Avatar de Sepia
    Homme Profil pro
    Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Inscrit en
    Octobre 2007
    Messages
    3 117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 3 117
    Par défaut Que de complications
    Salut,

    J'ai repris la discussion depuis le début et si j'ai bien compris, tu veux accéder rapidement à un titre de ton document, sélectionner un(des) § puis les modifier. Ben t'as pas besoin de macro.


    Dans Word, il existe des mécanismes de liens (comme Excel ou dans un fichier HTML d'un site Web) qui renvoient directement sur des parties d'un document. Pour cela, il suffit d'utiliser le mécanisme d'hyperliens dans Word mis en oeuvre par les renvois sur des signets ou une table des matières basée sur un document structuré à partir d'une hiérarchie de titres, ce qui semble être ton cas.
    Par chance, les numéros de paragraphe sont dans un style "N° paragraphe", et le texte du paragraphe dans un style "Texte paragraphe".
    ==> Donc pas de pb.
    - 1°) Crée un table des matières par la commande "Insertion-Référence-Tables et index..."-onglet "Table des matières". Choisis le format qui te plait (remarque: tu peux même ne pas cocher l'option de "Utiliser
    des liens hypertexte à la palce des pages" qui ne sert que pour la partie Web de Word)
    - 2°) Tu cliques sur le titre, sous-titre que tu veux ( Attention il faut parfois utiliser CTRL+Clic en fonction du paramétrage de ton Word) et Word te renvoit directement au chapitre que tu cherches. Remarque : Cette méthode est plus interéssante dans ton cas, car elle permet d'avoir des recherches aussi sur des titres sans sous-titres
    - 3°) Tu sélectionnes le(s) § qui suit(vent) et tu les modifies directement. Comme ça tu peux même modifier le style, en ajouter, en supprimer, faire du copier-coller (avec des mise en forme de caractères), ce qui n'est pas possible avec ton UserForm et surtout tu n'as pas besoin de macros .

    Pensez à éviter de faire des macros (même si vous êtes sur un site de développeur) lorsque l'outil fait déjà ce qu'il vous faut.

    Maintenant si tu veux vraiment savoir quand est-ce que tu changes de style de § par macro, voilà le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Selection.MoveDown Unit:=wdParagraph, Count:=2, Extend:=wdExtend
    While Selection.Paragraphs(1).Style = Selection.Paragraphs(Selection.Paragraphs.Count).Style
        Selection.MoveDown Unit:=wdParagraph, Count:=1, Extend:=wdExtend
    Wend

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 72
    Par défaut
    Merci bien, je vais essayer ces solutions et je vous tiens au courant

Discussions similaires

  1. problème de changement de style du curseur
    Par ruud002 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 11/10/2006, 14h14
  2. [contourné]probleme changement de style en javascript
    Par Davboc dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 22/08/2006, 10h21
  3. changement de style d'un select
    Par manutudescends dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 09/08/2006, 14h28
  4. Changement de style lors du focus sur une cellule
    Par zyg dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 23/12/2005, 10h29

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