Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

[RESOLU] MSGBOX dans une boucle selon countif

  • Initiateur de la discussion Initiateur de la discussion leakim
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

leakim

XLDnaute Occasionnel
Bonjour,
Le titre "MSGBOX dans une boucle selon countif" dit comme çà ?

Je suis sur un projet dans lequel j'ai un userform qui renseigne des cellules selon une listbox en multichoix.
Ce que j'aimerai c'est que si le choix a déjà été fait dans la zone, alors une msgbox me dit "doublon" soit je laisse soit je passe à l'autre sélection.

Dans le code, je ne parviens pas à renseigner la seconde variante de countif que j'aimerai reprendre de la listbox
En d'autre termes, au fur et à mesure que les éléments de la listbox s’inscrivent dans les cellules, vérifier que la valeur à venir n'est pas en double.
Ci dessous le code que j'ai.

Code:
Private Sub CommandButton1_Click()
Dim I As Integer

    If CheckBox1 = True Then

        For I = 0 To ListBox1.ListCount - 1
            ActiveCell.Offset(I, 0) = ListBox1.List(I)
        Next I
    End If
    
        For I = 0 To ListBox1.ListCount - 1
            If ListBox1.Selected(I) = True Then ListBox2.AddItem ListBox1.List(I)
        Next I
        
        For I = 0 To ListBox2.ListCount - 1
            If ListBox2.Selected(I - counter) Then
                ListBox2.RemoveItem (I - counter)
                counter = counter + 1
            End If
        Next I
        
        For I = 0 To ListBox2.ListCount - 1
            ActiveCell.Offset(I, 0) = ListBox2.List(I)
                If Worksheets.Application.CountIf(Range("$C$9:$L$27"), ActiveCell) > 0 Then
                MsgBox "attention doublon"
                End If
        Next I

Unload UserForm1
'ActiveCell.Offset(0, 1).Select
End Sub

Merci d'avance à ceux qui me liront,

Cordialement,

Leakim
 

Pièces jointes

Dernière édition:
Re : MSGBOX dans une boucle selon countif

Bonsoir à tous
je n'ai pas ouvert ton fichier mais essaye ceci
Code:
Application.WorksheetFunction.CountIf(Range("$C$9:$L$27"), "=" & ActiveCell.Offset(I, 0))
 
Re : MSGBOX dans une boucle selon countif

Bonsoir forum,
Bonsoir jpb388,
J'ai repris ta proposition en vain... Ce qui me donne le message, même avec une valeur unique? Je cale dur sur ce problème, surtout que je dois faire le test avec des plages distinctes.
Merci de votre aide,

Leakim
 
Re : MSGBOX dans une boucle selon countif

re
chez moi ceci fonctionne
Code:
        For I = 0 To ListBox2.ListCount - 1
            On Error Resume Next
                 y = IsError(Range("$C$9:$L$27").Find(ListBox2.List(I), , , xlWhole).Address)
                If y <> "" Then MsgBox "attention doublon"
            On Error GoTo 0
                ActiveCell.Offset(I, 0) = ListBox2.List(I)
        Next I
 
Re : MSGBOX dans une boucle selon countif

Re,
Merci, cela fonctionne aussi chez moi. Reste
... surtout que je dois faire le test avec des plages distinctes.
.
En fait je dois tenir compte non pas de toute la plage c9:l27 mais seulement C9:C27;M9:M27; ... colonne à intervalle de dix. Je me disais que cela serait plus "simple" en nommant la plage. Sauf, que selon là où l'userform s'ouvre il faut que le test se fasse sur la bonne plage....???!!!
Merci de ton aide,
Merci aussi aux autres pour leurs propositions.

Cordialement,
Leakim
 
Re : MSGBOX dans une boucle selon countif

Re,
Pour prolonger la réflexion, je me demande si c'est une bonne piste avec
Code:
        col = ActiveCell.Column
        If col = 3 Or col = 13 Or col = 23 Or col = 33 Then
        set lieu = Range("lun_M1")
        End If
        
        For i = 0 To ListBox2.ListCount - 1
            On Error Resume Next
                 y = IsError(Range(lieu).Find(ListBox2.List(i), , , xlWhole).Address)
                If y <> "" Then MsgBox "attention doublon"
            On Error GoTo 0
                ActiveCell.Offset(i, 0) = ListBox2.List(i)
        Next i

En fait j'ai un bug sur le test ?

Merci de vos retours,

Leakim
 
Dernière édition:
Re : MSGBOX dans une boucle selon countif

si tu n'as pas nommé ta cellule qui doit représenter une plage de cellule c'est normal que cela ne fonctionne pas
peux tu répondre à la question du post #6
 
Re : MSGBOX dans une boucle selon countif

excuses-moi, le tableau est contigu. Les colonnes se suivent sans vides. La colonne matin n'est présente qu'un fois à gauche.
Pour tenter d'être plus lisible. Si je choisis de faire un groupe le lundi matin de semaine impaire ou se trouve la cellule C9, par exemple, je dois tester tout les lundis matins impaires dans les autres groupes.

En espérant répondre à ta question

Merci,
Leakim
 
Dernière édition:
Re : MSGBOX dans une boucle selon countif

Bonjour à tous
met ton fichier original avec des faux noms pour voir comment il se goupille et le nombre de groupe etc...
jusqu'à maintenant tu faisais une recherche sur une zone de plage et maintenant tu parles seulement de 1 seul jours avec une différence des pairs et impairs
laquelle est la bonne
 
Re : MSGBOX dans une boucle selon countif

Bonjour,
Excuses moi de n'être pas clair. J'essaye d'aider un ami sur son outil, alors j'avais pas toutes les infos. J'ai passé une bonne heure hier soir avec lui pour bien poser les choses.
Je joint un fichier plus complet. J'ai coloré les zones afin que cela soit plus explicite ( j'ai pas colorié tout le tableau non plus🙂).
L'idée est donc de vérifier si il y a un doublon dans la zone. Ce qui est à conjuguer avec une "géolocalisation" de la cellule active afin que le test ce fasse avec la bonne zone.

N'hésitez à me questionner au besoin.

Merci,

Leakim
 

Pièces jointes

Re : MSGBOX dans une boucle selon countif

Bonjour jpb388,
Je viens de regarder cela me semble vraiment super, MERCI 😀
Je vais adapter ton code à mon fichier final et je te redis !

Merci encore,
Leakim
 
Re : MSGBOX dans une boucle selon countif

J'avais remis le code dans le fichier et c'est nickel, vraiment merci.
J'ai une dernière question. Dans la msgbox on renvoie la référence où se trouve le doublon. Est-ce possible, avec la fonction première ligne, de renvoyer dans la msgbox les valeurs des cellules en lignes 6 et 7 si c'est le matin et en lignes 28 et 29 qui sont relatif à la colonne de la référence double. De sorte que l'on puisse savoir, dans le message d'info, le lieu de l'activité et avec qui, il y a un doublon.

Je regarde de mon coté, car je suis sûr que cela rendrais plus facile la lecture.

Cordialement,
Leakim
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
10
Affichages
281
Réponses
5
Affichages
232
Réponses
8
Affichages
233
Réponses
2
Affichages
124
Réponses
4
Affichages
177
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…