Bonjour
Sur un formulaire qui permet l'ajout , la modification et la suppression de données (ligne)
l'ajout se fait bien en dernière ligne mais la modification et la suppression se fait sur la première ligne au lieu de la ligne sélectionnée dans une listbox.

je pense que me.enreg ne prend pas la bonne valeur mais je ne trouve pas la solution.

Cette question est peut-être pour boisgontierjacques
merci pour votre aide

Ouverture Userform
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
Private Sub UserForm_Initialize()
   Set f = Sheets("BD")
   Set Rng = f.Range("A2:m" & f.[A65000].End(xlUp).Row)
  BD = f.Range("A2:N" & f.[A65000].End(xlUp).Row).Value
  'BD = f.Range("A2:M" & f.[A65000].End(xlUp).Row).Value
 ' BD = Rng.Value
    Ncol = Rng.Columns.Count
  Set d = CreateObject("Scripting.Dictionary")
 
 
 
  Tri BD, LBound(BD), UBound(BD), 2 ' version tri col ville
 d("*") = ""
 For i = LBound(BD) To UBound(BD)
    d(BD(i, 2)) = ""
  Next i
 Me.ComboBox2.List = d.keys
  Me.ComboBox2 = "*"
  d.RemoveAll
 
 
  Tri BD, LBound(BD), UBound(BD), 3  ' version tri cerem
  d("*") = ""
  For i = LBound(BD) To UBound(BD)
    d(BD(i, 3)) = ""
  Next i
  Me.ComboBox3.List = d.keys:
  Me.ComboBox3 = "*"
  d.RemoveAll
 
 
  Tri BD, LBound(BD), UBound(BD), 4  ' version tri date
  d("*") = ""
  For i = LBound(BD) To UBound(BD)
     d(Year(BD(i, 4))) = ""
  Next i
  Me.ComboBox1.List = d.keys:
  Me.ComboBox1 = "*"
  'd.RemoveAll
 
 
 
  Me.ListBox1.ColumnCount = 14
  Me.ListBox1.ColumnWidths = "50;60;150;50;30;30;50;50;50;50;50;50;50;50;1"
  Me.ListBox1.List = BD
 
 
    Me.Enreg = f.[A65000].End(xlUp).Row + 1
 
 
 
 
End Sub
Sélection Listbox

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
Private Sub ListBox1_Click()
    For K = 1 To Ncol
      Me("textBox" & K) = Me.ListBox1.Column(K - 1)
    Next K
   Me.Enreg = Me.ListBox1.Column(Ncol) + Rng.Row - 1
 
End Sub

Bouton ajout/modif

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
Private Sub b_modif_Click()
Me.TextBox11 = Year(Now)
 
 
    If Me.Enreg <> "" And Me.textbox1 <> "" Then
      NoEnreg = Me.Enreg
      For K = 1 To Ncol
        X = Replace(Me("textBox" & K), " ", "")
         If IsNumeric(X) Then
           f.Cells(NoEnreg, K) = Val(X)
         Else
           f.Cells(NoEnreg, K) = Me("textBox" & K)
         End If
      Next K
      raz
      Me.Enreg = ""
 
      'Me.textbox1.Paste
      Unload F_dates
      Unload F_calendrier2datesForm
      F_dates.Hide
      F_calendrier2datesForm.Hide
 
      UserForm_Initialize
    End If
 
End Sub
Private Sub b_ajout_Click()
  raz
  Me.Enreg = f.[A65000].End(xlUp).Row + 1
 
End Sub
Private Sub B_sup_Click()
 If MsgBox("Etes vous sûr de suppimer la demande de :  " & f.Cells(Enreg, 2) & " du " & f.Cells(Enreg, 4) & " ?", vbYesNo) = vbYes Then
   Enreg = Me.Enreg
   f.Cells(Enreg, 1).Resize(, Ncol).Delete Shift:=xlUp
   raz
   Me.Enreg = ""
   UserForm_Initialize
 End If
End Sub
Bouton Supprimer
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
Private Sub B_sup_Click()
 If MsgBox("Etes vous sûr de suppimer la demande de :  " & f.Cells(Enreg, 2) & " du " & f.Cells(Enreg, 4) & " ?", vbYesNo) = vbYes Then
   Enreg = Me.Enreg
   f.Cells(Enreg, 1).Resize(, Ncol).Delete Shift:=xlUp
   raz
   Me.Enreg = ""
   UserForm_Initialize
 End If
End Sub