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 :

Userform multi-critères vba


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2019
    Messages : 6
    Par défaut Userform multi-critères vba
    Hello tout le monde,

    je vous écris car je rencontre quelques difficultés dans l'élaboration de mon userform. J'ai réussi à créer mon formulaire, il comporte une TextBox dans laquelle je peux rentrer mes mots-clés séparés par un espace; ma ListBox est quant à elle composée de mes colonnes avec les infos dont j'ai besoin (6colonnes).

    Ma question est: comment faire lorsque je double-clique sur une ligne de ma ListBox pour que cela me renvoie vers la ligne correspondante mais dans mon tableau source? Quel code puis-je utiliser ?

    J'espère que j'ai été assez précise, merci beaucoup d'avance et bonne soirée.

    Fanny

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Awaleeeee Voir le message

    Bonjour,

    La colonne de référence de votre ListBox est celle que vous définissez dans la propriété BoundColumn. Il vous faut donc faire une boucle sur la colonne correspondante de votre tableau source et comparer les contenus. Vous pourriez également charger le numéro de ligne dans votre ListBox pour avoir une lecture directe.

  3. #3
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2019
    Messages : 6
    Par défaut
    Alors j’ai:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub ListBox_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
     
    Dim b
    b=Me.ListBox1.ListIndex + 6 
    (6 étant mon nombre de colonne dans ma listbox)
    ActiveSheet.Rows(b).Select
    Unload Userform1
     
    End Sub
    Cela marche seulement partiellement car lorsque je ne fais pas de recherche dans ma textbox et que je défile juste ma ListBox cela fonctionne : je peux double cliquer et ça me renvoie à la ligne correspondante dans mon tableau source. En revanche, lorsque je fais une recherche dans ma TextBox que je double clique sur la ligne qui s’affiche dans la ListBox cela me renvoie sur une ligne au hasard du tableau source et non la bonne.

    Savez vous comment je peux régler ce problème ? Merci d’avance

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Awaleeeee Voir le message
    Regardez cet exemple : https://www.developpez.net/forums/d1...urs-variables/

  5. #5
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2019
    Messages : 6
    Par défaut
    Citation Envoyé par Eric KERGRESSE Voir le message
    J’ai plus ou moins la même chose j’ai juste une TextBox en + dans laquelle je peux appliquer des critères en tapant des mots clés ( j’ai environ 3000 lignes dans mon tableau) mais je n’arrive pas à sélectionner la ligne de mon tableau source en cliquant sur la ligne que j’ai choisi dans ma listBox

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Awaleeeee Voir le message
    Mettez votre fichier zipé en ligne.

  7. #7
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2019
    Messages : 6
    Par défaut
    Citation Envoyé par Eric KERGRESSE Voir le message
    Mettez votre fichier zipé en ligne.
    le fichier est confidentiel dans sa totalité et ce serait compliqué d'en faire un factice, je vous mets des screens de mon code et de mon user form:

    Nom : Capture.PNG
Affichages : 138
Taille : 16,1 Ko
    Nom : code1.PNG
Affichages : 132
Taille : 44,7 Ko
    Nom : code2.PNG
Affichages : 134
Taille : 51,1 Ko
    Nom : code3.PNG
Affichages : 134
Taille : 27,8 Ko

    voilà, j'espère que ça suffira...

    Merci beaucoup

  8. #8
    Invité
    Invité(e)
    Par défaut
    [QUOTE=Awaleeeee;11589189]
    /QUOTE]

    Mettez votre code entre balises #

    Nb : Vos variables tableaux commencent à l'indice 0, or certains chargements commencent à 1. Pour la lisibilité du code, évitez les suites de : entre les commandes. Vous devriez vérifier le contenu de vos matrices avec des Debug.print.

  9. #9
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    L'image que tu affiches et le code que tu publies, ressemble furieusement à une code proposé par Jacques Boisgontier, pourquoi ne pose-tu pas la question directement à son auteur ?
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  10. #10
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    Dans le message #2, Eric (salutations) vous suggère de placer le numéro de ligne dans une colonne de votre ListBox.
    C'est la meilleure solution.

    En apportant les modifications ci-dessous à votre code (je n'ai pas tout réécris, juste les parties à modifier), cela devrait fonctionner :

    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
    Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    Dim Lig As Long
        Lig = Me.ListBox1.List(ListBox1.ListIndex, 6) 'retrouve le numéro de ligne en colonne 7 de la ListBox
     
        '...
     
    End Sub
     
    Private Sub UserForm_Initialize()
     
    '.......
     
    Me.ListBox1.ColumnCount = 7
    Me.ListBox1.ColumnWidths = "40;175;95;110;90;100;0"
     
    '....
     
    '--- valeurs initiales dans ListBox
    Dim Tbl(): ReDim Tbl(1 To UBound(BD), 1 To 7)
    For i = 1 To UBound(BD)
        c = 0
        For Each k In ColVisu
            c = c + 1
            Tbl(i, c) = BD(i, k)
        Next
        Tbl(i, c + 1) = i 'place le numéro de ligne en colonne 7
    Next i
     
    '....
     
    End Sub
    Les points de suspension dans mon code sont les parties de votre code que je n'ai pas recopié...

Discussions similaires

  1. Recherche multi-critères dans un userform
    Par DRH01 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 19/05/2010, 14h28
  2. filtre vba multi critères
    Par STANDBOY dans le forum VBA Access
    Réponses: 5
    Dernier message: 01/05/2010, 16h24
  3. Réponses: 3
    Dernier message: 15/01/2008, 14h59
  4. [VBA-E]Filtre multi-critères
    Par ippo_master dans le forum Macros et VBA Excel
    Réponses: 18
    Dernier message: 29/11/2007, 14h15
  5. [Access-VBA] Requête multi-critère/Formulaire en mode continu
    Par adriano057 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 02/08/2006, 10h07

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