Bonjour
j'ai regler le premier probleme il me reste :
jai 2 bouton ajouter et enregistrer
j'ai deux feuilles : feuille liste employe et feuille tableaux recettes
dans userforme1 j'ai un combobox1 de la liste employer : feuille liste employe
j'ai aussi un textbox9 qui est employe mais dans la feuille tableaux recettes
quand je rajoute un enregistrement les donnees vont sur la feuille mais quand tu reclik sur enregistrement il reenregistre
je veux qu'il enregistre une seul fois.
je veux aussi que le nouvel enregistrement de ma tectbox9 va aussi sur le combobox1 sans doublons
Private Sub ajouter_Click()
Dim totalPU As Double
' Ajout dans la ListBox1
With ListBox1
.AddItem TextBox4.Value ' Date
.List(.ListCount - 1, 1) = TextBox8.Value ' Coupe
.List(.ListCount - 1, 3) = TextBox9.Value ' Employé
.List(.ListCount - 1, 4) = TextBox6.Value ' Remise
End With
' Réinitialisation des champs après ajout pour la prochaine saisie
TextBox4.Value = ""
TextBox6.Value = ""
TextBox8.Value = ""
TextBox9.Value = ""
TextBox4.SetFocus ' Remet le curseur sur le premier champEnd Sub
End Sub
Private Sub enregistrer_Click()
On Error GoTo ErreurSaisie
' Désactive le bouton pour éviter clics multiples
CommandButton17.Enabled = False
Dim ws As Worksheet
Dim ligne As Long
Set ws = ThisWorkbook.Sheets("tableaux recettes")
' Vérifie les champs obligatoires (Date, Coupe, Employé)
If Trim(TextBox4.Value) = "" Or Trim(TextBox8.Value) = "" Or Trim(TextBox9.Value) = "" Then
MsgBox "Veuillez remplir la date, la coupe et l'employé.", vbExclamation
GoTo Fin
End If
' Trouve la prochaine ligne vide à partir de la ligne 6
ligne = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row + 1
If ligne < 6 Then ligne = 6
' Enregistre les données saisies
With ws
.Cells(ligne, 1).Value = TextBox4.Value ' Date
.Cells(ligne, 2).Value = TextBox8.Value ' Coupe
.Cells(ligne, 3).Value = TextBox5.Value ' PU (peut être vide)
.Cells(ligne, 4).Value = TextBox9.Value ' Employé
.Cells(ligne, 5).Value = CDbl(TextBox6.Value) / 100
.Cells(ligne, 5).NumberFormat = "0%"
.Cells(ligne, 6).Value = TextBox7.Value ' Total PU (peut être vide)
End With
' Ajoute l'employé si non présent dans "liste employé"
Dim wsEmploye As Worksheet
Dim existe As Boolean
Dim i As Long
Set wsEmploye = ThisWorkbook.Sheets("liste employe")
existe = False
For i = 6 To wsEmploye.Cells(wsEmploye.Rows.Count, 1).End(xlUp).Row
If wsEmploye.Cells(i, 1).Value = TextBox9.Value Then
existe = True
Exit For
End If
Next i
If Not existe Then
wsEmploye.Cells(wsEmploye.Cells(wsEmploye.Rows.Count, 1).End(xlUp).Row + 1, 1).Value = TextBox9.Value
End If
' Réinitialise les champs via bouton Ajouter
CommandButton11_Click
Fin:
' Réactive le bouton
CommandButton17.Enabled = True
Exit Sub
ErreurSaisie:
MsgBox "Erreur lors de l'enregistrement.", vbCritical
Resume Fin
End Sub