Limiter le Nbr de caractères (en saisie) dans un objet texte (shape) en VBA

LUSTRUCRU Messages postés 91 Date d'inscription mardi 8 avril 2003 Statut Membre Dernière intervention 15 mars 2013 - 15 mars 2013 à 12:30
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 16 mars 2013 à 07:49
Bonjour le Forum,
mon problème est simple,
j'ai sur une feuille excel un objet Zone de texte (ZoneTexte 1) pour laquelle je souhaite limiter le nombre de caractères (en l'occurence 1500). j'ai essayé ce code :

[code=vbs]Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim ZT As Characters
Static ancT As String
Const LimitCaract As Byte = 1500 'Limiter la zone de texte à 1500 caractères
    
    Set ZT = Shapes("Zone de texte 1").TextFrame.Characters
    If ancT <> ZT.Text Then
        ZT.Text = Left(ZT.Text, LimitCaract)
        ancT = ZT.Text
    End If
/code

Cela me renvoi une erreur de compilation "dépassement de capacité".
Pourriez vous me dépanner ou me donner une autre solution ?
vous en remerciant par avance
Cordialement
Jean-François

22 réponses

BunoCS Messages postés 15394 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 29 septembre 2023 102
15 mars 2013 à 12:43
Hello,
Je déplace ta demande dans la section VBA et non dans le bar


@+
Buno, Admin CS
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 212
15 mars 2013 à 13:20
Bonjour,
Déjà, dans ce que tu montres,
ZT est typé en Characters ===>> ouvre ton aide VBA sur le mot "characters" et lis, s'il te plait !
anct, typé en String, n'est pas initialisé et donc "">>
If ancT <> ZT.Text Then n'a alors aucun sens !
reviens après un minimum de réflexion et ... de lecture.
________________________
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.
0
Bonjour,
c'est quoi ta référence à shape ? si c'est une zone de texte, c'est pas un shape. De plus, j'ai essayé pour vérif, mais soit je suis nul, soit j'ai zappé un truc, mais tu peux pas donner un nom à ta zone de texte qui contient des espaces.


Fabien
0
De plus, pourquoi ta procédure est sur le change de la feuille et non pas de ton textbox ?


Fabien
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
LUSTRUCRU Messages postés 91 Date d'inscription mardi 8 avril 2003 Statut Membre Dernière intervention 15 mars 2013
15 mars 2013 à 14:24
merci à ucfoutu pour sa réponse qui n'en est pas une et qui me semble très dedeigneuse si je n'ai pas compris ce n'est certainement pas avec une réponse de ce genre que cela va s'améliorer

merci à fabiendag

Il n'est pas question ici de TextBox sur un useform mais de l'objet text de la barre insertion d'excel insertion >> zone de texte qui est considérée comme un Shape par excel.
cette zone de texte me permet de renvoyer et d'exploiter une chaine de caractères, elle est sur la feuille excel (comme indiquée dans mon post)elle autorise les noms avec espace
cordialement
Partant du principe qu'une saisie dans la zone de texte n'est validée que lorsque le shape perd le focus...
0
Euh je pense que c'est parce que c'est vendredi, mais je vois pas du tout où tu trouves une zone de texte dans le menu Insertion d'Excel...
J'ai cela dans word mais pas dans excel


Fabien
0
LUSTRUCRU Messages postés 91 Date d'inscription mardi 8 avril 2003 Statut Membre Dernière intervention 15 mars 2013
15 mars 2013 à 14:44
Euh je pense que c'est parce que c'est vendredi, mais je vois pas du tout où tu trouves une zone de texte dans le menu Insertion d'Excel...
J'ai cela dans word mais pas dans excel


dans la zone texte de l'onglet Insertion :
Zone de texte
Entête et pieds de page
wordArt
Ligne de signature
Objets
Symboles

Cordialement
0
quand tu parles onglet, tu veux dire menu insertion ? comme tu as Fichier, Edition... ?


Fabien
0
Petite question, tu es sous quelle version de Excel ?


Fabien
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 212
15 mars 2013 à 15:02
Je viens de recevoir un message désagréable, à propos de mon invite à lire l'aide VBA, ne serait-ce que pour apprendre les bases de chez base.
J'en rajoute donc une autre couche en mettant en exergue cet aspect du code montré :
Const LimitCaract As Byte = 1500

Sans autre commentaires à l'intention de LUSTUCRU, à qui je souhaite bonne chance !

________________________
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.
0
zen ucfoutu :) llol


