Empêcher un doublon dans une base de données
44maKA
-
Heliotte Messages postés 1561 Statut Membre -
Heliotte Messages postés 1561 Statut Membre -
Bonjour,
Je suis actuellement entrain de travailler sur un formulaire liée à une base de données. Grâce à un bouton, j'enregistre les données du formulaire dans ma base.
Voici mon code actuel :
J'aimerais faire apparaitre sous la partie copie des données, un code qui me permettrait d'empêcher à l'utilisateur de rentrer à nouveau la date du jour.
Par conséquent, je souhaiterais dire que si la donnée (date) de la cellule "C3" de ma feuille "saisie" est déjà présente dans la plage "B4:B368" de la feuille "Base de données" alors une msgbox affiche le msg "Date déjà enregistrée. Cependant au vu de mes petites connaissances en VBA je n'ai pas réussis à trouver le code efficace.
En vous remerciant d'avance pour votre aide.
Je suis actuellement entrain de travailler sur un formulaire liée à une base de données. Grâce à un bouton, j'enregistre les données du formulaire dans ma base.
Voici mon code actuel :
Sub saisie()
With Sheets("Base de données")
'Message d'erreur si base pleine
If Not IsEmpty(Sheets("Base de données").Range("A369").Value) Then
MsgBox "La base de donnée est remplie. Mettre à jour !"
Else
End If
'Copie les données du formulaire dans la base
plva = .Range("A" & Rows.Count).End(xlUp).Row + 1
.Range("A" & plva & ":M" & plva) = Application.Transpose(Sheets("saisie").Range("C2:C14"))
'Rendre vierge le formulaire
Sheets("saisie").Range("C4:C9").ClearContents
End With
End Sub
J'aimerais faire apparaitre sous la partie copie des données, un code qui me permettrait d'empêcher à l'utilisateur de rentrer à nouveau la date du jour.
Par conséquent, je souhaiterais dire que si la donnée (date) de la cellule "C3" de ma feuille "saisie" est déjà présente dans la plage "B4:B368" de la feuille "Base de données" alors une msgbox affiche le msg "Date déjà enregistrée. Cependant au vu de mes petites connaissances en VBA je n'ai pas réussis à trouver le code efficace.
En vous remerciant d'avance pour votre aide.
3 réponses
-
Bonjour 44maKa,
Fait de tête .. à tester !
For i=4 To 368 If(MaDate = CDate(Cells(i,2).Value)) Then MsgBox "Date déjà enregistrée" End If Next i -
Bonsoir 44maKA,
Il faut ajouter un booléen et travailler dessus pour savoir, si oui ou non, il faut enregistrer les données.
Même exemple avec un booléen:
Dim Enregistre As Boolean ' Enregistre = True For i=4 To 368 If(MaDate = CDate(Cells(i,2).Value)) Then MsgBox "Date déjà enregistrée" Enregistre = False i = 369 End If Next i If (Enregistre) Then ' code qui enregistre les données End If -