|
Publicité ' | ||||||||||||||||||||||
|
|
#1 | ||
|
Candidat au titre de Membre du Club
![]() Inscription : février 2008 Messages : 56 ![]() |
Bonjour,
Si je place systématiquement un point à la fin d'une phrase, il m'arrive d'en oublier à la fin des paragraphes. Je connais l'architecture mais tous les éléments du code ActiveDocument. début du document Pour chaque paragraphe, vérifiez si le dernier caractère est "." : S'il y est passez au paragraphe suivant sinon insérez "." ![]() une base trouvé dans l'aide VBA de word 2010 : Code :
Ce code pourrait s'insérer dans une autre macro juste avant l'enregistrement Merci de votre aide |
||
|
|
00
|
|
|
#2 | ||
![]() ![]() ![]() Olivier LebeauContrôleur d'industrie Inscription : février 2006 Messages : 17 321 ![]() |
Salut,
On peut faire une boucle sur les paragraphes, mais elle va contenir les sauts de paragraphes. Donc, on va travailler sur un morceau du paragraphe. Code :
__________________
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 ! |
||
|
|
00
|
|
|
#3 |
![]() ![]() JF JousseaumeInscription : octobre 2007 Messages : 2 390 ![]() |
Salut Sanfric,
Analyse ta demande et regarde ce que Word peut faire pour toi avec un simple remplacement global (cf. Tuto sur Rechercher/Remplacer) : tu demandes à Word d'ajoute des points à tous les paragraphes qui se terminent par un mot et pas par un signe de ponctuation. Le remplacement global à effectuer est le suivant : Critère de recherche = ">^p" Critère de remplacement = ".^&" Option "Utiliser les caractères génériques" cochée Mais comme Word ne sait pas traiter les retours chariot avec l'option "Utiliser les caractères génériques" cochée ==> tu dois faire un pré-traitement (et donc un post-traitement Pré-traitement : on remplace les retours chariot par un truc que tu n'as pas dans ton document par exemple "$$$" Critère de recherche = "^p" Critère de remplacement = "$$$^&" Option "Utiliser les caractères génériques" non cochée Remplacement : on ajoute des points à tous les paragraphes qui se terminent par un mot et pas par un signe de ponctuation Critère de recherche = ">$$$" Critère de remplacement = ".$$$" Option "Utiliser les caractères génériques" cochée Post-traitement : on remplace le truc que tu n'as pas dans ton document initial (ici "$$$") par des retours chariot Critère de recherche = "$$$^p" Critère de remplacement = "^p" Option "Utiliser les caractères génériques" non cochée Voilà c'est fait. Tu ajoutes si tu n'as pas de signes de ponctuation, de tirets... En fait sur les documents correctement écrits en français. Maintenant si tu veux en plus traiter les cas qui ne sont pas correctement écrits en français comme ceux des paragraphes qui finissent par des espaces, des tabulations... tu dois ajouter dans le pré-traitement Critère de recherche = "^w^p" Critère de remplacement = "^p" Option "Utiliser les caractères génériques" non cochée Évidemment toutes ses commandes peuvent grouper dans une macro puisqu'il s'agit de fonctions standards Word. Le plus simple pour cela est alors d'enregistrer une fois les remplacements dans une macro puis d'associer cette macro à un bouton (du ruban puisque tu es en Word 2010). @+ |
|
|
00
|
|
|
#4 |
|
Candidat au titre de Membre du Club
![]() Inscription : février 2008 Messages : 56 ![]() |
Bonjour,
La macro de Heureux-Oli fonctionne bien s'il n'y a pas de ligne vierge(retour chariot uniquement) dans le texte et/ou à la fin du texte. Sinon on a erreur 5 : argument ou appel de procédure incorrect. Il manquerait,à mon avis,un If... Then précisant que si le paragraphe est vide, il faut passer au suivant. Autre anomalie pour la dernière ligne: si le retour chariot est juste après le dernier mot, le "." se met évidemment avant la dernière lettre. Quant à la méthode de Sépia, je n'arrive pour l'instant qu'à faire fonctionner que la première partie (sans les guillemets).Mais je vais réessayer ! |
|
|
00
|
|
|
#5 |
![]() ![]() ![]() Olivier LebeauContrôleur d'industrie Inscription : février 2006 Messages : 17 321 ![]() |
Salut,
On peut toujours faire un test sur la longueur de la chaîne avant de traiter le paragraphe.
__________________
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 ! |
|
|
00
|
|
|
#6 |
|
Candidat au titre de Membre du Club
![]() Inscription : janvier 2011 Messages : 11 ![]() |
Bonjour à toutes et tous
Je pense que vous donnez de la complexité à une solution simple. La macro a écrire (ou à enregistrer bêtement avec l’enregistreur de macro) est la suivante : Remplacer ¶ par . ¶ Remplacer .. par . C’est tout. On peut ensuite traiter si nécessaire les paragraphes vides que l’on souhaite conserver par : Remplacer ¶.¶ par ¶¶ Et si l’on ne souhaite pas les conserver : Remplacer ¶.¶ par ¶ Bonne journée Histoire orale |
|
|
00
|
|
|
#7 | |||
|
Candidat au titre de Membre du Club
![]() Inscription : février 2008 Messages : 56 ![]() |
Ci-joint un code à tester
![]() Code :
-Il faut que la marque de paragraphe soit juste après le dernier mot. -Évidemment les éventuels points de suspension subissent le 2e traitement aussi! -Encore à résoudre: supprimez le point des paragraphes vides (en rouge). Comme dans l'exemple ci-dessous ( Titre d'un texte, puis à la ligne, puis première ligne du texte). Un connaisseur peut-il me rajouter un bout de code? ![]() Citation:
|
|||
|
|
00
|
|
|
#8 | |
![]() ![]() JF JousseaumeInscription : octobre 2007 Messages : 2 390 ![]() |
Citation:
En effet, comme ça c'est plus simple mais ça ne traite que les points après un point. Bien que Sanfric ne nous l'ai pas indiqué, tu penses vraiment que si ton traitement ajoute un "." derrière des signes de ponctuation comme la virgule, le point-virgule, ça correspond à un usage réel. L'intérêt de ma méthode c'est que tous les signes de ponctuation sont traité en une seule opération. Certes c'est plus que Sanfric a décrit mais surtout ça correspond à ce qu'il a demandé et ce que ça fait en plus (pour le même code), je suis convaincu que c'est ce qu'il a voulu dire. Donc pour faire que les points et supprimer les ".." ta méthode est bonne mais elle se limite par exemple à la simple expression ".." et "¶.¶" mais si tu as 2 espaces devant le ¶ ou une tabulation, alors qu'avec ce que j'ai proposé c'est aussi pris en compte. Maintenant nous on propose. Avec Heureux-Oli on essaie que les gens progressent dans l'usage de l'outil pour mieux se débrouiller seul , voire promouvoir auprès de leurs petits camarades de jeu des solutions/astuces ou à défaut leur conseiller le site de DVP.com ![]() Donc comme souvent il y a plusieurs solutions, tant mieux. Elles sont plus ou moins simples et couvrent plus ou moins de fonctionnels. Donc Sanfric pourra toujours choisir en fonction de son niveau initial, de sa volonté de progresser et son urgence pour résoudre le problème. Et en plus avec un pseudo comme le sien, nos conseils/solutions que les DVPnautes lui proposent sont gratuits, tu penses bien qu'il est content. @+ |
|
|
|
00
|
|
|
#9 | ||
|
Candidat au titre de Membre du Club
![]() Inscription : février 2008 Messages : 56 ![]() |
Bonjour,
Merci pour vos conseils à tous. Mon codage est basique de chez basique et je progresse de façon empirique, résolvant les questions par des conseils glanés à gauche et à droite, sans prétention. Ce matin, j'ai rajouté ce bout de code qui résout le problème des points inutiles dans ce modèle de présentation de texte que j'utilise fréquemment. Code :
Mais si un lecteur a d'autres suggestions pour un code plus élaboré ou plus élégant, je suis preneur néanmoins.
|
||
|
|
00
|
|
|
#10 |
![]() ![]() ![]() Olivier LebeauContrôleur d'industrie Inscription : février 2006 Messages : 17 321 ![]() |
Salut,
Dans le code que j'ai donné, il y a 9 lignes. Si c'est plus complexe que 46 dans le dernier message Possible !
__________________
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 ! |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com