Re- salut Arnaud,
a tout hazard, j'envois les codes de modification et ajout pour la question 3
peut être y verra tu plus clair que moi
merci
'============MODIFICATION ======================================================
Private Sub CheckBox1_Click()
Dim CtrlArray As Variant
Dim Test As Byte
' ici un test en boucle pour être sûr que les combo contiennent bien un enregistrement
For Each CtrlArray In Array(ComboBox1, ComboBox2)
If CtrlArray.ListIndex = -1 Then Test = Test + 1
Next
If Me.CheckBox1 = True Then
If Test > 0 Then
MsgBox "Vous devez d'abord sélectionner un enregistrement valide" & vbCrLf & _
"avant d'activer cette option." & vbCrLf & "Il y a " & Test & " ComboBox" & _
" sans enregistrement valide", vbExclamation, T
Me.CheckBox1 = False 'on me remet non checké
Exit Sub
Else
With Me
.Label1 = "Mode Modification"
.CommandButton2.Visible = True
ComboBox1.SetFocus
End With
BeforeModifIndex = TheComboIndex 'Ici on récupère l'index avant modif
ComboBox3.Visible = False
'ici on cache les dropdown arrow car il n'y a pas de synchro en mode modif
For Each CtrlArray In Array(ComboBox1, ComboBox2)
CtrlArray.ShowDropButtonWhen = fmShowDropButtonWhenNever
Next
End If
Else
With Me
.CommandButton2.Visible = False
.Label1 = "Mode Consultation"
End With
'Ici on remet dans les dropdown
ComboBox3.Visible = True
For Each CtrlArray In Array(ComboBox1, ComboBox2, ComboBox3)
CtrlArray.ShowDropButtonWhen = fmShowDropButtonWhenAlways
Next
End If
End Sub
Private Sub CommandButton2_Click()
Dim Msg As Byte
Dim TheOrigine As String, TheModified As String
Dim l As Integer
l = BeforeModifIndex + 7 'Toujours gérer les dacalages
With Feuil13
'test pour comparer AVANT et APRES les Modifs
TheOrigine = .Cells(l, 2) & .Cells(l, 8)
TheModified = Me.ComboBox1 & Me.ComboBox2
If TheOrigine = TheModified Then
MsgBox "Et alors !!! vous croyez wue je vois pas que vous avez rien modifié !! lol", vbInformation, T & " lol lol lol"
Exit Sub 'zêtes sorti !! lol
End If
Msg = MsgBox("Voulez-vous valider ces modifications :" & vbCrLf & vbCrLf & Chr(9) & _
"Enregistrement N° " & Feuil13.Cells(l, 10) & vbCrLf & Chr(9) & _
"Désignation " & .Cells(l, 2) & vbCrLf & Chr(9) & Chr(9) & _
" par : " & Me.ComboBox1.Value & vbCrLf & Chr(9) & _
"Prix en Euro " & .Cells(l, 8) & vbCrLf & Chr(9) & Chr(9) & _
" par : " & Me.ComboBox2.Value, vbExclamation + vbOKCancel, T)
If Msg = vbCancel Then Exit Sub ' Si on annule, on sort
'Sinon on effectue les modifiactions sur la ligne
.Cells(l, 2) = Me.ComboBox1
.Cells(l, 8) = Me.ComboBox2
End With
Ini '<<<<<<<<<<<<< Ré-initialisation par la Macro Ini en bas de Module
End Sub
'============AJOUT D'ENREGISTREMENT ======================================================
Private Sub CommandButton3_Click()
Dim CtrlArray As Variant
Dim l As Integer
Dim Test As Byte
Dim Alert As Byte, Msg As Byte
' ici un test en boucle pour être sûr que les combo contiennent bien un enregistrement
ComboBox3.Visible = False
For Each CtrlArray In Array(ComboBox1, ComboBox2)
If CtrlArray.Value = "" Then Test = Test + 1
Next
If Test = 6 Then Exit Sub 'si aucun enregistrement on arrête le traitement???6au lieu de 7
If Test > 0 Then
Alert = MsgBox("Une ou plusieurs Combobox ne contiennent pas d'enregistrement." & vbCrLf & _
"Voulez vous poursuivre l'ahout dans la base de donnée .", vbQuestion + vbYesNo, T)
If Alert = vbNo Then Exit Sub ' si on répond non on sort
End If
Msg = MsgBox("Voulez-vous valider ces Informations :" & vbCrLf & vbCrLf & Chr(9) & _
"Désignation : " & Me.ComboBox1.Value & vbCrLf & Chr(9) & _
"Prix en Euro : " & Me.ComboBox2.Value, vbInformation + vbOKCancel, T)
If Msg = vbCancel Then Exit Sub ' Si on annule, on sort
'Sinon on effectue l'ajout dans la base de donnée sur la dernière ligne vide
'On Trouve dernière ligne remplie
l = Sheets(f).Range("B65536").End(xlUp).Row + 1 'Plus 1 = la dernière ligne vide !
With Feuil13
.Cells(l, 2) = Me.ComboBox1
.Cells(l, 8) = Me.ComboBox2
End With
'on Vide les ComBobox pour une prochaine Saisie
For Each CtrlArray In Array(ComboBox1, ComboBox2)
CtrlArray.Value = ""
Next
Ini '<<<<<<<<<<<<< Ré-initialisation par la Macro Ini en bas de Module
End Sub
Private Sub Ini()
Dim l As Integer
'Consultation = True 'Par Défaut on part en mode de Consultation
'FromSpin = False 'Par défaut on n'utilise pas le Spin
'trouve dernière ligne remplie
l = Sheets(f).Range("B65536").End(xlUp).Row
'mise à jour des données dans les combo...
With Me
.ComboBox1.RowSource = f & "!B7:B" & l
.ComboBox2.RowSource = f & "!H7:H" & l
.ComboBox3.RowSource = f & "!I7:I" & l
.SpinButton1.Max = l - 6 ' <<<< ATTENTION DECALAGE DE DEUX
End With
Renum '<<<<<<<<<<<<< Ré-numérotation des item par la Macro Ini en bas de Module
End Sub