Rechercher des valeurs identiques dans un colonne

Fermé
freeycap Messages postés 87 Date d'inscription lundi 27 octobre 2014 Statut Membre Dernière intervention 3 septembre 2018 - 29 nov. 2016 à 05:04
freeycap Messages postés 87 Date d'inscription lundi 27 octobre 2014 Statut Membre Dernière intervention 3 septembre 2018 - 1 déc. 2016 à 21:57
Bonjour,

J'ai une feuille (Data1) sur laquelle sont listées les différents groupes de formation qui rentrent dans la boite ou je travaille :
- Sur ma colonne A, j'ai le numéro de mes groupes de formation (1, 2, 3, ...),
- Sur ma colonne B, le nom de mes groupes de formation (Groupe1, Groupe2, Groupe3, ...),
- Sur colonnes C à K d'autres infos moins importantes ici,
- Et sur ma colonne L, le statut du groupe de formation qui a 2 valeurs possibles : 'Complété' ou alors 'En Cours' (fini ou pas fini quoi ...)

La plupart du temps, il n'y a qu'un groupe de formation qui a le statut 'En Cours'.
Mais quelques fois, il m'arrive d'avoir 2 groupes en même temps (et ca va se faire de + en + en 2017... ca embauche à tours de bras...).. donc 2 statuts 'En Cours'...
Et il n'y en aura jamais plus que 2... (heureusement, soit dit en passant...)

J'ai aussi mon Userform2 qui me permet justement de créer dans mon dossier mes nouveaux groupes de formation.

Actuellement, lorsque j'ouvre mon Userform2, je vois les détails (le numéro, le nom et le statut) du dernier groupe... toujours avec le statut 'En Cours'. Je récupère ces détails sur ma feuille Data1 avec le code suivant :

'Valeur de la derniere cohorte en cours textbox2
'Nom de la derniere cohorte en cours textbox1
'Satut de la derniere cohorte en cours textbox3
With Worksheets("Data1")
TextBox1.Value = Range("A1").End(xlDown).Value
TextBox2.Value = Range("B1").End(xlDown).Value
TextBox3.Value = Range("L1").End(xlDown).Value
End With

Ca, ca marche super bien pour 1 seul groupe de formation 'En Cours'... parce que bien sur, c'est le dernier de ma liste... Donc je sélectionne par défaut la dernière ligne... ok ca c'est bon.. mais ce n'est pas optimalement ce que j'aimerai faire.

Ce que je veux faire : Rechercher, dans ma colonne L, du haut vers le bas, la ou les valeurs 'En Cours' : donc s'il y a un seul résultat trouvé, remplir mes Textbox1 2 & 3 (qui seront visible par défaut)... mais si après il y a un second résultat 'En Cours', rendre alors visible les textbox 5 6 & 7 (textbox.visible = true, originalement non visible) avec les infos correspondantes sur les colonnes A, B et L (le numéro, le nom et le statut) du second groupe de formation 'En Cours'.

Merci d'avance pour votre aide.

Y.
A voir également:

8 réponses

f894009 Messages postés 17206 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 22 novembre 2024 1 710
29 nov. 2016 à 08:27
Bonjour,

code a mettre dans VBA Userform2

Private Sub UserForm_Activate()
    With Worksheets("Data1")
        EnCours = "En Cours"
        Nb = Application.CountIf(.Columns(12), EnCours)
        If Nb = 0 Then
        ElseIf Nb <= 2 Then
            lig = 1: Of7 = 0
            For N = 1 To Nb
                lig = .Columns(12).Find(EnCours, .Cells(lig, 12), , xlWhole).Row
                Me.Controls("TextBox" & N + Of7).Visible = True
                Me.Controls("TextBox" & N + Of7) = .Range("A" & lig)
                Of7 = Of7 + 1
                Me.Controls("TextBox" & N + Of7).Visible = True
                Me.Controls("TextBox" & N + Of7) = .Range("B" & lig)
                Of7 = Of7 + 1
                Me.Controls("TextBox" & N + Of7).Visible = True
                Me.Controls("TextBox" & N + Of7) = .Range("L" & lig)
                Of7 = Of7 + 1
            Next N
        End If
    End With

