Salut,
Je constate que tu utilise la propriété Tag de tes contrôles judicieux. Voilà une fonction que j'utilise pour Tous les contrôles sur le UserForm.
Elle est à mettre au chaud dans ton module Outils (J'éspère que tu as un module Outils ou Fonctions).
' // GetTheValue By Avinus le : 03/07/2019
' // Récupérer une valeur par rapport à une clé dans un Tag
Public Function GetTheValue(ByVal TagValue As String, ByVal Key As String) As String
On Error Resume Next
Dim workTb() As String
Dim Ele() As String
Dim myVariabs() As String
Dim intCounter As Integer
workTb = Split(TagValue, ";")
ReDim myVariabs(LBound(workTb) To UBound(workTb), 0 To 1)
For intCounter = LBound(workTb) To UBound(workTb)
Ele = Split(workTb(intCounter), ":=")
myVariabs(intCounter, 0) = Ele(0)
If UBound(Ele) = 1 Then
myVariabs(intCounter, 1) = Ele(1)
End If
'Debug.Print myVariabs(intCounter, 0) & " " & myVariabs(intCounter, 1)
Next
For intCounter = LBound(myVariabs) To UBound(myVariabs)
If Key = myVariabs(intCounter, 0) Then
GetTheValue = myVariabs(intCounter, 1)
End If
Next
End Function
Elle n'est pas de moi mais de Avinus, elle est très pratique pour stocker tout un tas de truc dans la propriété Tag
Cette propriété doit être définie comme suit Value:=3;DefaultValue:=1
Pour l'appel tu lances
For Each Ctrl In Me.Controls 'boucle sur tous les controles CTRL de l'UserForm en cours
'si la propriété [Tag] du contrôle n'est pas vide, renvoie la valeur du tableau dans le contrôle
If GetTheValue(Ctrl.Tag, "Value") <> "" Then
Ctrl.Value = TV(LI, CByte(Ctrl.Tag))
Else
Ctrl.Value = vbNullString
Next Ctrl 'prochain contrôle de la ligne
Tu l'auras compris pour retourner une chaine vide ne rien mettre après le = dans Value:=3;DefaultValue:=1 de la propriété Tag. Avec cette méthode tu peux gérer plusieurs propriétés dans le Tag de chaque contrôles