Eviter les doublons après saisie via userform

Bonjour à tous,

J'aurais plusieurs questions pour vous....

J'ai créé un useform de saisie de mes données et j'aimerais savoir s'il est possible d'éviter la saisie de doublon ( 3 conditions dans mon cas : dans mon cellule (A,1);cellule(B,1);cellule(C,1) = (A,x);cellule(B,x);cellule(C,x)). J'aimerais que dans ce cas un message apparaisse, m'indique l'existence d'un doublon et ferme l'userform de saisie.

J'ai également créé un userform de modification et j'ai la même demande, à savoir empêcher les doublons après modification d'une saisie.

Quelqu'un a-t-il une idée de la marche à suivre ???

Merci par avance et bonne journée

Bonjour

Comme d'habitude

Un fichier représentatif de ton fichier réel serait le bienvenu

Cela nous éviterait de refaire un fichier qui ne refléterait pas la réalité de ton fichier

A suivre

Voici une partie de mon fichier... il est trop gros pour passer en entier !

Merci de votre aide....

Bonjour

Juste pour la 1ère question

Ta macro modifiée

Private Sub BtOk_Click()
Dim LStock As Long, Maintenant As Date
Dim J As Long
Dim Lg As Long

  With Sheets("a")
    Lg = .Range("A" & Rows.Count).End(xlUp).Row
    For J = 4 To Lg
      If Me.TxtNom & Me.TxtEssai & Me.TxtEtape = .Range("A" & J) & .Range("B" & J) & CStr(.Range("C" & J)) Then
        MsgBox "Enregistrement existant"
        Unload Me
        Exit Sub
      End If
    Next J
  End With
'  
' Suite de ton code
'

Pour la 2ème question il serait utile que l'affichage de l'userform se fasse

A suivre

Merci Banzai64, le 1er point semble résolu ^_^ ! Merci

Pour l'userform de modif, je ne comprends ce qui se passe, j'ai recopié le code depuis mon fichier original, voici le lien, j'espère que ce sera bon cette fois !

Merci à nouveau !

J'ai réussi à répondre à la question 2 ! J'ai simplement adapter le code donné pour résoudre la question 1.... J'ai aussi ajouter une conditions pour que la saisie soit considérée comme doublon ou non. Facile grâce à Banzai64...

Nouvelle question : comment fusionner des cellules identiques pour 3 critères sur 4 et qui ne sont donc pas considéré comme des doublons.... Question plus explicite dans le fichier joint !

Mille fois merci de votre aide !

Bonjour

Si la version pour ajouter fonctionne alors dans le même style

Private Sub BtModifier_Click()
Dim Maintenant As Date

Dim J As Long
Dim Lg As Long
Dim Ws As Worksheet

  With Sheets("a")
    Lg = .Range("A" & Rows.Count).End(xlUp).Row
    For J = 4 To Lg
      If Me.TxtNomNew & Me.TxtEssaiNew & Me.TxtEtapeNew = .Range("A" & J) & .Range("B" & J) & CStr(.Range("C" & J)) Then
        MsgBox "Enregistrement existant"
        Unload Me
        Exit Sub
      End If
    Next J
  End With

FStock.[StockDispo].Rows(Ligne).Value = Stock
Maintenant = Now

If MsgBox("Êtes-vous sûr(e) de vouloir modifier cette entrée ?", _
                vbYesNo + vbCritical, "Atention !") = vbYes Then
'
' Suite de ton code
'

C'est ce que j'ai fait grâce à vous ! Maintenant c'est la question du post précédent qui m'inquiète... Je ne m'en sortirai jamais ...

Bonjour

Mon point de vue

Trop compliqué, mais pas impossible, à faire au vu de la gestion de ta base de donnée

Ensuite le jour ou tu voudras supprimer un enregistrement des cellules fusionnées, bonjour le programme

Désolé mais je passe la main

Salut le forum

Pour la fusion, tu as déjà posé la question.

Le lien de la ficelle : Doublons et fusion de cellule

Mytå

Mytå a raison ! Je clos !

Bonsoir le forum,

Je ré-ouvre ce post, avec cette question que Banzai64 a parfaitement résolu avec ce code :

    Private Sub BtModifier_Click()
    Dim Maintenant As Date

    Dim J As Long
    Dim Lg As Long
    Dim Ws As Worksheet

      With Sheets("a")
        Lg = .Range("A" & Rows.Count).End(xlUp).Row
        For J = 4 To Lg
          If Me.TxtNomNew & Me.TxtEssaiNew & Me.TxtEtapeNew = .Range("A" & J) & .Range("B" & J) & CStr(.Range("C" & J)) Then
            MsgBox "Enregistrement existant"
            Unload Me
            Exit Sub
          End If
        Next J
      End With

    FStock.[StockDispo].Rows(Ligne).Value = Stock
    Maintenant = Now

    If MsgBox("Êtes-vous sûr(e) de vouloir modifier cette entrée ?", _
                    vbYesNo + vbCritical, "Attention !") = vbYes Then
    '
    ' Suite de ton code
    '

Mais maintenant je me rends compte de la nécessité d'inclure la date à la liste des contrôles à réaliser afin de détecter des doublons. Mon problème est que j'utilise DTPicker pour renseigner la date... J'ai essayé d'ajouter .value ou .txt en désespoir de cause, mais rien n'y fait. Cette variable n'est pas prise en compte.

Qui peut (encore...) m'aider ??

Bonne soirée à tous

Bonsoir

Tu rajoutes juste la condition du DtPicker

If Me.TxtNomNew & Me.TxtEssaiNew & Me.TxtEtapeNew & Me.DTPicker1 = .Range("A" & J) & .Range("B" & J) & CStr(.Range("C" & J)) & .Range("D" & J) Then

Merci Banzai64 ! C'est ce que j'ai fait en première intention, mais ça ne marche pas... les doublons ne sont plus détectés !

Rechercher des sujets similaires à "eviter doublons saisie via userform"