Fabien
0
ucfoutu tu vois de kel zone de texte il parle ? parce que moi je vois pas mais alors pas du tout


Fabien
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 212
15 mars 2013 à 15:09
1A fabiendag : oui. Mais lorsque je souhaite "bonne chance" à quelqu'un, cela veut en général dire ce que cela veut dire


________________________
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.
0
ah bah tu pourrais me dire lakelle il parle stp ?


Fabien
0
LUSTRUCRU Messages postés 91 Date d'inscription mardi 8 avril 2003 Statut Membre Dernière intervention 15 mars 2013
15 mars 2013 à 16:06
A Fabiendag : Excel 2007
A ucfoutu
la science infuse n'est pas donnée à tout le monde.
Si il existe un tel site c'est justement pour aider ceux qui ne l'on pas.
Me répondre que je dois lire les informations VBA ce n'est pas une réponse, je ne t'ai pas attendu !
C'est justement parce que je ne comprend pas que je poste ma question je ne demande pas un code, je demande une explication simple et claire sur un disfonctionnment cela fonctionne avec 250 en valeur de caractères et pas au dessus pourquoi ?
tel était ma question.
le mauvais caractère n'est pas signe d'intelligence
je n'attend pas de réponse de ta part dans la mesure ou tu ne comprend visiblement pas la question.
0
faut se calmer lustucru... il te disait juste que l'aide VBA est très utile
en effet characters renvoit à une collection et non pas à un type de variable... et pour cela ucfoutu a raison, c'est écrit dans l'aide VBA (enfin dans 2007 je suppose, moi je suis que sur 2003)


Fabien
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 212
15 mars 2013 à 18:01
Nom de nom de nom de nom !
Pas assez clair, mon message de 15:02 ?
Tu vas l'ouvrir, oui, ton aide VBA sur le mot Byte ?
Tu crois que ce geste nécessite vraiment du savoir ?
Tu attends qu'on t'expose ce qu'est le type byte ? Un cours pour cela, sans doute ?
C'est désespérant !
________________________
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.
0
Utilisateur anonyme
15 mars 2013 à 18:59
Bonjour ucfoutu,

Tu vas l'ouvrir, oui, ton aide VBA sur le mot Byte ?
Tu crois que ce geste nécessite vraiment du savoir ?
Tu attends qu'on t'expose ce qu'est le type byte ? Un cours pour cela, sans doute ?
C'est désespérant
!


Que veux-tu ? il est resté bloqué à la prononciation de "Je veux et j'exige" (avec la liaison évidemment) dans son cours de diction.

Dire que Microsoft se décarcasse pour fournir des fichiers d'aide et le site MSDN pour aider les gens, mais ils sont trop lâches (le lâche du Québec, évidemment, ) pour juste aller voir de quoi il retourne.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 212
15 mars 2013 à 19:02
Bon. Allons allons.
Il est vraiment malheureux d'en arriver là après tant d'années de pratique de Excel (que tu pratiques depuis 2005).
Si par "aide attendue" tu veux dire du code à copier/coller, regarde ce que fait ceci et n'en parlons plus :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Dim titi As String, qui As Characters
  Const toto As Integer = 1500
  Set qui = Shapes("ZoneTexte 1").TextFrame.Characters
  titi = qui.Text
  If Len(titi) > toto Then
    MsgBox "trop de caractères"
   qui.Text = Left(titi, toto)
  Else
   MsgBox "ok"
  End If
End Sub




________________________
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.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 212
15 mars 2013 à 19:22
Et pour ton information :
Je n'utilise jamais les shapes et n'en ai jamais utilisé.
Je viens donc d'ouvrir (hé oui, mon vieux ... hein ...) cette aide VBA que tu répugnes tant à consulter, juste pour voir avec plus de clarté.
Cet ENNNOOORRRMMME effort (je vais devoir me mettre au lit après un tel effort ? ) m'a permis de constater l'existence de la propriété Count (pour Characters).
On peut alpors écrire différemment et se débarasser tant de la variable titi que de la fonction len ===>
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Dim qui As Characters
  Const toto As Integer = 12
  Set qui = Shapes("ZoneTexte 1").TextFrame.Characters
  If qui.Count > toto Then
    MsgBox "trop de caractères"
   qui.Text = Left(qui.Text, toto)
  Else
   MsgBox "ok"
  End If
End Sub

Je te laisse maintenant méditer.


________________________
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.
0
Rejoignez-nous