Eviter les doublons Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
S
Starr
Membre habitué
Membre habitué
Messages : 124
Inscrit le : 17 avril 2014
Version d'Excel : 2007

Message par Starr » 17 mars 2018, 04:07

Bonjour,

quelqu’un peut me dire ce qui ne va pas dans mon code svp ?
il m'affiche tout le temps ce message même quand y a pas de doublons : Ce matricule existe déjà. Merci

Public Flag As Boolean
Private Sub Worksheet_Change(ByVal Target As Range)
If Flag Then Exit Sub
If Not Application.Intersect(Target, Columns("E")) Is Nothing Then
If Target.Count > 1 Then Exit Sub
If Application.CountIf(Range("E:E"), Target) > 1 Then
Flag = True
MsgBox ("Ce matricule existe déjà !")
Target.ClearContents
Flag = False
End If
End If
End Sub
Classeur1.xlsm
(33.77 Kio) Téléchargé 14 fois
Avatar du membre
dhany
Passionné d'Excel
Passionné d'Excel
Messages : 6'910
Appréciations reçues : 693
Inscrit le : 3 octobre 2017
Version d'Excel : 2007 FR

Message par dhany » 17 mars 2018, 04:45

Bonjour Starr,

Je te retourne ton fichier modifié :
Classeur1.xlsm
(30.74 Kio) Téléchargé 18 fois
À l'ouverture du fichier, la cellule active est E5.

Si tu saisis A ou B (qui sont déjà au-dessus) : message « Ce matricule existe déjà ! » ; et quand tu cliques sur le bouton OK, ça efface la valeur saisie : prêt pour la saisie d'un autre matricule.

Si tu saisis D (ou autre chose que A et B), le message précédent n'apparaît pas et D n'est pas effacé : il est accepté.

dhany
S
Starr
Membre habitué
Membre habitué
Messages : 124
Inscrit le : 17 avril 2014
Version d'Excel : 2007

Message par Starr » 17 mars 2018, 08:22

Bonjour dhany ,

heuuu ::), ya pas moyen de corriger le beug ?
pour moi dans ce état, ca ne fonctionne pas ....

si ya une autre solution, je suis prenant.

Merci,
Avatar du membre
dhany
Passionné d'Excel
Passionné d'Excel
Messages : 6'910
Appréciations reçues : 693
Inscrit le : 3 octobre 2017
Version d'Excel : 2007 FR

Message par dhany » 17 mars 2018, 14:09

J'comprends pas : si tu suis les indications d'mon précédent message, y'a pas l'bug dont tu parles ! alors :

1) quand tu as écrit : « pour moi dans cet état » : est-ce que « état » est ton formulaire (ou c'est juste un état):wink:

2) quand ça fonctionne pas : est-ce que c'est dans le code du formulaire ? erreur de compilation ou d'exécution ?
     quel est le message d'erreur ? quelle ligne du code est mise en jaune ? quelle manip fais-tu qui fait le bug ?

dhany
S
Starr
Membre habitué
Membre habitué
Messages : 124
Inscrit le : 17 avril 2014
Version d'Excel : 2007

Message par Starr » 17 mars 2018, 16:36

Bonjour dhany ,

En fait rien de spécial, J'ai trouvé bizarre que ça fonctionne chez toi et pas chez moi, non pas que tu n'ais rien fait sur le programme. Le pour moi dans ce état, ca ne fonctionne pas .... C'est une pensée que j'ai exprimé tout haut mais ça n'était pas pour juger ton travail, mais pour me dire à moi même du genre zut ça ne fonctionnera pas si je le laisse dans cet état. Dsle si je m'eternise la dessus mais je ne veux juger personne et dsl je ne me suis pas relu du au faite que j'avais dormi très peu. Je me parlais surtout à moi même pour avoir passé du temps sur programme et le fait qu'il ne veuille pas fonctionner.

Pour répondre à la question, il ny a aucune erreur qui apparaît. Le programme fonctionne très bien c'est juste qu'il m'affiche ce message à chaque validation sur la touche save entry malgré qu'il nyait pas de doublons. On a l'impression que le programme à été fait pour afficher ce message qu'il y ait des doublons ou pas.

Merci,
Avatar du membre
dhany
Passionné d'Excel
Passionné d'Excel
Messages : 6'910
Appréciations reçues : 693
Inscrit le : 3 octobre 2017
Version d'Excel : 2007 FR

