dans le fichier ci-joint je souhaiterai avoir ce qui suit;
lorsque j’appelle le UserForm1 depuis l’onglet Feuil1, j’aimerai qu’il m’affiche dans le textbox la suite de la colonne " complet " de l’onglet Feuil2.
C’est à dire : actuellement il y a les inscriptions qui vont de élève A à élève F.
Donc j’aimerai qu’il me donne dans le textbox " élève G ".
Donc toujours me donner la lettre suivante disponible.
Sub usf()
Dim s, i, Arr, r
For i = 1 To 26
s = s & Chr(64 + i) 'chaîe avec les 26 lettres
Next
Arr = Range("Tabel1[Référence]").Value2 'colonne avec vos références (avec un TS)
For i = 1 To UBound(Arr)
r = InStr(1, s, Arr(i, 1), 0)
If r > 0 Then Mid(s, r, 1) = " " 'remplacer lettres existants avec un espace
Next
s = Application.Trim(s) 'supprimer les espaces
If Len(s) = 0 Then
MsgBox "on a eu tous les lettres"
Else
UserForm1.TextBox1.Text = "élève " & Left(s, 1) 'premier lettre sans les espaces
UserForm1.Show
End If
End Sub
Bonjour,
code limité aux 26 lettres majuscules, et sous conditions qu’une référence soit déjà présente.
Mais pour répondre stricto sensu à la question :
Private Sub UserForm_Initialize()
Dim Cel As Range
With Feuil2
Set Cel = .Cells(.Cells(Rows.Count, "C").End(xlUp).Row, "C")
Me.TextBox1 = Cel.Offset(, -1) & " " & Chr(Asc(Cel) + 1)
End With
End Sub
Merci pour ta proposition.
Alors ton fichier que tu m’as retourné fonctionne, par contre ci je place ton code dans mon fichier réel, cela ne fonctionne plus. C’est sûr, mon tableau est en réel plus large mais cela ne devrait pas être le problème ou je me trompe ?
Merci pour ta participation mais j’ai le même soucis qu’avec celle de Bart elle me donne toujours l’élève A. J’attends le retour de sa proposition et on verra.
En attendant, Merci.
A +.
Sub usf()
Dim TS As ListObject
Set TS = Blad1.ListObjects(1)
UserForm1.TextBox1 = "Salarié " & Chr(Asc(TS.ListColumns("Référence 2").DataBodyRange(TS.ListRows.Count)) + 1)
UserForm1.Show
End Sub