XL 2013 injection d'argument array en tant qu'object dans une fonction ou sub

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 !

patricktoulon

XLDnaute Barbatruc
Bonjour a tous
tiens un petit truc qui me simplifierait bien la tache dans mes fonctions
et je ne sais pas si c'est possible

imaginons que j'ai une fonction que je vais appeller "chosebidule"
Code:
function chosebidule( arr)
msgbox arr(0).name
end function

et que je l'appelle comme ceci
VB:
sub test()
chosebidule array(TextBox1,TextBox2,TextBox3,TextBox4,TextBox5)
end sub

il est bien evident que ce qui est injecté est le ".Value(par defaut)"

ma question est donc ;

comment pourrait on faire pour que ça soit l'object qui soit injecté et non son value
 
Bonjour patricktoulon, mapomme, le forum

Je le ferai comme ça

Cordialement, @+
VB:
Sub test()
chosebidule Array("TextBox1", "TextBox2", "TextBox3", "TextBox4", "TextBox5")
End Sub
Function chosebidule(arr)
MsgBox Me.Controls(arr(0)).Name & vbLf & Me.Controls(arr(0)).Value, vbOKOnly + vbInformation
End Function
 
re bonjour @Yeahou
oui de toute facon il faut passer en amont ou en aval par une reclassification de l'argument

@mapomme
là c'est intéressant dans le sens ou visiblement(je te fait confiance pour avoir tester ) le value par défaut n'est pas appliqué car l'object envoyé est un object control et comme l'object control n'a pas de propriété ".value" puisque ca peut être un control sans text meme si en lecture on peut le lire

rigolo non ?

étonnant ces petites divergences
merci a tous les deux pour cet éclairage
 
re,

sur 365, ça passe direct comme ça, contrairement à ce qui est dit dans le post initial de Patrick, différence de version Excel ?
VB:
chosebidule Array(TextBox1, TextBox2)

Cordialement, @+

Animation.gif
 

Pièces jointes

Dernière édition:
Bonsoir le Fil
Idem chez moi "sur 365, ça passe direct comme ça" !
VB:
Option Explicit
Option Base 1
Dim i As Byte
Private Sub CommandButton1_Click()
   chosebidule Array(TextBox1, TextBox2, TextBox3)
End Sub

Function chosebidule(arr)
For i = 1 To UBound(arr)
   MsgBox arr(i).Name & vbCrLf & arr(i).Value
   Next
End Function
Bonne fin de Soirée
Jean marie
 
- 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

X
Réponses
2
Affichages
855
xavier
X
Retour