Autres vérification avant la validation

chaelie2015

XLDnaute Accro
Bonjour Forum

J’ai une feuille de saisie (Formulaire) pour renseigner une autre feuille (BdD)

Je souhaite faire une recherche sur la feuille BdD et afficher un message d’alerte « Attention le nom que vous avez saisie et la durée sont déjà dans la bBdD » lors de la validation de la feuille de saisie

Nom&Prénom cellule C6 de la feuille "Formulaire"
Durée Cellule C16 de la feuille "Formulaire"
la colonne B ( pour Nom et Prénom) de la feuille BdD
la colonne F ( pour durée) de la feuille BDd.
MERCI PAR AVANCE
 

Pièces jointes

  • Charlie chercher alerte.xlsx
    11.9 KB · Affichages: 7

job75

XLDnaute Barbatruc
Bonjour chaelie2015,

A placer dans le code de la feuille "Formulaire" (clic droit sur l'onglet et Visualiser le code) :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim x, y, P As Range, ncol%, tablo, i&, t$, j%
x = [C6]: y = [C16]
If x = "" Or y = "" Or Intersect(Target, [C6,C16]) Is Nothing Then Exit Sub
Set P = Sheets("BdD").UsedRange
ncol = P.Columns.Count
tablo = P.Resize(P.Rows.Count + 1, IIf(ncol < 6, 6, ncol)) 'matrice, plus rapide
For i = 2 To UBound(tablo)
    If tablo(i, 2) & tablo(i, 6) = x & y Then _
        MsgBox "Attention le nom que vous avez saisi et la durée sont déjà dans la BdD !", vbCritical: Exit Sub
Next
For i = 2 To UBound(tablo)
    If tablo(i, 2) = "" Then
        t = ""
        For j = 3 To ncol
            t = t & tablo(i, j)
        Next
        If t = "" Then P(i, 2) = x: P(i, 6) = y: Exit Sub
    End If
Next
End Sub
A+
 

chaelie2015

XLDnaute Accro
Bonjour chaelie2015,

A placer dans le code de la feuille "Formulaire" (clic droit sur l'onglet et Visualiser le code) :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim x, y, P As Range, ncol%, tablo, i&, t$, j%
x = [C6]: y = [C16]
If x = "" Or y = "" Or Intersect(Target, [C6,C16]) Is Nothing Then Exit Sub
Set P = Sheets("BdD").UsedRange
ncol = P.Columns.Count
tablo = P.Resize(P.Rows.Count + 1, IIf(ncol < 6, 6, ncol)) 'matrice, plus rapide
For i = 2 To UBound(tablo)
    If tablo(i, 2) & tablo(i, 6) = x & y Then _
        MsgBox "Attention le nom que vous avez saisi et la durée sont déjà dans la BdD !", vbCritical: Exit Sub
Next
For i = 2 To UBound(tablo)
    If tablo(i, 2) = "" Then
        t = ""
        For j = 3 To ncol
            t = t & tablo(i, j)
        Next
        If t = "" Then P(i, 2) = x: P(i, 6) = y: Exit Sub
    End If
Next
End Sub
A+
Bonjour job75
merci pour la réponse , si tu permets je joins mon fichier complet avec le code de validation que je souhaite le relier avec ton code
MERCI PAR AVANCE
 

Pièces jointes

  • Charlie chercher alerte Q2 R1.xlsm
    24.5 KB · Affichages: 8

Discussions similaires

Statistiques des forums

Discussions
311 726
Messages
2 081 955
Membres
101 852
dernier inscrit
dthi16088