Function RemplirListeBox() As Boolean
Dim Cptws As Sheets
Dim ws As Worksheet
Dim cpt As Integer
Dim listBox As MSForms.listBox
Dim Titre As Variant
Dim i As Byte
' Connaitres le nombre de feuilles
Set Cptws = ThisWorkbook.Parent.Worksheets
' Assurez-vous que le nom de votre ListBox est correctement référencé ici (ListBox1 par défaut)
Set listBox = Me.ListBox1
' Si le Nombres de Feuilles et supérieur ou inférieur au nombres de lignes de la ListBox
' Recréer la ListBox
For Each ws In Cptws
If ws.Name Like "Client *" Then
cpt = cpt + 1
End If
Next ws
If listBox.ListCount - 1 <> cpt Then
' Effacer les éléments actuels de la ListBox
listBox.Clear
' Spécifiez les en-têtes de colonnes
Titre = Array("N°", "Clients", "Prénoms", "Nb RdV")
' Spécifiez les largeurs de colonnes (0 pt;30 pt;120 pt;80 pt;40 pt)
listBox.ColumnWidths = "80 pt;120 pt;80 pt;40 pt"
listBox.ColumnCount = 4 ' Nombre de colonnes
' Ajoutez les en-têtes de colonne à la ListBox
' Enregistrez les données du tableau dans la ligne des en-têtes
' Créer la Premiére ligne / Colonne 1
listBox.AddItem Titre(i)
For i = 1 To UBound(Titre)
listBox.List(listBox.ListCount - 1, i) = Titre(i) ' la Premiére ligne / Colonne 1/2/3
Next i
On Error Resume Next
' Boucler à travers toutes les feuilles du classeur
For Each ws In ThisWorkbook.Worksheets
If ws.Name Like "Client " & "*" Then
listBox.AddItem Split(ws.Name, " ")(1)
listBox.List(listBox.ListCount - 1, 1) = ws.Name
listBox.List(listBox.ListCount - 1, 2) = Split(ws.Range("x9").Value, " ")(2)
listBox.List(listBox.ListCount - 1, 3) = Split(Split(ws.Range("R19").Value, ">")(1), " ")(2)
End If
Next ws
On Error GoTo 0
' Le test est Vrai
RemplirListeBox = True
End If
End Function
Private Sub ListBox1_Click()
Dim ws As Worksheet
Dim listBox As MSForms.listBox
Dim selectedClient As String
Dim SelctFlag As Boolean
Set listBox = Me.ListBox1
' Récupérer le nom du client sélectionné dans la ListBox
selectedClient = listBox.List(ListBox1.ListIndex, 1)
' Test de vérification Nombres de feuilles excel = Nombres de lignes Listbox
SelctFlag = RemplirListeBox
' Si les test est vrai le nombres de lignes de la listeBox ne correspond pas au nombres de feuilles
' Recommencer l'opération ' Mise a jour de la ListBox
If SelctFlag = True Then
MsgBox "La Mise a jour de la ListBox à était faite....." & vbCrLf & "Veuillez recommencer une nouvelle selection !"
Exit Sub
End If
' Le nom de l'onglet qui correspond au client sélectionné
Set ws = ThisWorkbook.Worksheets(selectedClient)
' Activer l'onglet si le nom correspond
ws.Activate
End Sub