Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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]
 

pompaero

XLDnaute Impliqué
Bonjour Robert,

Je ne peux qu'une chose... Génial
C'est exactement le résultat que j'imaginai, tu es trop fort, merci

Grace à toi je peux finaliser mon fichier.
Encore merci et à bientôt peut-être.

Cordialement
pompaero
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…