Message par dhany » 17 mars 2018, 21:01

Bonsoir Starr,

Je veux d'abord te rassurer : mon point 1) n'était pas du tout une critique ; et je n'ai pas pensé que tu cherchais à juger mon travail ! c'est seulement que j'avais vu dans ton fichier le formulaire nommé UserForm3 ; et comme certains appellent parfois un formulaire un état, j'ai pensé que ton erreur se produisait peut être quand tu utilisais UserForm3;;)

Or c'est justement lié à UserForm3 : je viens de voir que ta touche SAVE ENTRY est le bouton bleu foncé  de ton formulaire UserForm3 ; et ce bouton est nommé : CommandButton38 ; voici le code VBA que tu as fait (tel que, sans aucun changement) :
Private Sub CommandButton38_Click()
   MsgBox "Save Entry": Exit Sub
0  Dim Ctrl As Control
   ' Initialisation du formulaire s'il n'a pas été chargé préalablement (Load) et affichage
   ' Insertion d'une nouvelle ligne (la ligne 2 descend en ligne 3)
1  Rows("2:2").Insert Shift:=x1Down, copyorigin:=x1FormatFromLeftOrAbove
   ' Effacement du contenu des TextBox
2  For Each Ctrl In Me.Controls
3     If TypeName(Ctrl) = "TextBox" Then Ctrl.Value = Empty
4  Next Ctrl
End Sub
et quand je clique sur ton bouton, je n'ai pas de message « Ce matricule existe déjà ! »:scritch:

(c'est bizarre, tes numéros 0 à 4 !)

À tout hasard, regarde cette option avancée :
Screen.jpg

NB : c'est très mauvais de faire de la programmation VBA si tu es trop fatigué !!! il vaut mieux que tu reportes au lendemain et que tu ailles te reposer ! c'est dit très sérieusement, car c'est comme en ski : les accidents arrivent surtout quand le skieur est fatigué !

(en VBA, les accidents sont bien sûr des erreurs de programmation ; ou pire : suppression accidentelle du fichier !)

dhany
S
Starr
Membre habitué
Membre habitué
Messages : 124
Inscrit le : 17 avril 2014
Version d'Excel : 2007

Message par Starr » 17 mars 2018, 23:36

Bonsoir dhany,

j'ai fait comme tu m'as dit et là, le message n'apparait plus mais les doublons sont toujours acceptés.
je pense que le code n'est pas bon il ne doit pas fonctionner (avec l'userform).

J'ai même essayé ce code dans validation des données, rien a faire ça ne marche pas : =NB.SI($A$2:$A$24;A4)=1 INTERDIRE LES DOUBLONS.
je sais que je ne suis pas doué mais là c'est une tuerie. rien ne fonctionne. :)

si tu as un dernier recours je suis prenant.

Lorsque je supprime l'userform et que je rentre les informations directement sur la feuille excel, la par contre ça fonctionne très bien même lorsque je ne décoche pas "décaler la sélection...."

Merci,
S
Starr
Membre habitué
Membre habitué
Messages : 124
Inscrit le : 17 avril 2014
Version d'Excel : 2007

Message par Starr » 18 mars 2018, 15:53

Bonjour,

Quelqu'un peut t'il m’aider à résoudre ce problème svp ?
je souhaite juste éviter les doublons en colonne E lorsque j’appuie sur "Save Entry"
Ça fait des jours que je sèche la dessus et toujours pas de solution en vue. c'est désespérant :( :(

Merci par avance de votre aide,

le premier code utilisé était :
Private Sub Worksheet_Change(ByVal Target As Range)
If Flag Then Exit Sub
    If Not Application.Intersect(Target, Columns("e")) Is Nothing Then
        If Target.Count > 1 Then Exit Sub
        If Application.CountIf(Range("f:g"), Target) > 1 Then
            Flag = True
                MsgBox ("Ce matricule existe déjà !")
                Target.ClearContents
            Flag = False
        End If
    End If
