Array pour gérer nombre important de controles dans un userform

  • Initiateur de la discussion Initiateur de la discussion lodam
  • 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 !

lodam

XLDnaute Occasionnel
Bonsoir
Dans un userform, j'ai de nombreux controles (environ 25 textbox et combobox) tous nommés.
Je souhaite tout simplement coller les valeurs des controles dans la feuille1
Afin d'aller plus vite, je me suis dit qu'on pouvait peut être utiliser ARRAY comme ceci :
-------------------------
Dim liste
Liste=array("depose1","depot2","genre"3") 'liste volontairement raccourcie des noms des textbox et combobox
For n = 0 To UBound(liste)
derlin = Sheets("feuille1").Range("A65536").End(xlUp).Row + 1

Sheets("feuille1").Cells(derlin, n + 1) = liste(n) ' C'est ici que ça coince !!

Next n
---------------------------

Je ne sais pas si on peut le faire mais je n'ai pas encore trouvé la solution.
La connaissez-vous ?
merci et bonne soirée
 
Re : Array pour gérer nombre important de controles dans un userform

Bonsoir,

Tu peux essayer ceci :
Sheets("feuille1").Cells(derlin, n + 1) = UserForm1.Controls(liste(n))


Attention, sauf erreur, derlin va changer de valeur en cours de copie car il est recalculé dans la boucle.
Plutot comme ça, non ?
Dim liste
Liste=array("depose1","depot2","genre"3")
derlin = Sheets("feuille1").Range("A65536").End(xlUp).Row + 1
For n = 0 To UBound(liste)
Sheets("feuille1").Cells(derlin, n + 1) = UserForm1.Controls(liste(n))
Next n
 
Dernière édition:
Re : Array pour gérer nombre important de controles dans un userform

Bonsoir à toutes et à tous
La solution qui a été donnée est bonne mais comment faire pour respecter les formats des données de cette liste.
Par exemple quand une des données de la liste array est une date ou un montant en Euros.

exemple :
Dim liste
Liste=array("depose1","depot2","date_depot","montant_en_euros","date_reprise","genre"3")
derlin = Sheets("feuille1").Range("A65536").End(xlUp).Row + 1
For n = 0 To UBound(liste)
Sheets("feuille1").Cells(derlin, n + 1) = UserForm1.Controls(liste(n))
Next n

Dans ce cas, dans la feuille excel "Feuille1" on trouve des dates "date_depot" et "date_reprise" qui sont sous la forme de nombre (ex : 39456 au lieu du 22/09/08)

Donc comment faire pour traiter ces formats en utilisant toujours le tableau array?
merci pour vos réponses
Bonne soirée
lodam
 
Re : Array pour gérer nombre important de controles dans un userform

Bonjour,

Tu peux essayer ceci :

Sub Test()
Dim liste
liste = Array("depose1", "depot2", "date_depot", "monta nt_en_euros", "date_reprise", "genre3")
MesFormats = Array("General", "General", "dd/mm/yyyy", "#,##0.00 $", "dd/mm/yyyy", "General")
derlin = Sheets("feuille1").Range("A65536").End(xlUp).Row + 1
For n = 0 To UBound(liste)
With Sheets("feuille1").Cells(derlin, n + 1)
.Value = UserForm1.Controls(liste(n))
.NumberFormat = MesFormats(n)
End With
Next n
End Sub

En mettant les formats souhaités dans MesFormats
 
Dernière édition:
- 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

Retour