IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Contrainte sur le prompt d’un InputBox


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Inscrit en
    Août 2010
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 2
    Par défaut Contrainte sur le prompt d’un InputBox
    Bonjour à tous,

    Chers amis passionnés d’Excel, d’informatique et tous vous autres, je fais appel à votre amour de VBA Excel et de la réflexion en général.
    Je suis en train de bosser sur une macro de saisie depuis 2-3 jours. Je ne suis pas mauvais en VBA Excel, mais là je coince sur une erreur qui m’énerve à un point que vous n’imaginez pas.

    Ci-dessous, j’ai isolé mon problème. Quelle est la difference entre les deux morceaux de code ci-dessous? J’ai juste rajouté, pour la ‘troisième ligne’, une douzaine de ‘a’ pour allonger le prompt.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub test2()
        Dim t1 As Integer
        Dim t2 As Integer
        t1 = Application.InputBox(Title:="intro", prompt:="Qaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa:" & Chr(13) & "R1asdddddddddddddddddddddddddddddddddddddddd" & Chr(13) & "R2aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")
        t2 = Application.InputBox(Title:="intro", prompt:="Qaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa:" & Chr(13) & "R1asdddddddddddddddddddddddddddddddddddddddd" & Chr(13) & "R2aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")
    End Sub
    Mais alors Camille, ne sais-tu pas qu’il existe une aide VBA ?

    Pour la méthode InputBox, voici ce que dit l’aide :
    « Message à afficher dans la boîte de dialogue. Il peut s'agir d'une chaîne de caractères, d'un nombre, d'une date ou d'une valeur booléenne (Microsoft Excel contraint la valeur à avoir le type de données String avant de l'afficher). »

    Résultat des courses :
    • Je ne trouve rien sur Google
    • Je ne trouve rien dans l’aide
    • Je me prends la tête

    Conclusion :
    • Je ne sais pas quelles contraintes mon prompt doit respecter
    • J’ai besoin de votre aide sinon je crains que mon PC passe par la fenêtre

    Ma question est donc : quelles contraintes est-ce que mon prompt doit respecter ? Subsidiairement, ou aurais-je pu / ou avez-vous trouvé cette information ?

    Je vous serais extrêmement reconnaissant d’éclairer ma lanterne sur ce sujet. Je suis évidemment disponible pour vous fournir des détails supplémentaires…

    Camille Geniès

  2. #2
    Membre Expert
    Avatar de tototiti2008
    Homme Profil pro
    Formateur/développeur
    Inscrit en
    Octobre 2008
    Messages
    1 267
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Formateur/développeur

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 267
    Billets dans le blog
    2
    Par défaut
    Bonjour Camille,

    il semble que la limite du prompt est à 255 caractère, que tu dépasses sur le 2ème exemple
    Je n'ai trouvé cette information nulle part, mais on ne peut que le constater...

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour
    Oui effectivement il doit y avoir une limite. Mais rien ne t'empêche de faire une concaténation de deux textes plus réduits.

  4. #4
    Inactif  
    Profil pro
    Inscrit en
    Février 2010
    Messages
    517
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 517
    Par défaut
    salut

    voici ce que l'on peut lire dans l"'aide VBA à propos de l'argument prompt d'une inputbox :

    Expression de chaîne affichée comme message dans la boîte de dialogue. La longueur maximale de l'argument prompt est d'environ 1 024 caractères, selon la largeur des caractères utilisés. Si prompt occupe plus d'une ligne, n'oubliez pas d'insérer un retour chariot (Chr(13)) ou un saut de ligne (Chr(10)) entre les lignes, ou une combinaison de caractères retour chariot-saut de ligne (Chr(13) & Chr(10)) entre chaque ligne.
    Il s'agit donc bien plus d'une dimension d'affichage que d'un nombre de caractères.

  5. #5
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Bonjour,

    Au niveau aide vba, il faut expliciter de quoi on cause !

    Il existe une méthode Inputbox ET une fonction Inputbox, les différences sont importantes et disponibles dans la FAQ de DVP :

    Quelle est la différence entre InputBox et Application.InputBox
    ?

    et dans l'aide VBA qui ne retourne pas la même chose du coup

    le code suivant ne plante pas (fonction) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub test2()
        Dim t1 'As Integer ' la mise en commentaire dispense simplement l'entrée d'une donnée pour les tests...
        Dim t2 'As integer
        t1 = "Qaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa:" & Chr(13) & "R1asdddddddddddddddddddddddddddddddddddddddd" _
        & Chr(13) & "R2aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" & Chr(10) & Chr(13) & "aaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb" _
        & Chr(13) & "R2aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" & Chr(13) & "aaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
        t2 = InputBox(Title:="1 de trop", prompt:=t1)
     
    End Sub
    à partir des premiers b, on dépasse les 255 caractères fatidiques !

    Mais... l'affichage ne les rend pas

    D'où peut-être la fameuse notion de "largeur de caractères utilisés"...

    J'ai eu le souci à une période, j'ai réussi à le contourner grâce à une formulation de texte différente qui entrait dans les normes.

    Donc je pense que tu pourrais voir l'approche différemment, soit en réfléchissant dans ton contexte à comment détourner la chose soit en affichant d'abord un msgbox (qui n'a pas ces contraintes) annonçant en détail la saisie à venir "genre vous allez devoir saisir...), puis le inputbox dont le prompt ne sera qu'un rappel bref du desiderata ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub test4()
     
    MsgBox "Qaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa:" & Chr(13) & "R1asdddddddddddddddddddddddddddddddddddddddd" _
        & Chr(13) & "R2aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" & Chr(10) & Chr(13) & "aaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb" _
        & Chr(13) & "R2aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" & Chr(13) & "aaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
    End Sub
    ... soit en utilisant un USF

    cordialement,

    Didier

  6. #6
    Candidat au Club
    Inscrit en
    Août 2010
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 2
    Par défaut Remerciements
    Merci à tous pour vos réponses rapides, et plus particulièrement à toi Didier qui a bien prit le temps de creuser.

    En effet, je m'étais aussi dit que c'était au delà d'un problème de nombre de caractères, quelque chose en rapport avec les dimensions.

    J'ai pensé aux USF mais je m'étais dit que:
    1.Je voulais garder la chose simplissime, une bonne BDDialogue old school
    2.Je voulais garder la chose simplissime pour moi car je ne connais pas les USF et il me faudrait une petite journée pour apprendre, temps que je n'ai pas au boulot!

    Merci encore,

    Sujet résolu

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 31/10/2005, 17h32
  2. retrouver les contraintes sur une colonne
    Par kalari dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 18/10/2005, 18h03
  3. Réponses: 3
    Dernier message: 28/04/2005, 17h56
  4. [Interbase] Mettre une contrainte sur un champ
    Par mika dans le forum InterBase
    Réponses: 2
    Dernier message: 26/01/2005, 15h04
  5. contrainte sur deux champs d'une table
    Par bdkiller dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 17/09/2004, 19h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo