Bonjour,
On va finir par y arriver !
Private Sub Choix_echantillon_Change()
Dim ech%, i%
If MsgBox("Voulez-vous supprimer l'échantillon : " & Choix_echantillon.Value & " ?", vbYesNo + vbQuestion, _
"Suppression d'échantillon") = vbYes Then
ech = Val(Replace(Choix_echantillon.Value, "Echantillon ", ""))
With Worksheets("Calcul carte de contrôles")
For i = 4 To 28
If .Cells(i, 1) = ech Then
.Range("A" & i & ":C" & i).Delete xlShiftUp
Worksheet_Activate
End If
Next i
End With
End If
End Sub
Private Sub Worksheet_Activate()
Dim ListEch, i%, n%
n = WorksheetFunction.Max(Worksheets("Calcul carte de contrôles").Columns("A"))
ListEch = "Echantillon 1"
For i = 2 To n
ListEch = ListEch & ";" & "Echantillon " & i
Next i
ListEch = Split(ListEch, ";")
Choix_echantillon.List = ListEch
End Sub
La suppression nécessite bien sûr la remise à jour immédiate de la liste. J'ai recomposé ta procédure Activate pour qu'elle s'adapte aux suppressions.
[En fait, compte tenu de ta numérotation par formule, la mise à jour de la liste aurait pu se faire par la suppression du dernier élément...]
Cordialement.