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 :

Afficher les données rechercher via userform


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 23
    Points : 11
    Points
    11
    Par défaut Afficher les données rechercher via userform
    Bonjour à tous,
    Je suis débutante en vba et j'avoue avoir du mal avec la syntaxe.
    En fait, je créer un outil permettant de rechercher un ou plusieurs salariés par critères. Jai donc crée plusieurs userform pour permettre à l'utilisateur de sélectionnez les critères de sa recherche et ensuite d'afficher les salariés de la feuille excel correspondant aux critères.
    Jusque là jai réussi à faire fonctionner mes userform entre eux mais maintenant je n'arrive pas à faire afficher les salariés remplissant les critères.

    Mes userform sont différents les uns des autres, certain avec des boutons d'option, d'autre avec des case à cocher et d'autre avec des menu déroulant.

    Je suis peut être pas assez claire ... Si vous avez des question pour plus de précisions n'hésitez pas.

    Merci d'avance pour votre aide

  2. #2
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Bonjour
    Une question de fonds: Pourquoi plusieurs userforms pour fixer les critères de filtrage?

  3. #3
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 23
    Points : 11
    Points
    11
    Par défaut En effet
    Bonne réflexion ... En fait dans mon premier userform je demande l'utilisateur s'il veut rechercher un salarié, si oui un autre userform apparaît pour demander par quel critères, et j'aimerais permettre l'utilisateur de choisir ses propres critères de recherche et indiquer lesquels . en résultat j'aimerais que par exemple apparaisse sur ma feuille excel tous les salariés habitant la ville de bordeaux ...

    pensez vous que je puisse effectuer cela en un seul userform ?

    Et est-ce possible d'écrire des requêtes SQL ce qui me faciliterais la tâche.

    Merci encore de votre aide

  4. #4
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Un seul userform est largement suffisant pour pouvoir fixer les critères de recherche.
    Après, un simple filtre automatique sur ta feuille te sortira le résultat de la recherche en fonction des critères choisis dans ton usf.

  5. #5
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 23
    Points : 11
    Points
    11
    Par défaut ok
    Donc je devrais faire un userform avec plusieurs menu déroulant ce qui plus logique en effet .

    Par contre jusque là je n'ai jamais fais de filtrage ...
    pourriez vous m'aider ?

    Merci beaucoup de votre aide ça me fait gagner beaucoup de temps

  6. #6
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Exemple
    Feuille BD: avec en colonne A: id, en colonne B, Type et en colonne C: Ville
    Feuille Resultat: feuille dans laquelle les données répondants aux critères sont rapatriées

    Userform avec ComboBox1 reprenant tous les types et ComboBox2 toutes les villes

    En fonction des choix faits dans les 2 combobox, les données répondant aux critères seront copiés vers la feuille Resultat (Si aucun item n'est choisi sur l'une des combobox, il n'est pas pris en compte)

    Le code relatif au bouton de validation de la recherche est le suivant:
    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
    Private Sub CommandButton1_Click()
    Dim LastLig As Long
     
    Application.ScreenUpdating = False
    'On efface les données de la feuille résultat
    Worksheets("Resultat").UsedRange.ClearContents
    With Worksheets("BD")
        'On supprime l'éventuel filtre automatique
        .AutoFilterMode = False
        'Ligne de la dernière cellule remplie de la colonne A
        LastLig = .Cells(.Rows.Count, "A").End(xlUp).Row
        With .Range("A1:C" & LastLig)
            'Si un item est choisi dans ComboBox1 alors on filtre la colonne B sur cet item
            If Me.ComboBox1.ListIndex > -1 Then .AutoFilter Field:=2, Criteria1:=Me.ComboBox1.Value
            'Si un item est choisi dans ComboBox2 alors on filtre la colonne C sur cet item
            If Me.ComboBox2.ListIndex > -1 Then .AutoFilter Field:=3, Criteria1:=Me.ComboBox2.Value
            'On copie les ligne résultats du filtre vers A1 de feuille Resultat
            .SpecialCells(xlCellTypeVisible).Copy Worksheets("Resultat").Range("A1")
        End With
        'On supprime notre filtre automatique
        .AutoFilterMode = False
    End With
    'On décharge l'usf
    Unload Me
    End Sub

  7. #7
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 23
    Points : 11
    Points
    11
    Par défaut
    Oups, ça ne marche pas. J'ai certainement fais une erreur bête ou alors oublié quelque chose. Et un autre problème est apparu, mon premier userform ma demande si je veux rechercher si oui le 2eme userform apparaît et lorsque je séectionne les critères, non seulement je n'ai pas le résultat et en plus mon premier userform réapparaît. Le Code pour le filtrage :

    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
    Private Sub Bouton_Valider_Click()
    Dim LastLig As Long
     
    Application.ScreenUpdating = False
     
    Worksheets("Résultat").UsedRange.ClearContents
    With Worksheets("Candidates")
     
      .AutoFilterMode = False
     
        LastLig = .Cells(.Rows.Count, "A").End(xlUp).Row
        With .Range("A1:H" & LastLig)
     
            If Me.ComboBox1.ListIndex > -1 Then .AutoFilter Field:=2, Criteria1:=Me.ComboBox1.Value
     
            If Me.ComboBox2.ListIndex > -1 Then .AutoFilter Field:=3, Criteria1:=Me.ComboBox2.Value
     
            If Me.ComboBox3.ListIndex > -1 Then .AutoFilter Field:=4, Criteria1:=Me.ComboBox3.Value
     
            If Me.ComboBox4.ListIndex > -1 Then .AutoFilter Field:=5, Criteria1:=Me.ComboBox4.Value
     
            If Me.ComboBox5.ListIndex > -1 Then .AutoFilter Field:=6, Criteria1:=Me.ComboBox5.Value
     
            If Me.ComboBox6.ListIndex > -1 Then .AutoFilter Field:=7, Criteria1:=Me.ComboBox6.Value
     
            If Me.ComboBox7.ListIndex > -1 Then .AutoFilter Field:=8, Criteria1:=Me.ComboBox7.Value
     
       .SpecialCells(xlCellTypeVisible).Copy Worksheets("Résultat").Range("A1")
     
        End With
     
        .AutoFilterMode = False
    End With
    Unload Me
     
    End Sub
    Ps: si sa t'embete pas je peux t'envoyer mon projet en mp ?

  8. #8
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Tu peux joindre sur le forum un extrait de ton fichier (sans données confidentielles). C'est la règle du forum

  9. #9
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 23
    Points : 11
    Points
    11
    Par défaut
    BD intervenantes.zip

    J'ai résolu le probleme du deuxième userform mais reste a faire marcher le filtrage automatique.

    Merci de ton aide

  10. #10
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    ComboBox1 comporte les noms, c'est ça? les noms sont en colonne A, c'est ça?
    Pourquoi tu filtre sur la colonne B (colonne des prénoms)?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Me.ComboBox1.ListIndex > -1 Then .AutoFilter Field:=1, Criteria1:=Me.ComboBox1.Value
    Field désigne la colonne à filtrer


    [Edit]
    Tu peux utiliser une boucle pour parcourir tes combobox
    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
    Private Sub Bouton_Valider_Click()
    Dim LastLig As Long
    Dim i As Byte
     
    Application.ScreenUpdating = False
    Worksheets("Résultat").UsedRange.ClearContents
    With Worksheets("Candidates")
        .AutoFilterMode = False
        LastLig = .Cells(.Rows.Count, "A").End(xlUp).Row
        With .Range("A1:H" & LastLig)
            For i = 1 To 7
                If Me.Controls("ComboBox" & i).ListIndex > -1 Then .AutoFilter Field:=i, Criteria1:=Me.Controls("ComboBox" & i).Value
            Next i
            .SpecialCells(xlCellTypeVisible).Copy Worksheets("Résultat").Range("A1:H41")
        End With
        .AutoFilterMode = False
    End With
    Unload Me
    End Sub

  11. #11
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 23
    Points : 11
    Points
    11
    Par défaut
    Ca marche !!!!!! C'est sur c'est bête de filtrer la colonne B alors que c'est dans la colonne A .

    Merci beaucoup de ton aide !
    A bientot

  12. #12
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Remplace par ceci la ligne 10
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    With .Range("A1:H" & LastLig)

  13. #13
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 23
    Points : 11
    Points
    11
    Par défaut
    Ah oui en effet ça simplifie l'écriture !
    Merci ça fonctionne bien.

    Par contre, tu sais s'il est possible d'éxécuter ce programme sans ouvrir excel en .exe ?

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

Discussions similaires

  1. Excel VBA Rechercher et Afficher les données
    Par Ricoeva84 dans le forum Macros et VBA Excel
    Réponses: 18
    Dernier message: 25/07/2012, 19h35
  2. Réponses: 2
    Dernier message: 25/09/2010, 09h38
  3. Réponses: 2
    Dernier message: 02/07/2010, 19h16
  4. Réponses: 6
    Dernier message: 06/04/2006, 21h52
  5. [MySQL] Une liste déroulante affichant les données d'une requête SHOW par ordre alphabétique
    Par jack_1981 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 22/12/2005, 16h53

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