Déclaration d'une TextBox pour utilisation sans une sous-procédure

  • Initiateur de la discussion Initiateur de la discussion Tibo2
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Tibo2

XLDnaute Nouveau
Bonjour à tous,

J'ai un petit problème, j'ai crée un userform avec un certain nombre de TextBox. Sur 10 TextBox je dois écrire les mêmes lignes de code: à savoir réécrire la saisi de l'utilisateur en pourcentage.

Mon code initiale est le suivant:
Code:
TB_ProfilRouleur_20 = (Replace(TB_ProfilRouleur_20, ".", ","))
TB_ProfilRouleur_20.Value = Format(TB_ProfilRouleur_20.Value, "0%")
TB_ProfilRouleur_20 = TB_ProfilRouleur_20.Value

If Left(TB_ProfilRouleur_20, Len(TB_ProfilRouleur_20) - 1) < 0 _
    Or Left(TB_ProfilRouleur_20, Len(TB_ProfilRouleur_20) - 1) > 100 Then
    
    MsgBox "Le texte saisi n'est pas valide, saisir un chiffe uniquement entre 0 et 1"
    TB_ProfilRouleur_20.Value = 0
    TB_ProfilRouleur_20.Value = Format(TB_ProfilRouleur_20.Value, "0,00%")
    TB_ProfilRouleur_20 = TB_ProfilRouleur_20.Value
    
End If

Il marche bien aucun problème. Cependant je voudrai créer une procédure qui fasse cela. Donc j'ai écrit:
Code:
Private Sub TB_ProfilRouleur_20_Exit(ByVal Cancel As MSForms.ReturnBoolean)
SaisiTxtProfilRouleur (TB_ProfilRouleur_20)
End Sub

Public Sub SaisiTxtProfilRouleur(TxtBox As Control)

TxtBox = (Replace(TxtBox, ".", ","))
TxtBox.Value = Format(TxtBox.Value, "0%")
TxtBox = TxtBox.Value

If Left(TxtBox, Len(TxtBox) - 1) < 0 _
    Or Left(TxtBox, Len(TxtBox) - 1) > 100 Then
    
    MsgBox "Le texte saisi n'est pas valide, saisir un chiffe uniquement entre 0 et 1"
    TxtBox.Value = 0
    TxtBox.Value = Format(TxtBox.Value, "0,00%")
    TxtBox = TxtBox.Value
   
End If
End Sub

Une message d'erreur apparait dans TB_ProfilRouleur_20_Exit est me dit qu'un objet est requis pour faire marché ma procédure... je ne comprends pas trop... comment dois-je déclarer TxtBox.

Merci d'avance à la personne qui pourra m'éclairer,

Bonne journée
 
Re : Déclaration d'une TextBox pour utilisation sans une sous-procédure

Bonjour,

ceci fonctionne chez moi, 2 procédures placées dans le module de l'usf :
Code:
Option Explicit
Private Sub test(tx As Control)
MsgBox tx.Name
End Sub
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
test TextBox1
End Sub

bonne journée
@+
 
Re : Déclaration d'une TextBox pour utilisation sans une sous-procédure

Bonjours
Enlevez simplement les parenthèses. Elle ne sont requise que pour une Function ou pour un appel de procédure précédé de Call.
Si on en met quant même alors qu'il n'en faut pas il peut se mettre à construire, en tant que paramètre, au lieu de l'objet requis, une collection d'objet qui n'en contient en l’occurrence qu'un, ce qui n'est pas la même chose.
cordialement.
 
Re : Déclaration d'une TextBox pour utilisation sans une sous-procédure [RESOLU]

Merci à Pierrot et Dranreb,

C'était bien les parenthèses. J'avais oublié d'apprendre ce détail...

ça marche parfaitement.

Bonne journée à vous 2,
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
244
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
483
Réponses
2
Affichages
154
  • Question Question
Microsoft 365 TEXTBOX
Réponses
7
Affichages
615
Réponses
4
Affichages
243
Réponses
3
Affichages
298
Retour