End Sub
0
freeycap Messages postés 87 Date d'inscription lundi 27 octobre 2014 Statut Membre Dernière intervention 3 septembre 2018
29 nov. 2016 à 16:25
Bonjour,

Merci beaucoup, ça marche numéro 1... c'est parfait.

Par contre j'aurai quelques questions histoire de bien comprendre le code :
- Comment je dois comprendre cette partie là du code :
ElseIf Nb <= 2 Then -> ca c'est ok !!
lig = 1: Of7 = 0
For N = 1 To Nb
surtout ca : lig = 1: Of7 = 0
En fait, j'pige pas bien le Of7...

- Me.Controls : ca fait quoi ca exactement ?

Aussi, dans le cas ou j'ai 2 résultats qui apparaissent 'en Cours', pour le deuxieme resultat, je veux rendre visible un combobox2 qui me demandera si ce groupe de formation (donc le deuxième résultat de recherche en Cours) est complété ou pas. J'ai déjà un Combobox1 dans le cas ou j'ai une réponse 'En Cours'.

Merci d'avance,

Y.
0
f894009 Messages postés 17206 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 22 novembre 2024 1 710
29 nov. 2016 à 16:36
Re,
- Me.Controls : ca fait quoi ca exactement ?
 Me.Controls("TextBox" & N + Of7)

Ce code permet d'indexer un control ex ici,:
TextBox1 a 3 et avec N + l'offset quand N=1
TextBox5 a 7 et avec N + l'offset quand N=2

code pour Combobox et petie modif du IF N puisque vous n'avez pas besoin du =0

Private Sub UserForm_Activate()
    With Worksheets("Data1")
        EnCours = "En Cours"
        Nb = Application.CountIf(.Columns(12), EnCours)     'nombre de fois EnCours
        If Nb > 0 And Nb <= 2 Then
            lig = 1: Of7 = 0        'ligne de depart et offset pour 123 et 567
            For N = 1 To Nb
                lig = .Columns(12).Find(EnCours, .Cells(lig, 12), , xlWhole).Row        'recherche ligne de EnCours
                Me.Controls("TextBox" & N + Of7).Visible = True                         '
                Me.Controls("TextBox" & N + Of7) = .Range("A" & lig)
                Of7 = Of7 + 1
                Me.Controls("TextBox" & N + Of7).Visible = True
                Me.Controls("TextBox" & N + Of7) = .Range("B" & lig)
                Of7 = Of7 + 1
                Me.Controls("TextBox" & N + Of7).Visible = True
                Me.Controls("TextBox" & N + Of7) = .Range("L" & lig)
                Of7 = Of7 + 1
                Me.Controls("Combobox" & N).Visible = True
            Next N
        End If
    End With

End Sub
0
freeycap Messages postés 87 Date d'inscription lundi 27 octobre 2014 Statut Membre Dernière intervention 3 septembre 2018
29 nov. 2016 à 19:07
holala... Of7... offset.... oulala...
c'était hier lundi matin... sorry....
Merci pour les explications et pour le combobox.

Mais là, forcément, je m'aperçois que mon affaire n'est pas comme il faut... ça marche, mais c'est pas ça...

En fait, mes Combobox doivent permettre de changer le statut de mes groupes de formation de 'En Cours' à 'Complété'.
Si je choisis 'Oui', mon groupe est encore 'En cours', donc le statut ne change pas sur ma feuille Data1.
Si je choisis 'Non', ça change mon statut de 'En Cours à 'Complété' sur ma feuille Data1.

Aussi, que ce soit 'Oui' ou 'Non', dans le cas ou j'ai un seul groupe 'En Cours' ca me rend visible un Textbox dans lequel je rentre le nom de mon nouveau groupe...

