Bonjour,
le paramètre attendu dans me.Controls() est soit l'indice du contrôle (1 à N), soit son nom.
Dans ton exemple je ne vois pas où Ref est défini.
J'ai écrit une fonction, en m'inspirant de ce que tu as fait, et surtout en fonction du résultat que tu attends, qui intègre sur l'onglet DATA les zones de texte d'un formulaire, nommées INFO1 à INFO4
Tu peux t'en inspirer: (procédure appelée par un bouton du formulaire)
Sub Addme()
'Procédure permettant de rajouter les données du formulaire dans le fichier data.
Dim NextRow As Range 'Variable objet qui pointe sur la cellule courante
Dim X As Long
Dim Cnum As Integer 'Compteur pour les champs à ajouter sur DATA
'Je les ai nommés INFO1 à INFO4 dans mon test
'1ère cellule vide de la colonne A de l'onglet DATA
Set NextRow = Sheets("Data").Cells(65535, 1).End(xlUp).Offset(1, 0)
'initialisation du compteur pour INFO1 à INFO4
Cnum = 0
'Boucle qui parcourt tous les contrôles du formulaire
For X = 0 To Me.Controls.Count - 1
'Ne retenir que les contrôles dont le nom commence par INFO
If Left(Me.Controls(X).Name, 4) = "INFO" Then
Cnum = Cnum + 1
'Affecte la valeur du contrôle en cours à la cellule en cours
NextRow.Value = Me.Controls("INFO" & Cnum).Value
'Passe à la cellule de la colonne suivante, même ligne
Set NextRow = NextRow.Offset(0, 1) 'on les insère dans les colonnes.
End If
Next X
End Sub
Cordialement,