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 :

[VBA-E] Limitation de la longueur d'une chaine dans Shapes


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2005
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 23
    Par défaut [VBA-E] Limitation de la longueur d'une chaine dans Shapes
    Bonjour à tous

    J'ai une shape dans une feuille Excel. Je fais des recherches dans les autres feuilles du classeur afin d'afficher à l'utilisateur les dernières modifications apportées aux feuilles. Je fait cela avec VBA. Je génère alors une chaine de caractères (string) (nommé "InputText")qui contient les données que je veux afficher dans ma shapes (qui est une text box).

    Et c'est là qu'intervient mon problème. Lorsque la chaine dépasse 255 caratères, je reçois une erreur, et la macro de m'affiche rien dans la text box. J'ai fait une "béquille" dans le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    shapes("Text Box 260").textframe=mid(InputText,1,255)
    ce qui est assez moche, puisque il me manque des informations.

    Avez-vous déjà vu une erreur de ce genre ?

    Si oui, quel est la solution pour afficher plus de 255 caractères dans une shape text box par VBA ?

    Merki

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    N'est-ce pas dans l'inputbox que le nombre de caractères est limité à 255 ? Me semble bien me souvenir de ça.
    Dans un textbox, tu as la propriété Multiligne que tu peux passer à True, de même que tu peux modifier la valeur de la propriété MaxLenght et lui affecter une valeur de plusieurs milliers de caractères. je n'ai plus le nombre mais c'est "beaucoup"
    Tu dis
    A+

  3. #3
    Membre averti
    Inscrit en
    Octobre 2005
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 23
    Par défaut
    Non non, c'est pas dans un formulaire, ni un formulaire VBA, ni un formulaire excel

    C'est une zone de texte toute bete dans une feuille d'Excel.
    C'est ça qui me parait bizarre.
    J'ai pas le fichier sous la main, je mettrait une capture d'écran ce soir pour montrer le problème.

  4. #4
    Invité de passage
    Inscrit en
    Août 2006
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 1
    Par défaut
    je pens que tu doit travier la variable "String" que tu envoi à ton objet "Shape"

    je m'explique :

    soit X ta variable dans la quelle tu stoque toutes tes informations, celles qui rassemebles toutes les modifications aportés à tes feuilles, je supose que tu utilise un code semblable à celui là :
    ........
    MaShape.text = X (où X est décalré comme string)
    ..........

    ce que je te propose est de déclarer X comme variant au lieu de string
    et en suite l'affecter à la propriétét Text de ta Shape

    courage

  5. #5
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Je viens de mette 9000 caractères dans une zone de texte, avec retours à la ligne et tout. Je n'ai eu aucune difficulté.
    Regarde dans l'aide, il est indiqué
    Dans Microsoft Excel, la chaîne prompt ne peut pas contenir plus de 256 caractères.
    Possible que la saisie puisse dépasser cette longueur mais puisque je n'ai pas de pb à insérer 9000 caractères dans une zone de texte autant que dans une texbox de la barre de commande, à ta place je me poserais d'autres questions.
    A l'inverse de la taille du "prompt" la longueur du texte "saisi" n'est pas précisé. Si tu obtiens d'autres indications, il serait bien de les donner ici

    A+

    PS - J'ai fais le test avec VBA 97 et 2003
    Après 8400 caractères, j'ai continué à insérer du texte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        ActiveSheet.Shapes("Text Box 1").Select
        Selection.Characters(8401).Insert String:= _
            " le classeur en cours et coller les résultats à partir de la cellule A1 de cette nouvelle feuille de calcul. Pour attribuer un nom à la nouvelle feuille de calcul, tapez le nom souhaité dans la zone a"
        Selection.Characters(8601).Insert String:= _
            "ppropriée.Créer un nouveau classeurCliquez sur cette option pour créer un classeur et coller les résultats dans une nouvelle feuille de calcul du nouveau classeur.À propos de la boîte de dialogue Anal"
        Selection.Characters(8801).Insert String:= _
            "yse de positionPlage d'entréePlage d'entréePlage d'entréeTapez la référence des cellules contenant la plage des données de feuille de calcul que vous souhaitez analyser.Plage d'entréeGroupées parPlage"
        Selection.Characters(9001).Insert String:=" d'entréePour indiqu"
    Et il s'agissait bien d'une zone de texte de la barre d'outils "Dessin"

  6. #6
    Membre averti
    Inscrit en
    Octobre 2005
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 23
    Par défaut
    Merci pour ces réponses. Je vais maintenant vous présenter les résultat de mes tests:
    **String -> variant:ne marche pas
    **Characters(1).Insert "blabla" -> ne marche pas non plus

    Voilà ce que j'utilise depuis le début:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Sheets("ARRIVE").Shapes("Text Box 263").TextFrame.Characters.Text = InputText
    Avec la variante Mid ça marche, mais après plus rien avec vos solutions

    merci quand meme. Si vous avez d'autres idées....

Discussions similaires

  1. Limiter la longueur d'une chaine
    Par koyot3 dans le forum ASP.NET
    Réponses: 0
    Dernier message: 23/02/2009, 14h33
  2. changement de longueur d'une chaine dans requête UNION ?
    Par kikidrome dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 08/12/2008, 10h57
  3. longueur d'une chaine ...
    Par adrien954 dans le forum C++Builder
    Réponses: 2
    Dernier message: 15/06/2005, 12h56
  4. [langage] longueur d'une chaine lue ds un fichier
    Par perlaud dans le forum Langage
    Réponses: 6
    Dernier message: 30/06/2004, 22h36
  5. Réponses: 2
    Dernier message: 30/03/2004, 11h31

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