IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Valeur dans une liste correspondant aux cases cochées [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 58
    Par défaut Valeur dans une liste correspondant aux cases cochées
    Bonjour à tous!
    Dans une optique d'amélioration de mon fichier Excel j'ai créé un nouveau bouton: "Verfication2"

    Quand je clique sur ce bouton, je souhaiterai qu'il s'affiche dans la liste (Cf: UserformVerificacion2) Les numéros de proyecto (colonne D) correspondant aux lignes dont la valeur liées aux "colonnes cochées" prennent des valeurs particulières ("no disponible", "no conseguido" par exemple) entre deux dates particulières.

    Pour plus de clarté j'ai mis les explications directement dans l'UserFormVerificacion2 ci-joint.

    Quelqu'un serait il capable de me fournir le code correspondant aux colonne H et P apres je pense que mon faible niveau en VBA me permettra d'adapter le code à toute la feuille.

    Merci d'avance pour votre aide Cordialement.

    Bruno
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Bonjour,

    Ci dessous une solution

    L'affichage s'effectue sur l’évènement Clic d'un bouton (Ajout dans la userform)

    L'idée est d'utiliser la propriété Tag des Checkbox pour nous informer sur la colonne et de la valeur à rechercher
    Ici la checkbox1 (Order Entry Form) a comme tag => H/No disponible
    La boucle sur les controls checkbox traite cette information et sort si cela ne correspond pas a la recherche

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    Private Sub CommandButton1_Click()
     
    Dim i As Long
    Dim Sh As Worksheet
    Dim Chk As MSForms.Control
    Dim str() As String
     
    Set Sh = ThisWorkbook.Worksheets("OEP CONTROL")
     
    'Vide la listBox
    ListBox1.Clear
     
    'Test si saisie des dates
    If TextBox1.Text = "" Or TextBox2.Text = "" Then Exit Sub
     
    'Boucle sur les lignes de données (de la ligne 11 à la dernière ligne utilisée)
    For i = 11 To Sh.Range("A" & Sh.Rows.Count).End(xlUp).Row
     
        'Test le bornage de date
     
        If Sh.Range("A" & i).Value >= CDate(TextBox1.Text) And Sh.Range("A" & i).Value <= CDate(TextBox2.Text) Then
     
            'Boucle sur les Checkboxs
            For Each Chk In Me.Controls
     
                If TypeOf Chk Is MSForms.CheckBox Then
                    If Chk.Value = True And Chk.Tag <> "" Then
                        str = Split(Chk.Tag, "/") 
                        'str(0)=>lettre de la colonne
                        'str(1)=>Valeur a rechercher 
                        If UCase(Sh.Range(str(0) & i).Value) <> UCase(str(1)) Then GoTo Suivant
                    End If
                End If
     
            Next
     
            'Ajoute la référence si ok
            ListBox1.AddItem Sh.Range("D" & i).Value
     
        End If
     
    Suivant:
     
    Next i
     
     
    End Sub
    Verification test.zip

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 58
    Par défaut
    Re bonjour,

    Merci pour ton aide, mais j'ai un petit souci.

    Quand j'essaye de l'adapter à mon cas, si je rentre deux dates, il me sort tous les "numéro de Proyecto" compris entre ces deux dates. (Donc ne différencie pas la valeur de la cellule colonne H.

    Je n'ai jamais utilisé l'option tag.

    Voila ce que j'ai fait:
    - Créer un comandbutton1
    - copier ta macro dans l'UserformVerification2
    Modifier le tag de la check box par "H/No Disponible"

    Voila j'essaye de bidouiller mais je ne vois pas d'ou viens le problème.

    Encore merci,

    Bruno

  4. #4
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    As tu essayé de lancer le fichier que j'ai joint dans mon précédent Post?

    Dans ce fichier, on affiche uniquement les référence colonne H correspondant au bornage de date


    NB : j'ai appliqué une correction sur le code. regardes aussi si cela ne vient pas de la.

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 58
    Par défaut
    Merci de ton aide, la fonction est bien réalisée si je coche "Order entry Form"

    En revanche 2 problemes s'offrent à moi:

    - Si je ne coche aucune cases, tous les "Nº de Proyecto" compris entre les deux dates s'affichent.
    - De même lorsque je coche une autre case que "Order entry Form", tous les "Nº de Proyecto" compris entre les deux dates s'affichent.

    Par ailleurs, a partir du fichier que tu m'as envoyer, te serai t-il possible de me coder cette fonction pour une deuxieme colonne (la P par exemple qui réalise la meme fonction mais avec "No Conseguido").

    Encore Merci !

    Cdt, Bruno

  6. #6
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    - Si je ne coche aucune cases, tous les "Nº de Proyecto" compris entre les deux dates s'affichent.
    ci dessous l'ajout d'une variable bol qui passe à true si au moins une checkbox active correspond à la recherche

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    Private Sub CommandButton1_Click()
     
    Dim i As Long
    Dim Sh As Worksheet
    Dim Chk As MSForms.Control
    Dim str() As String
    Dim Bol As Boolean
     
    Set Sh = ThisWorkbook.Worksheets("OEP CONTROL")
     
    'Vide la listBox
    ListBox1.Clear
     
    'Test si saisie des dates
    If TextBox1.Text = "" Or TextBox2.Text = "" Then Exit Sub
     
    'Boucle sur les lignes de données (de la ligne 11 à la dernière ligne utilisée)
    For i = 11 To Sh.Range("A" & Sh.Rows.Count).End(xlUp).Row
        Bol = False
        'Test le bornage de date
     
        If Sh.Range("A" & i).Value >= CDate(TextBox1.Text) And Sh.Range("A" & i).Value <= CDate(TextBox2.Text) Then
     
            'Boucle sur les Checkboxs
            For Each Chk In Me.Controls
     
                If TypeOf Chk Is MSForms.CheckBox Then
                    If Chk.Value = True And Chk.Tag <> "" Then
                        str = Split(Chk.Tag, "/")
                        If UCase(Sh.Range(str(0) & i).Value) <> UCase(str(1)) Then
                            GoTo Suivant
                        Else
                            Bol = True
                        End If
                    End If
                End If
     
            Next
     
            'Ajoute la référence si ok
            If Bol = True Then 
                 ListBox1.AddItem Sh.Range("D" & i).Value & " / " & Sh.Range("P" & i).Value
     
            end if
        End If
     
    Suivant:
     
    Next i
     
     
    End Sub
    - De même lorsque je coche une autre case que "Order entry Form", tous les "Nº de Proyecto" compris entre les deux dates s'affichent.
    Seules les checkbox "Order Entry Form" et "Crédito" on un Tag. Il te faut les renseigner.
    Ce problème se résout tout de même avec le code ci dessus

    Par ailleurs, a partir du fichier que tu m'as envoyer, te serai t-il possible de me coder cette fonction pour une deuxieme colonne (la P par exemple qui réalise la meme fonction mais avec "No Conseguido").
    Ajout de la colonne P dans la listebox1 à la suite de la colonne D
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ListBox1.AddItem Sh.Range("D" & i).Value & " / " & Sh.Range("P" & i).Value

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 22
    Dernier message: 13/09/2013, 15h20
  2. Réponses: 4
    Dernier message: 20/04/2006, 01h34
  3. VBA : ajouter une valeur dans une liste déroulante
    Par remi59 dans le forum Access
    Réponses: 4
    Dernier message: 22/12/2005, 11h01
  4. Réponses: 1
    Dernier message: 29/09/2005, 12h10
  5. Ajouter un valeur dans une liste modifiable
    Par ancylia dans le forum Access
    Réponses: 1
    Dernier message: 22/09/2005, 13h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo