XL 2016 Vérifier item avant enregistrement

pompaero

XLDnaute Impliqué
Bonjour le forum,

Je cherche à créer une alerte sur l'UserForm2 avant enregistrement dans feuille "Fiche", svp.
Le contrôle concerne les colonnes D, E et F.

Si la date, le Nom et le Thème existe alors l'enregistrement des items ne se fais pas, sachant que le ListBox1 est en Multiselect.
Merci à vous.

Cdlt
pompaero
 

Pièces jointes

  • Suivi formation obligatoire.xlsm
    455.1 KB · Affichages: 15

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour pompaero, bonjour le forum,

Peut-être comme ça :

VB:
Private Sub CommandButton4_Click()
'// Bouton Valider l'entraînement vers tableau de l'onglet "Fiche"
  Dim réponse As Integer, cell As Range, I As Integer, i2 As Integer, O As Worksheet, TV As Variant, J As Integer, DF As Long, DU As Long
'// Renseignement obligatoire avant enregistrement
If TextBox1 = "" Or Famille = "" Or ListBox1.ListIndex = -1 Then
  MsgBox "Renseignement obligatoire manquant !!"
  Exit Sub
End If
Set O = Worksheets("Fiche")
TV = O.Range("D14").CurrentRegion
  réponse = MsgBox("Confirmez-vous la validation des données ?", vbYesNo)
  If réponse = vbNo Then Exit Sub
'// ajout contenu des objets dans le tableau de l'onglet "Fiche"
  For I = 0 To ListBox1.ListCount - 1
  If ListBox1.Selected(I) = True Then
  For J = 3 To UBound(TV, 1)
  DF = CLng(TV(J, 3))
  DU = CLng(CDate(Format(TextBox1, "dd/mm/yyyy")))
  If DF & TV(J, 4) & TV(J, 5) = DU & Me.ListBox1.List(I) & Me.Famille.Value Then
  MsgBox TV(J, 4) & ", " & TV(J, 5) & ", le " & CDate(DF) & " existe déjà !" & _
  "cette donnée ne sera pas validée !"
  GoTo suite
  End If
  Next J
  
  
  With Feuil4
  i2 = .Cells(Rows.Count, 4).End(xlUp).Row + 1
  .Range("D" & i2).Value = CDate(Format(TextBox1, "dd/mm/yyyy")) 'Format(TextBox1, "dd/mm/yyyy")
  .Range("E" & i2).Value = ListBox1.List(I)
  .Range("F" & i2).Value = Famille
  .Range("G" & i2).Value = SousFamille
  .Range("H" & i2).Value = Format(Duree, "hh:mm")
  .Range("I" & i2).Value = ComboBox1
  .Range("J" & i2).Value = ComboBox2
  End With
  i2 = i2 + 1
  End If
suite:
  Next I
'// réinitialisation des objets
  MsgBox "Entraînement enregistré"
  Unload Me
  UserForm2.Show 0
End Sub[\code]
 

Statistiques des forums

Discussions
314 017
Messages
2 104 579
Membres
109 081
dernier inscrit
Vio21