Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Word > VBA Word
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/12/2007, 00h31   #1
Candidat au titre de Membre du Club
 
Inscription : juillet 2006
Messages : 72
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 72
Points : 14
Points : 14
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.
512banque est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2007, 06h41   #2
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 357
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

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

Informations forums :
Inscription : février 2006
Messages : 17 357
Points : 29 273
Points : 29 273
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 :
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 !
Heureux-oli est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2007, 12h35   #3
Candidat au titre de Membre du Club
 
Inscription : juillet 2006
Messages : 72
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 72
Points : 14
Points : 14
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".
512banque est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2007, 12h42   #4
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 357
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

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

Informations forums :
Inscription : février 2006
Messages : 17 357
Points : 29 273
Points : 29 273
C'est normal, il est incomplet, ne sachant pas ce que je devais faire avec !

Code :
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 !
Heureux-oli est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2007, 12h54   #5
Candidat au titre de Membre du Club
 
Inscription : juillet 2006
Messages : 72
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 72
Points : 14
Points : 14
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.
512banque est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2007, 13h09   #6
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 357
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

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

Informations forums :
Inscription : février 2006
Messages : 17 357
Points : 29 273
Points : 29 273
Code :
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 !
Heureux-oli est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2007, 13h38   #7
Candidat au titre de Membre du Club
 
Inscription : juillet 2006
Messages : 72
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 72
Points : 14
Points : 14
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 !) ?
512banque est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2007, 14h16   #8
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 357
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

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

Informations forums :
Inscription : février 2006
Messages : 17 357
Points : 29 273
Points : 29 273
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 !
Heureux-oli est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2007, 15h08   #9
Candidat au titre de Membre du Club
 
Inscription : juillet 2006
Messages : 72
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 72
Points : 14
Points : 14
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.
512banque est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2007, 18h24   #10
Rédacteur/Modérateur
 
Avatar de Sepia
 
Homme JF Jousseaume
Inscription : octobre 2007
Messages : 2 390
Détails du profil
Informations personnelles :
Nom : Homme JF Jousseaume
Âge : 48
Localisation : France

Informations professionnelles :
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 2 390
Points : 3 356
Points : 3 356
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.
Citation:
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 :
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
Sepia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2007, 10h02   #11
Candidat au titre de Membre du Club
 
Inscription : juillet 2006
Messages : 72
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 72
Points : 14
Points : 14
Merci bien, je vais essayer ces solutions et je vous tiens au courant
512banque est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h48.


 
 
 
 
Partenaires

Hébergement Web