Bonjour,
J'essaie de réduire au mieux un code VBA et je cherche à automatiser l'écriture de texte d'un formulaire dans des cellules.
Voici le code à automatiser :
Range("Tab!A" & ligne).Value = T1.Value
Range("Tab!B" & ligne).Value = T2.Value
Range("Tab!C" & ligne).Value = T3.Caption
Range("Tab!D" & ligne).Value = T4.Caption
Range("Tab!E" & ligne).Value = T5.Value
Range("Tab!F" & ligne).Value = T6.Caption
Range("Tab!G" & ligne).Value = T7.Caption
Range("Tab!H" & ligne).Value = T8.Caption
Range("Tab!I" & ligne).Value = T9.Caption
Range("Tab!J" & ligne).Value = T10.Caption
Range("Tab!K" & ligne).Value = T11.Value
Range("Tab!L" & ligne).Value = T12.Value
Range("Tab!M" & ligne).Value = T13.Value
Range("Tab!N" & ligne).Value = T14.Value
Range("Tab!O" & ligne).Value = T15.Caption
Range("Tab!P" & ligne).Value = T16.Caption
Range("Tab!Q" & ligne).Value = T17.Caption
Range("Tab!R" & ligne).Value = T18.Value
Le problème est qu'il y a deux types de propriétés à utiliser, selon qu'il s'agit d'une TextBox/ListBox/ComboBox (Value) ou bien d'un simple intitulé (Caption).
J'ai donc voulu automatiser ce code en le réduisant à une boucle for faisant intervenir une fonction :
Dim j As Byte
Dim c As String
For j = Asc("A") - 64 To Asc("R") - 64
c = Chr(j + 64)
Me.Controls("T" & j).texte(j) = Range("Tab!" & c & ligne)
Next j
Et la fonction en question :
Function texte(t As Byte) As Object 'Comment déclarer la variable comme propriété?
If Me.Controls("T" & t).TabStop = True Then
texte = "Value"
Else
Text = "Caption"
End If
End Function
Mais je ne sais pas comment déclarer correctement la variable...
Je suis ouvert à toute proposition!