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

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 😉,

Pas trop compris ce que tu cherches.
Pourquoi ne pas passer par une variable (la Textbox1 est sur Feuil1) ?
VB:
Sub test()
   Dim t(0 To 3) As Object
   Set t(0) = Feuil1.TextBox1
   chosebidule t
End Sub

Function chosebidule(arr)
   MsgBox arr(0).Name
End Function
 
re
Bonjour @mapomme oui j'aurais du précisé c'est dans un userform
tu me dira ta methode peut etre reproduit de la meme maniere dans le userform
j'aurais souhaité ne pas passer par l'intermediaire du remplissage du tableau
c'est juste pour savoir si c'est possible d'une maniere ou d'une autre
 
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
 
j'adopterais donc cette écriture histoire de raccourcir mes lignes verbeuses
VB:
Private Sub CommandButton1_Click()
   dim cts as object:   Set cts = Me.Controls
   chosebidule Array(cts("textbox1"), cts("textbox2"))
End Sub
on passe donc par la collection controls
 
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
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…