End Sub
et avec ce nouveau code ci-dessous, le problème est le même. le message du MsgBox "Ce matricule est déjà inscrit dans la liste" apparait a chaque validation.
Private Sub CommandButton38_Click()
Application.Sheets("VEHICULES").Activate
Dim DerLig As Long
    With Worksheets("VEHICULES")
        DerLig = .Range("E" & Rows.Count).End(xlUp).Row
        If Application.CountIf(.Range("E2:E" & DerLig), Me.TextBox1.Text) = 0 Then
            .Rows("2:2").Insert Shift:=x1Down, CopyOrigin:=x1FormatfromLeftOrAbove 'insère une ligne
    [C2] = TextBox18.Text
    [B2] = TextBox19.Text
    [E2] = TextBox20.Text
    [G2] = TextBox21.Text
    [L2] = TextBox23.Text
    [J2] = TextBox24.Text
    [K2] = TextBox25.Text
        Else
            MsgBox "Ce matricule est déjà inscrit dans la liste"
        End If
For Each Ctrl In Me.Controls
If TypeName(Ctrl) = "TextBox" Then Ctrl.Value = Empty
Next Ctrl
        End With
End Sub
Classeur1.xlsm
je souhaite juste éviter les doublons en colonne E lorsque j’appuie sur "Save Entry"
(31.81 Kio) Téléchargé 12 fois
Avatar du membre
dhany
Passionné d'Excel
Passionné d'Excel
Messages : 6'910
Appréciations reçues : 693
Inscrit le : 3 octobre 2017
Version d'Excel : 2007 FR

Message par dhany » 19 mars 2018, 03:38

Bonjour Starr,

C'est pas bien du tout, ta façon d'expliquer ton problème !!!  ::( :cry:

Dans tes messages précédents, tu parles du message « Ce matricule existe déjà ! », oui, mais à aucun moment tu expliques ce que tu fais pour arriver à c'problème gênant !  :nul:  tu as écrit aussi : « Le programme fonctionne très bien c'est juste qu'il m'affiche ce message à chaque validation sur la touche save entry » ; pour moi, touche = touche du clavier, et sur le clavier : y'a bien une touche Entrée, mais pas de touche save entry !  :nul:  je te fais ces critiques pour que tu comprennes que c'est très difficile de t'aider si tu as mal expliqué ton problème ! comme j'ai finalement réussi à comprendre, voici ce que tu aurais dû dire dès le départ (et j'aurais pu t'aider bien plus vite !) :

J'ai ouvert mon formulaire UserForm3 ; je saisis un matricule dans le champ Matricule (nommé "TextBox20") ; et c'est là que le message « Ce matricule existe déjà ! » apparaît ; ou aussi quand je clique sur le bouton « Save Entry » (nommé CommandButton38).

Eh oui, car en fait, la « touche save entry » n'est pas une touche mais un bouton du formulaire ! dis-toi bien que seul toi connais bien ton classeur, et quand tu le fournis sans aucune explication, c'est vraiment pas évident !!!  :mrgreen:

Bon, ne désespère plus car j'ai une super nouvelle pour toi !  :)  ayant compris la cause du problème, j'ai réussi à l'résoudre...
du moins je crois : à l'ouverture du fichier, fais d'abord Ctrl e, puis à toi d'faire tous les tests ! bonne chance !  :trfl:

J'ai fait aussi de nombreuses autres améliorations, dont j'te laisse la surprise !  ;;)  (j'suis même pas sûr que t'arriveras à toutes les voir, car y'en a de très subtiles ! si t'arrives à toutes les mettre dans ton vrai fichier, alors bravo !)
Classeur1.xlsm
(31.3 Kio) Téléchargé 11 fois

À te lire pour avoir ton avis.

dhany
S
Starr
Membre habitué
Membre habitué
Messages : 124
Inscrit le : 17 avril 2014
Version d'Excel : 2007

Message par Starr » 19 mars 2018, 09:23

Bonjour dhany ,

::D ::D ::D ::D ::D
je ne peux que retrouver mon état naturel de sourire.
c'est tout simplement formidable.

On a de la chance d'avoir des gens comme vous. Franchement très grand merci pour tous.
Je comprends à quel point ce n'est pas évident de nous faire comprendre mais aussi pour vous de nous comprendre.

Une chose est sur, j'ai fait un grand pas vers la VBA.......enfin j’espère :lole: .
C'est tout ce moment de difficulté qui donne un sens au bonheur lorsque ça marche.

Mille merci à vous tous,

Si ça peut aider d'autres, je mets le fichier en ligne.
Pool car missions.xlsm
(120.28 Kio) Téléchargé 19 fois
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message