Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

nabilexcel2007

XLDnaute Occasionnel
Bonjour j ai un jserform2 avec liistbox1 et textbox2 salaire
Message erreur jaune
Textbox2.value = listbox1.liste(listbox1.listindex, 2) 'salaire
Ma feuille tableaux salaires
A5 date
B5 employe
C5 salaire verser


Private Sub ListBox1_Click()
If ListBox1.ListIndex = -1 Then Exit Sub ' Aucune ligne sélectionnée

' Activer les boutons Modifier et Supprimer si nécessaires
CommandButton2.Enabled = True ' Modifier
CommandButton3.Enabled = True ' Supprimer

' Remplir les champs
TextBox1.Value = ListBox1.List(ListBox1.ListIndex, 0) ' Date
ComboBox1.Value = ListBox1.List(ListBox1.ListIndex, 1) ' Employé
TextBox2.Value = ListBox1.List(ListBox1.ListIndex, 2) ' Salaire
End Sub



Private Sub UserForm_Initialize()
' Charger les employés dans ComboBox1
Dim i As Long
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("liste employé")

ComboBox1.Clear
ComboBox1.AddItem "TOUT" ' Option TOUT

For i = 6 To ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
If ws.Cells(i, 1).Value <> "" Then
ComboBox1.AddItem ws.Cells(i, 1).Value
End If
Next i

' Charger les données dans la ListBox
Call RafraichirListBox
End Sub


Sub RafraichirListBox()
Dim i As Long
Dim derLig As Long
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("tableaux salaires")

With ListBox1
.Clear
.ColumnCount = 3
.ColumnHeads = False ' On ne met pas True si on ne passe pas par RowSource
.ColumnWidths = "100;100;100"
End With

' Déterminer la dernière ligne
derLig = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
If derLig < 6 Then Exit Sub ' Aucune donnée

' Ajouter les données ligne par ligne
For i = 6 To derLig
With ListBox1
.AddItem ws.Cells(i, 1).Value ' Date
.List(.ListCount - 1, 1) = ws.Cells(i, 2).Value ' Employé
.List(.ListCount - 1, 2) = ws.Cells(i, 3).Value ' Salaire
End With
Next i
End Sub

Merci
 
Re,
Oui, tout le monde peux voir votre fichier.
Sur d'autre sites d'aide, il y a des messageries privees. XLD, je n'en sais rien.

Suite:
A priori il y aurait une messagerire privee, mais je sais pas Comment Ca Marche
 
Dernière édition:
Bonjour
une première remarque:
il y a
VB:
'Message erreur jaune
Textbox2.value = listbox1.liste(listbox1.listindex, 2) 'salaire
je pense qu'il faut
Code:
 listbox1.list(listbox1.listindex, 2) 'salaire
jean marie
deuxio
il est toujours possible d'anonymiser un fichier (exemple)
cordialement
Jean marie
 
Bonjour
une première remarque:
il y a
VB:
'Message erreur jaune
Textbox2.value = listbox1.liste(listbox1.listindex, 2) 'salaire
je pense qu'il faut
Code:
 listbox1.list(listbox1.listindex, 2) 'salaire
jean marie
deuxio
il est toujours possible d'anonymiser un fichier (exemple)
cordialement
Jean marie
Bonjour,
Dans le code c'est bien
Code:
 listbox1.list(listbox1.listindex, 2) 'salaire
 
re
j'ai mis ce code pour tester :
Code:
Private Sub ListBox1_Click()
If ListBox1.ListIndex = -1 Then Exit Sub ' Aucune ligne sélectionnée
' Remplir les champs
TextBox1.Value = ListBox1.List(ListBox1.ListIndex, 0) ' Date
ComboBox1.Value = ListBox1.List(ListBox1.ListIndex, 1) ' Employé
TextBox2.Value = ListBox1.List(ListBox1.ListIndex, 2) ' Salaire
End Sub
Private Sub UserForm_Initialize()
With Me
   With .ListBox1
          .ColumnCount = 3
          .ColumnWidths = "80;80;80"
          .AddItem "12/05/2025"
          .List(.ListCount - 1, 1) = "xxxxx"
          .List(.ListCount - 1, 2) = "12345"

   End With
  With .ComboBox1
         .AddItem ""
         .AddItem "xxxxx"
         .ListIndex = 0
  End With
End With
End Sub
Pas d'erreur!
voir images
Jean marie
 

Pièces jointes

  • tesListBox.gif
    tesListBox.gif
    17.9 KB · Affichages: 25
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
 
Bonsoir le Fil,
sans fichier ( anonymisé ) pas beaucoup de chance d'avoir des propositions !
juste pour participer Lol
VB:
' Réinitialise les champs via bouton Ajouter
           CommandButton11_Click
      'pourrait devenir
' Réinitialise les champs via bouton Ajouter
           CBn_Ajouter_Click
    'celui ci
' Réactive le bouton
           CommandButton17.Enabled = True
'On ne sais pas a quoi il correspond ! Lol
Dommage Non ?
Jean marie
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
279
  • Question Question
XL 2021 listbox
Réponses
18
Affichages
310
Réponses
5
Affichages
346
Réponses
3
Affichages
206
  • Question Question
Microsoft 365 affichage userform
Réponses
4
Affichages
366
Retour