Et en confirmant le TextBox, ça incrémente le numéro du groupe de formation sur mon userform (c'est à dire le Textbox du numéro du groupe de formation fait +1), le TextBox du nom du groupe change pour le nouveau nom, et le TextBox du statut revient à 'En Cours'.
Et ces 3 infos se rajoutent avec une nouvelle ligne dans ma feuille Data1.

Mais là, j'ai la possibilité d'avoir 2 groupes 'en Cours'... donc avec 2 Combobox Oui / Non...

Y aurait'il la possibilité d'avoir un seul Combobox, qui me pose la question : Le 1er Groupe 'En Cours' est-il toujours 'En Cours' : Oui / Non (et change le statut sur la feuille Data1 si nécessaire)
Et une fois répondu, que le Combobox me pose la même question, mais pour le second Groupe qui est toujours 'En Cours' + change le statut si nécessaire sur la feuille Data1 + msg d'erreur si je choisis une deuxième fois 'Oui' parce que je ne peux avoir que 2 formations 'En Cours en même temps + Ouvre mon Textbox pour entrer le nouveau groupe.

Et à la confirmation de mon TextBox, refait la boucle pour rechercher les groupes 'En Cours'... Et le numéro du nouveau groupe étant l'incrément de 1 du dernier des 2 numéros...

Ca fait beaucoup là, non ?
0
freeycap Messages postés 87 Date d'inscription lundi 27 octobre 2014 Statut Membre Dernière intervention 3 septembre 2018
29 nov. 2016 à 22:02
Pour aider, j'ai ça comme code sur mon CommandButton :

Private Sub CommandButton1_Click()

If TextBox4.Value = "" Then
MsgBox "Entrer le Nom de la nouvelle Cohorte."
Exit Sub

ElseIf ComboBox1.Value = "Non" Then

With Worksheets("Data1")
Range("L1").End(xlDown).Value = "Complétée"
End With

Me.TextBox1.Value = Me.TextBox1.Value + 1

'Pour copier le nom de la cohorte dans la page Data1
With Worksheets("Data1")
Nlig = .Range("B" & Rows.Count).End(xlUp).Row + 1
.Range("A" & Nlig).Value = TextBox1
.Range("B" & Nlig).Value = TextBox4
.Range("L" & Nlig).Value = "En Cours"
End With

Me.TextBox2.Value = Me.TextBox4.Value
Label5.Visible = False
ComboBox1.Visible = False
Label6.Visible = False
TextBox4.Visible = False
CommandButton1.Visible = False
CommandButton2.Visible = True


ElseIf ComboBox1.Value = "Oui" Then

Me.TextBox5.Value = Me.TextBox1.Value + 1

With Worksheets("Data1")
Nlig = .Range("L" & Rows.Count).End(xlUp).Row + 1
.Range("L" & Nlig).Value = "En Cours"
.Range("B" & Nlig).Value = TextBox4
.Range("A" & Nlig).Value = TextBox5
TextBox7.Value = Range("L1").End(xlDown).Value
End With

Me.TextBox6.Value = Me.TextBox4.Value
Label5.Visible = False
ComboBox1.Visible = False
Label6.Visible = False
TextBox4.Visible = False
CommandButton1.Visible = False
CommandButton2.Visible = True
Label7.Visible = True
TextBox5.Visible = True
TextBox6.Visible = True
Label8.Visible = True
TextBox7.Visible = True

End If

End Sub
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
freeycap Messages postés 87 Date d'inscription lundi 27 octobre 2014 Statut Membre Dernière intervention 3 septembre 2018
30 nov. 2016 à 14:23
Vraiment plus ?
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
30 nov. 2016 à 14:30
Bonjour

Transféré dans forum Prog-VBA
Mettre le classeur sans données confidentielles en pièce jointe sur « mon-partage.fr »
et faire un clic droit-coller le raccourci dans votre message

Dans l’attente



0
freeycap Messages postés 87 Date d'inscription lundi 27 octobre 2014 Statut Membre Dernière intervention 3 septembre 2018
30 nov. 2016 à 16:01
Salut Michel,

Voici le lien :
https://www.cjoint.com/c/FKEo6WElJ5G
Je pense que c'est toi qui m'a déjà aidé précédement.
En fait c'est toujours le même dossier, mais avec plus de questions encore..

Merci pour ton aide

Y.
0
freeycap Messages postés 87 Date d'inscription lundi 27 octobre 2014 Statut Membre Dernière intervention 3 septembre 2018
1 déc. 2016 à 21:57
vraiment personne ????
0