Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/09/2011, 09h54   #1
Membre à l'essai
 
Femme Catherine ETESSE
Assistante logistique
Inscription : août 2011
Messages : 64
Détails du profil
Informations personnelles :
Nom : Femme Catherine ETESSE
Localisation : France, Manche (Basse Normandie)

Informations professionnelles :
Activité : Assistante logistique
Secteur : Industrie

Informations forums :
Inscription : août 2011
Messages : 64
Points : 20
Points : 20
Par défaut Liste déroulante combobox

Bonjour,

Je débute avec les userform et j'ai quelques soucis. J'ai consulté les tutoriels et je crois que je ne peux pas faire ce que je souhaite.

Donc j'ai une base de données d'offres de transports. Avec un tableau croisé dynamique je met à jour une liste de transporteurs, de destinations, de points de départ et pays.
J'ai nommé mes zones "transp", "dest", "depart" et "pays".

Dans un userform je souhaite pouvoir filtrer les offres en fonctions des critères sélectionnés : on peut choisir un filtre ou plusieurs. Je préfère passer par un userform pour que ça soit plus facile à utiliser.

Dans mon userform j'ai une combobox pour chaque critère. Dans le champ "row source" j'ai indiqué ma zone qui a un nb de valeurs variables (ex "transp").
Ensuite je dois écrire qqch dans "Private Sub ComboBox1_Change()" mais c'est là que je bloque car dans des exemples il faut déclarer toutes les variables mais dans mon cas ça n'est pas possible. Y a t-il une autre solution ?

Merci pour votre aide.
Catherine
catetesse est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2011, 10h08   #2
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Bonjour,

Citation:
mais c'est là que je bloque car dans des exemples il faut déclarer toutes les variables mais dans mon cas ça n'est pas possible. Y a t-il une autre solution ?
Pourquoi ?
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2011, 10h49   #3
Membre à l'essai
 
Femme Catherine ETESSE
Assistante logistique
Inscription : août 2011
Messages : 64
Détails du profil
Informations personnelles :
Nom : Femme Catherine ETESSE
Localisation : France, Manche (Basse Normandie)

Informations professionnelles :
Activité : Assistante logistique
Secteur : Industrie

Informations forums :
Inscription : août 2011
Messages : 64
Points : 20
Points : 20
En fait j'ai bien ma liste déroulante, j'avais dû faire une fausse manip.

Par contre je ne sais pas trop comment continuer : afficher les solutions possibles en fonction des solutions retenues.

J'ai mis un bouton valider, c'est là que je dois entrer la programmation et je n'arrive pas à trouver d'exemple précis.
catetesse est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2011, 11h03   #4
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Pour une liste à valider en colonne A :

Code :
1
2
3
4
5
6
7
8
Private Sub Valider_Click()
    If Me.ComboBox1.ListIndex > -1 Then
        With Sheets("Feuil1").Range("A1")
            .Range("A1").AutoFilter
            .Range("A1").AutoFilter 1, Me.ComboBox1.Value
        End With
    End If
End Sub
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2011, 11h10   #5
Membre à l'essai
 
Femme Catherine ETESSE
Assistante logistique
Inscription : août 2011
Messages : 64
Détails du profil
Informations personnelles :
Nom : Femme Catherine ETESSE
Localisation : France, Manche (Basse Normandie)

Informations professionnelles :
Activité : Assistante logistique
Secteur : Industrie

Informations forums :
Inscription : août 2011
Messages : 64
Points : 20
Points : 20
Pour afficher le résultat faut-il déclarer toutes les valeurs dans "Private Sub ComboBox1_Change()" etc ?
catetesse est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2011, 11h31   #6
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
1. A quoi te sert la macro évènementielle "Private Sub ComboBox1_Change()"
si tu te sers du bouton "Valider" ?
2. Si tu fais allusion aux cellules dans RowSource, non, heureusement, ce sont des données, pas des variables. Une variable est un nom que tu choisis pour lui affecter une valeur quelconque, par exemple :

Code :
1
2
3
Dim c as Range, Var as Integer
set c = Sheets("Feuil1").Range("F4")
Var = 2
etc.
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2011, 11h34   #7
Membre à l'essai
 
Femme Catherine ETESSE
Assistante logistique
Inscription : août 2011
Messages : 64
Détails du profil
Informations personnelles :
Nom : Femme Catherine ETESSE
Localisation : France, Manche (Basse Normandie)

Informations professionnelles :
Activité : Assistante logistique
Secteur : Industrie

Informations forums :
Inscription : août 2011
Messages : 64
Points : 20
Points : 20
Merci ça fonctionne bien.
Toutefois je souhaite pouvoir filtrer sur au maximum 5 critères.

J'en ai mis 2 à la suite mais le filtre ne se fait pas sur les 2 mais uniquement le dernier
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Private Sub cmdbValider_Click()
 
'filtre point départ
    If Me.ComboBox1.ListIndex > -3 Then
        With Sheets("Liste").Range("c2")
            .Range("c2").AutoFilter
            .Range("c2").AutoFilter 3, Me.ComboBox1.Value
        End With
    End If
 
'filtre destination
    If Me.ComboBox2.ListIndex > -4 Then
        With Sheets("Liste").Range("d2")
            .Range("d2").AutoFilter
            .Range("d2").AutoFilter 4, Me.ComboBox1.Value
        End With
    End If
 
End Sub
Y a t-il une fonction pour cumuler les filtres ?

Dans un fichier fait par un ancien collègue ""Private Sub ComboBox1_Change()" était complété. Mais je n'ai pas besoin de cela.
Merci
catetesse est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2011, 11h48   #8
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
La ligne suivante réinitialise le filtre de la commande précédente, il faut la supprimer :

Code :
.Range("d2").AutoFilter
Enfin, ListIndex ne peut pas être inférieur à -1 (qui indique qu'aucun choix n'a été fait au niveau de la combobox.
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2011, 13h45   #9
Membre à l'essai
 
Femme Catherine ETESSE
Assistante logistique
Inscription : août 2011
Messages : 64
Détails du profil
Informations personnelles :
Nom : Femme Catherine ETESSE
Localisation : France, Manche (Basse Normandie)

Informations professionnelles :
Activité : Assistante logistique
Secteur : Industrie

Informations forums :
Inscription : août 2011
Messages : 64
Points : 20
Points : 20
Merci ça fonctionne très bien
Il me reste à améliorer la présentation.
catetesse est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h46.


 
 
 
 
Partenaires

Hébergement Web