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.
A voir également:
- Empêcher un doublon dans une base de données
- Fuite données maif - Guide
- Base de registre - Guide
- Supprimer les données de navigation - Guide
- Doublon photo - Guide
- La zone de données passée à un appel système est insuffisante - Windows 11
3 réponses
Bonjour 44maKa,
Fait de tête .. à tester !
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:
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
La msgbox s'affiche très bien parcontre, les données s'enregistre quand même. J'ai essayé de trouver un moyen pour que la deuxième partie de mon code qui tranpose les données ne s'opère pas si il y un doublon mais je n'y suis pas arrivée.