Private Sub CmdB_Ajouter_Click()
Dim ws As Worksheet
Dim DerrLigneTheme As Long
Dim wsListeDonnees As Worksheet
Dim i
Dim j As Long
Dim theme As String
    
' Définir les feuilles de calcul
Set ws = ThisWorkbook.Sheets("Base")
Set wsListeDonnees = ThisWorkbook.Sheets("Listes de donnees")
' Récupérer la valeur sélectionnée dans le ComboBox "CbX_Theme"
theme = USF_AjoutQuestion.CbX_Theme.List(CbX_Theme.ListIndex, -0)
' Trouver la dernière ligne avec la valeur du ComboBox dans la colonne "S"
DerrLigneTheme = ws.Cells(ws.Rows.Count, "S").End(xlUp).Row
For j = DerrLigneTheme To 1 Step -1
    If ws.Cells(j, "S").Value = theme Then
        ' Affichez ou utilisez la dernière ligne trouvée ici
        MsgBox "La dernière valeur égale à " & theme & " est à la ligne " & j
        
        For i = DerrLigneTheme To 1 Step -1
                If ws.Cells(i, "S").Value = theme Then
                    ' Insérer une nouvelle ligne après la dernière occurrence trouvée
                    ws.Rows(i + 1).Insert Shift:=xlDown
                     ' On ajout la formule dans la colonne "H"
            ws.Cells(i + 1, "H").Formula = "=IF(B" & i + 1 & "=K" & i + 1 & ",""A"",IF(C" & i + 1 & "=K" & i + 1 & _
                                            ",""B"",IF(D" & i + 1 & "=K" & i + 1 & ",""C"",IF(E" & i + 1 & "=K" & i + 1 & ",""D""))))"
                     ' Copier la valeur du contrôle "TxB_Question" dans la colonne "S"
                    ws.Cells(i + 1, "Q").Value = USF_AjoutQuestion.TxBNumTheme.Value
                    ' Incrémenter la valeur de la colonne "R"
                    ws.Cells(i + 1, "R").Value = ws.Cells(i, "R").Value + 1
                    ' Incrémenter la valeur de la colonne "R"
                    ws.Cells(i + 1, "S").Value = theme
                    
                    ' Copier la valeur du contrôle "TxB_Question" dans la colonne "U"
                    ws.Cells(i + 1, "A").Value = USF_AjoutQuestion.TxB_Question.Value
                    ' Copier la valeur du contrôle "TxB_ReponseA" dans la colonne "V"
                    ws.Cells(i + 1, "B").Value = USF_AjoutQuestion.TxB_ReponseA.Value
                    ' Copier la valeur du contrôle "TxB_ReponseB" dans la colonne "W"
                    ws.Cells(i + 1, "C").Value = USF_AjoutQuestion.TxB_ReponseB.Value
                    ' Copier la valeur du contrôle "TxB_ReponseC" dans la colonne "X"
                    ws.Cells(i + 1, "D").Value = USF_AjoutQuestion.TxB_ReponseC.Value
                    ' Copier la valeur du contrôle "TxB_QuestionD" dans la colonne "Y"
                    ws.Cells(i + 1, "E").Value = USF_AjoutQuestion.TxB_ReponseD.Value
                    
                     ' Copier la valeur du contrôle "TxB_Question" dans la colonne "U"
                    ws.Cells(i + 1, "J").Value = USF_AjoutQuestion.TxB_Question.Value
                    ' Copier la valeur du contrôle "TxB_ReponseA" dans la colonne "V"
                    ws.Cells(i + 1, "K").Value = USF_AjoutQuestion.TxB_ReponseA.Value
                    ' Copier la valeur du contrôle "TxB_ReponseB" dans la colonne "W"
                    ws.Cells(i + 1, "L").Value = USF_AjoutQuestion.TxB_ReponseB.Value
                    ' Copier la valeur du contrôle "TxB_ReponseC" dans la colonne "X"
                    ws.Cells(i + 1, "M").Value = USF_AjoutQuestion.TxB_ReponseC.Value
                    ' Copier la valeur du contrôle "TxB_QuestionD" dans la colonne "Y"
                    ws.Cells(i + 1, "N").Value = USF_AjoutQuestion.TxB_ReponseD.Value
                  
                     ' Copier la valeur du contrôle "CbX_Niveau" dans la colonne "T"
                    ws.Cells(i + 1, "T").Value = USF_AjoutQuestion.CbX_Niveau.Value
                  
                  
                    ' Copier la valeur du contrôle "TxB_Question" dans la colonne "U"
                    ws.Cells(i + 1, "U").Value = USF_AjoutQuestion.TxB_Question.Value
                    ' Copier la valeur du contrôle "TxB_ReponseA" dans la colonne "V"
                    ws.Cells(i + 1, "V").Value = USF_AjoutQuestion.TxB_ReponseA.Value
                    ' Copier la valeur du contrôle "TxB_ReponseB" dans la colonne "W"
                    ws.Cells(i + 1, "W").Value = USF_AjoutQuestion.TxB_ReponseB.Value
                    ' Copier la valeur du contrôle "TxB_ReponseC" dans la colonne "X"
                    ws.Cells(i + 1, "X").Value = USF_AjoutQuestion.TxB_ReponseC.Value
                    ' Copier la valeur du contrôle "TxB_QuestionD" dans la colonne "Y"
                    ws.Cells(i + 1, "Y").Value = USF_AjoutQuestion.TxB_ReponseD.Value
                    
                     ' Copier la valeur du contrôle "CbX_Difficulte" dans la colonne "AB"
                    ws.Cells(i + 1, "AB").Value = USF_AjoutQuestion.CbX_Difficulte.Value
                    
                    
                    MsgBox "La nouvelle ligne a été insérée avec succès après la ligne " & i
                    Exit Sub
                End If
            Next i
        Exit Sub
    End If
