Bonjour,
Avec Word97 puis 2002, j'avais créé un modèle pour rédiger les lettres dans lequel je rentrais l'adresse destinataire avec InputBox, la programmation étant :
b$ = InnputBox$ (Nom et adresse du destinataire)
NouvLigne = InStr (b$, Chr(11) recherche de la position de fin d'un paragraphe puisque l'adresse comporte plusieurs lignes.
While NouvLigne <> 0
enregistrement de ligne,
recherche de la nouvelle ligne
Wend
Lorsque à la fin de la saisie de l'adresse, Ok pour la saisie
Débranchement sur la ligne
If b$ <> "" Then
Insertion du contenu de b$ au point d'insertion du document
Le problème avec Word 2007, Chr(11) n'est pas reconnu, pas plus que Chr(10) ou Chr(13), donc impossible de créer plusieurs lignes dans la boite InputBox.
Si quelqu'un aurait une solution au problème, Merci
NHenry
Messages postés15114Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention 4 mai 2024159 28 févr. 2013 à 19:29
Bonjour,
A la place de chercher avec InStr, il aurait été préférable d'utiliser Split(...).
Sinon, Essayes plutôt de faire un UserForm, tu pourras mettre un textbox Multiligne et ce sera mieux pour l'utilisateur.
v----Signature--------v----------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list ---
Mon site
Merci pour ta réponse.
Je pense que Split s'adresserait plutôt à de la gestion de tableau ... Ici, c'est un texte sur plusieurs lignes avec éventuellement des sauts de ligne, ce qui peut poser peut-être problème avec split, mais il est vrai que je n'ai encore jamais utilisé cette commande.
Reste UserForm ... J'aurais préféré utiliser le code existant ...
Je reste quand même surpris que l'instruction InStr sous VB WORD 2007 ne reconnaissance pas les caractères de fin de ligne, de retour chariot, ...
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 1 mars 2013 à 10:50
Bonjour,
je n'ai pas compris ton explication quelque peu "embrouillée" et encore moins cette affaire de chr(11) dans une inputbox.
Que cherches-tu donc à faire ?
Si c'est :
- obliger l'utilisateur à saisir au moins un nom et une adresse comportant au moins une ligne
- avoir ton résultat sur autant de lignes que saisies, regarde ce que ferait ceci :
mes_titres = Array("nom", "adresse1", "adresse2", "adresse3", "adresse4")
For i = 0 To UBound(mes_titres)
b$ = ""
Do While b$ = ""
b$ = InputBox(mes_titres(i) & " du destinataire")
If b$ <> "" Then
nouvligne = nouvligne & Chr(10) & b$
Else
If i > 1 Then Exit For
End If
Loop
Next
nouvligne = Mid(nouvligne, 2)
MsgBox nouvligne
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Bonjour à tous, et merci pour vos réponses.
La macro dont je fais référence dans mes messages précédents générait automatiquement mes lettres de courrier. Elle avait été développée en word97 il y a maintenant de nombreuses années !
Un ami m'ayant passé récemment Office 2007, par curiosité intellectuelle, j'ai voulu la reprendre dans ce nouvelle environnement, et essayer de comprendre pourquoi cela bloquait. Est-ce InputBox qui ne retransmet pas le caractère "retour chariot" ou "fin de ligne" lorsque l'on appuie sur "Entrée" pour saisir une nouvelle ligne, ou est-ce InStr qui lui ne reconnait pas ces caractères ?
Si j'avais à la réécrire, j'utiliserais des UserForm pour les zones textes (adresse du destinataire) et les listes déroulantes pour les entêtes et formules de politesses.
Mais, il reste encore plus simple : insérer directement dans le modèle de document des zones textes et des listes déroulantes sans faire appel à des macros !
Merci encore pour votre participation. Sauf, suite par curiosité intellectuelle sur cette anomalie, je considère le sujet comme clos.
Vous n’avez pas trouvé la réponse que vous recherchez ?