Autres vérification avant la validation

chaelie2015

XLDnaute Impliqué
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
 

Fichiers joints

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 Impliqué
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
 

Fichiers joints

job75

XLDnaute Barbatruc
Mon code (à ne pas modifier) s'exécute quand on valide les cellules C6 ou C16, pas besoin de bouton.
 

Discussions similaires


Haut Bas