|
Publicité ' | ||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : juillet 2007 Messages : 1 ![]() |
Bonjour à tous,
Je cherche à réordonner des mots dans une phrase selon leur type en utilisant VBA dans Word 2007. Par exemple, si j'ai ça : [VERBE] travaille [VERBE] [NOM MASCULIN SINGULIER] l'élève [NOM MASCULIN SINGULIER], comment puis-je obtenir : [NOM MASCULIN SINGULIER] l'élève [NOM MASCULIN SINGULIER] [VERBE] travaille [VERBE] en utilisant VBA. Pourriez-vous m'aider avec ce problème, qui semble relativement simple, mais que je n'arrive pas à résoudre ? Il faudra sans doute tenir compte du nombre de mots que comprend chaque bloc. Aussi, ai-je déjà intégré dans ma base de données une formule qui compte le nombre de mots. Enfin, l'idéal serait d'avoir le code le plus court possible, sachant qu'il devra être intégré dans une macro déjà assez longue et que je dois réduire le temps de traitement au minimum pour des questions de performances. N'hésitez-pas à me poser des questions si mes explications ne sont pas assez claires. Merci pour votre aide et pour l'attention que vous porterez à ma requête, Paul |
|
|
00
|
|
|
#2 |
![]() ![]() |
Bonjour,
Je ne vois pas beaucoup de solution car comment tu définis cette phrase [NOM MASCULIN SINGULIER] le français [NOM MASCULIN SINGULIER] [VERBE] travaille [VERBE] [NOM MASCULIN SINGULIER] l'élève [NOM MASCULIN SINGULIER] Effectivement, tu pourrais dire nom singulier puis verbe puis nom singulier mais c'est la structure que tu as là (le français travaille l'élève)!!! Comment peux-tu dire à ton mot le français qu'il se place après le verbe et encore on ne suppose avoir qu'un seul verbe dans la phrase. La seule solution est dans le cas où tu définis ton premier mot le français comme COD par exemple et encore la langue française est tellement complexe (comment travaillée avec la forme passive!!) Je ne vois pas trop l'aboutissement de la macro et surtout si la définition de tes termes te permet de réaliser une seule et unique phrase. Car dans ce cas, tu risques rapidement d'arriver à des incohérences. Je pense qu'avant de chercher une macro, il faudrait déjà bien définir tous les cas et faire un organigramme de l'ordre de tes mots selon leur type. Tu risques d'avoir à créer pas mal de nouveaux types. Si en revanche, tu veux toujours placer les noms communs avant le verbe et tu n'as que deux mots, tu peux alors travailler avec l'objet range et la fonction de recherche find. Pour ce qui est optimisation, on pourra par contre peut-être plus t'aider.
__________________
Cordialement, Christophe Merci de ne pas oublier de mettre résolu quand le sujet l'est. Cela aide tous les DVPnautes dans leur recherche |
|
|
00
|
|
|
#3 | ||
|
Expert Confirmé Sénior
![]() Pierre GONZALEZDéveloppeur Office VBA Inscription : août 2005 Messages : 3 412 ![]() |
Bonsoir.
Je suis d'accord avec Carden752 : la question que tu poses est trop sommaire pour correspondre à ton besoin réel. Ceci dit, si tu veux voir dans un cas simple le type de code à mettre en oeuvre, je te propose ce bout de code qui traite la phrase lue dans une variable de type String. Code :
Il est bien évident que si le nombre de balises est important, on peut songer à réorganiser le code autour d'une liste, chaque élément de la liste correspondant à une balise, ce qui devrait éviter de multiplier les boucles Do ... Loop. Bien cordialement, PGZ
__________________
pluritas non est ponenda sine necessitate - Le rasoir d'Okham Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon |
||
|
|
00
|
|
|
#4 |
![]() ![]() ![]() Olivier LebeauContrôleur d'industrie Inscription : février 2006 Messages : 17 321 ![]() |
Salut,
Une autre otpion serait de passer par du XML qui utilise des balises qui peuvent être traitées via un XSL.
__________________
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