Probleme avec InputBox

[Résolu]
Signaler
-
 Mercurius -
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

5 réponses

Messages postés
14823
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
9 octobre 2021
156
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, ...
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
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.
Petite suite ...
Pour ceux que cela intéresse, l'extrait de la macro originale, réécrite en Word2007 ne marche pas :

WordBasic.WW7_EditGoTo "destinataire"
On Error GoTo -1: On Error GoTo S1
b$ = WordBasic.[InputBox$]("Nom et Adresse du Destinataire")
nouv_Ligne = InStr(b$, Chr(11))
While nouv_Ligne <> 0
b$ = WordBasic.[Left$](b$, nouv_Ligne - 1) + WordBasic.[Right$](b$, Len(b$) - nouv_Ligne)
nouv_Ligne = InStr(b$, Chr(11))
Wend
If b$ <> "" Then
WordBasic.Insert b$
End If

S1:


Il semble que l'instruction InputBox$ n'a pas été reconduite en Word2007.