Empêcher un doublon dans une base de données
44maKA
-
Heliotte Messages postés 1491 Date d'inscription Statut Membre Dernière intervention -
Heliotte Messages postés 1491 Date d'inscription Statut Membre Dernière intervention -
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.