Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Création et appel "Function"

  • Initiateur de la discussion Initiateur de la discussion François l'aîné
  • 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 !

F

François l'aîné

Guest
Bonjour déférent à toutes et à tous.

J'ai créé (correctement j'espère) une fonction, dont le propre par rapport à une procédure, si j'ai bien compris, est de retourner une valeur : (en passant merci à Hervé)

Function misenforme_F(MEF) As String
Select Case Len(MEF)
Case 2, 5, 8, 11
MEF = MEF & ' '
End Select
End Function

Que j'appelle par la procédure :

Private Sub TextBox32_Change()
MEF = TextBox32.Text
misenforme_F MEF
TextBox32.Text = MEF
End Sub

Et cela fonctionne parfaitement.

Cependant, n'y a-t'il pas moyen de remplacer les 3 lignes de la procédure appelante par quelque chose de plus concis du style :

TextBox32.Text = misenforme_F(TextBox32.Text)

Mais cela je n'arrive pas à le faire fonctionner.

Merci de toutes les explications que toutes et tous vous voudrez bien me donner.

Bonne journée

François
 
Bonjour François,

1. Ta fonction ne renvoi pas de résultat !
J'y ai apporté les changement suivant:
Code:
Function misenforme_F(MEF) As String
Select Case Len(MEF)
Case 2, 5, 8, 11
misenforme = MEF & ' '   '<- renvoi ici le résultat
End Select
End Function

Private Sub TextBox32_Change()
MEF = TextBox32.Text
TextBox32.Text = misenforme_F MEF '<-
End Sub

2. Concernant l'appel que tu souhaites faire, il ne peut pas se faire car tu appeles la fonction avec son propre résultat.

3. Je rappelle qu'il vaut mieux dimensionner ses variables (Dim ... As...) pour éviter des erreurs...

HTH
 
Bonjour MrExcel

Je te remercie pour tes éclaircissements et ta correction que je vais mettre en oeuvre aussitôt.

Bonne journée.

François.
 
Re MrExcel

MEF a été déclaré Public dans le premier module aprés Option Explicit.

Si je mets la ligne :

TextBox32.Text = misenforme_F MEF '<-

il me dit 'erreur de compilation : fin d'instruction attendue'

Merci pour d'autres explications, mais n'y perdez pas trop de temps, c'était vraiment pour fignoler.

Cordialement

François.
 
bonjour,
La solution :

Function MEF(S$) As String
Select Case Len(S)
Case 2, 5, 8, 11
S = S & ' '
End Select
MEF = S
End Function

Private Sub TextBox1_Change()
TextBox1.Text = MEF(TextBox1.Text)
End Sub

Et pas de déclaration publique bien sur... sinon c'est plus une fonction !

Ok ?
 
Bonjour Galopin01

Merci pour ta réponse que je vais essayer. Je vais me replonger aussi dans la doc pour voir cette histoire de déclaration Public.
En tous cas merci.

Cordialement

François
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

B
Réponses
4
Affichages
1 K
B
M
Réponses
0
Affichages
954
MIMI28CG
M
T
Réponses
3
Affichages
8 K
tsikoudia91
T
C
Réponses
6
Affichages
2 K
C
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…