Rechercher des valeurs identiques dans un colonne

freeycap Messages postés 87 Statut Membre -  
freeycap Messages postés 87 Statut Membre -
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.

8 réponses

  1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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
  2. freeycap Messages postés 87 Statut Membre
     
    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
    1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      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
  3. freeycap Messages postés 87 Statut Membre
     
    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
  4. freeycap Messages postés 87 Statut Membre
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. freeycap Messages postés 87 Statut Membre
     
    Vraiment plus ?
    0
  7. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
  8. freeycap Messages postés 87 Statut Membre
     
    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
  9. freeycap Messages postés 87 Statut Membre
     
    vraiment personne ????
    0