Next j
' Si aucune valeur correspondante n'est trouvée
MsgBox "Aucune valeur correspondante à " & theme & " n'a été trouvée dans la colonne S.", vbInformation
'On cherche la dernière ligne vide de "S"
DerrLigneTheme = ws.Cells(ws.Rows.Count, "S").End(xlUp).Row
' Vérifier si la valeur existe déjà
If Not QuestionExists(TxB_Question.Value) Then
    
    With ws
        ' Insérer la valeur dans la colonne B a E
        .Cells(DerrLigneTheme + 1, "A").Value = TxB_Question.Value
        .Cells(DerrLigneTheme + 1, "B").Value = TxB_ReponseA.Value
        .Cells(DerrLigneTheme + 1, "C").Value = TxB_ReponseB.Value
        .Cells(DerrLigneTheme + 1, "D").Value = TxB_ReponseC.Value
        .Cells(DerrLigneTheme + 1, "E").Value = TxB_ReponseD.Value
        .Cells(DerrLigneTheme + 1, "H").Formula = "=IF(B" & DerrLigneTheme & "=K" & DerrLigneTheme & ",""A"",IF(C" & DerrLigneTheme & "=K" & DerrLigneTheme & _
                                            ",""B"",IF(D" & DerrLigneTheme & "=K" & DerrLigneTheme & ",""C"",IF(E" & DerrLigneTheme & "=K" & DerrLigneTheme & ",""D""))))"
        
        .Cells(DerrLigneTheme + 1, "U").Value = TxB_Question.Value
        .Cells(DerrLigneTheme + 1, "V").Value = TxB_ReponseA.Value
        .Cells(DerrLigneTheme + 1, "W").Value = TxB_ReponseB.Value
        .Cells(DerrLigneTheme + 1, "X").Value = TxB_ReponseC.Value
        .Cells(DerrLigneTheme + 1, "Y").Value = TxB_ReponseD.Value
        
        .Cells(DerrLigneTheme + 1, "J").Value = TxB_Question.Value
        .Cells(DerrLigneTheme + 1, "K").Value = TxB_ReponseA.Value
        .Cells(DerrLigneTheme + 1, "L").Value = TxB_ReponseB.Value
        .Cells(DerrLigneTheme + 1, "M").Value = TxB_ReponseC.Value
        .Cells(DerrLigneTheme + 1, "N").Value = TxB_ReponseD.Value
        
        
        .Cells(DerrLigneTheme + 1, "Q").Value = CbX_Theme.List(CbX_Theme.ListIndex, -1)
        .Cells(DerrLigneTheme + 1, "S").Value = CbX_Theme.List(CbX_Theme.ListIndex, 0)
        .Cells(DerrLigneTheme + 1, "T").Value = CbX_Niveau.List(CbX_Niveau.ListIndex, 0)
        .Cells(DerrLigneTheme + 1, "AA").Value = CbX_Categorie.List(CbX_Categorie.ListIndex, 0)
        .Cells(DerrLigneTheme + 1, "AB").Value = CbX_Difficulte.List(CbX_Difficulte.ListIndex, 0)
    End With
    
Set wsListeDonnees = Nothing
Set ws = Nothing
    MsgBox "La question a été ajoutée avec succès.", vbInformation
Else
    MsgBox "La question existe déjà.", vbExclamation
End If
End Sub
Private Function QuestionExists(question As String) As Boolean
    Dim ws As Worksheet
    Dim rng As Range
    Dim cell As Range
    
    ' Définir la feuille de calcul
    Set ws = ThisWorkbook.Sheets("Base")
    
    ' Rechercher dans la colonne B si le thème existe déjà
    Set rng = ws.Range("A:A")
    Set cell = rng.Find(What:=question, LookIn:=xlValues, LookAt:=xlWhole)
    
    If Not cell Is Nothing Then
        QuestionExists = True
    Else
        QuestionExists = False
    End If
End Function