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 :

Trier avec macro et combobox [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 249
    Par défaut Trier avec macro et combobox
    Bonjour,

    J'ai un tableau de clients avec leur coordonnées et j'aimerais que l'on puisse avoir un bouton, qui quand on clique dessus nous ouvre une combobox, je crois que c'est comme ça que vous appelez ça, pour demander par quel département on veut trier les clients.

    Est-ce possible ?

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 206
    Par défaut
    Par comboBox, tu sous entends une liste avec tous les départements ou une fenêtre de saisie? Dans ce dernier cas, c'est une InputBox.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub TonBouton_Click()
        Dim intDpt as Integer
     
        intDpt = InputBox("Saisir le département")
     
        'Ici tu met le code pour effectuer le tri
        ...
     
    End Sub
    J’espère que c'est ce que tu recherche.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 249
    Par défaut
    merci tarnx. Merci pour Inputbox, je saurais comme ça. Peux tu me dire comment on fait pour créer le filtre en fonction de ce qu'on aura saisi dans l'Inputbox ?

    J'ai cherché dans d'autres discussions mais je n'ai pas trouvé.

    Par exemple, si je saisi "44", tous les clients du département 44 s'affiche et seulement ceux là.

    Il faudrait également que l'on mentionne dans le code que mon tri commence à la ligne 3 car en ligne 2, j'ai le titre des colonnes et en ligne 1 des boutons.

    Faut-il suivre ce modèle ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Filter(sourcesrray, match[, include[, compare]])
    Merci pour ton aide

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 206
    Par défaut
    On peux essayer de faire comme ça :

    Je considère que les départements se situent sur le colonne A.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub TonBouton_Click()
    
        Dim intDpt as Integer
     
        intDpt = InputBox("Saisir le département")
                 
               ' On compte les lignes du tableau
        Range("A3").Select
        Range(Selection, Selection.End(xlDown)).Select
        intDataRow = Selection.CurrentRegion.Rows.Count + 2
               ' On effectue le filtre
        Range("A2:C" & intDataRow ).AutoFilter Field:=1, Criteria1:= intDpt 
    
    End Sub
    A tester.

    Mais cette méthode me parait un peu redondante étant donné qu'elle crée un filtre automatique sous forme de liste déroulante.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 249
    Par défaut
    Merci mais comme tu le dis, ce n'est pas ce que je cherche à faire. J'ai quand-même testé mais c'est quand même très compliqué à l'utilisation

    J'aimerais que quand on a rentré notre département dans l'inputbox, on fait enter et on a la liste des clients, avec leur coordonnées correspondantes bien sûr.

  6. #6
    Expert éminent 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
    Par défaut
    Pour le filtre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub CommandButton1_Click()
    Dim Dpt As String
     
    Dpt = InputBox("Entrez n° département")
    With Sheets("Feuil3").Range("A1")  'Nom feuille à adapter
        .AutoFilter
        .AutoFilter field:=1, Criteria1:=Dpt
    End With
    End Sub

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 249
    Par défaut
    Merci, je viens de tester mais ça ne marche pas. Peux-tu me dire à quoi correspond A1 pour que j'essaie de comprendre pourquoi ça ne marche pas ?
    Merci

  8. #8
    Expert éminent 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
    Par défaut
    A1 est la cellule A1 (j'ai fais ça en devinant que la ligne 1 de la feuille Feuil3 est la lignes des titres, les données sont à partir de la ligne 2
    de plus les départements sont en colonne A.
    à toi d'adapter donc

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 249
    Par défaut
    j'ai pourtant modifié le nom de la feuille et remplacé A1 par E2 (c'est là où est le titre, "CP") mais ça ne marche pas

  10. #10
    Expert éminent 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
    Par défaut
    j'ai pourtant modifié le nom de la feuille et remplacé A1 par E2 (c'est là où est le titre, "CP") mais ça ne marche pas
    Comme si j'ai ton fichier sous la main.
    ça ne marche pas, ça ne vaut rien dire en terme d'explication.

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 249
    Par défaut
    le problème c'est que dans mon fichier il y a les coordonnées de mes clients et donc je ne peux pas vous le joindre par respect pour eux.

    Quand je clique sur le bouton, il me demande le département, mais quand je lui donne, je fais "enter ", il ne me trouve jamais de correspondance, alors qu'il y en a une, voir même plusieurs.

    Mon classeur à en ligne 1, des boutons, en ligne 2 ce sont les titres des colonnes, et j'ai des colonnes qui vont de A à M. Les Codes Postaux sont en colonne E.

    Je ne vois pas quoi vous dire de plus pour vous aider ...

    Merci en tout cas

  12. #12
    Expert éminent 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
    Par défaut
    Tu remplaces les clients et leurs coordonnées par des coordonnées fictifs et tu joints un extrait du fichier. peut être tu recevras des réponses exactes.

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 249
    Par défaut
    bonjour,

    j'ai enregistré le fichier au format 97-2003 car en 2007 je n'arrive pas à le télécharger.

    j'ai laissé que l'essentiel

    merci beaucoup

  14. #14
    Expert éminent 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
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub CommandButton1_Click()
    Dim Dpt As String
     
    Dpt = InputBox("Entrez n° département")
    With Sheets("Clients").Range("A2")
        .AutoFilter
        .AutoFilter field:=5, Criteria1:=Dpt
    End With
    End Sub

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 249
    Par défaut
    Merci beaucoup, ça marche.

    Par contre comme tu as pu le constater ce ne sont pas des départements mais des codes postaux que j'ai mis.

    Alors pour éviter d'avoir à créer une autre colonne avec simplement les 2 premiers chiffre du code postal pour avoir le département.

    Est-il possible de créer le même type de filtre mais qu'il ne prenne en compte que les 2 premiers chiffre ?

    Merci encore pour ton précédent code

  16. #16
    Expert éminent 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
    Par défaut
    Transforme ta colonne E en du texte en ajoutant une apostrophe avant lees n°
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub CommandButton2_Click()
    Dim i As Long
    With Sheets("Clients")
        For i = 3 To .Cells(Rows.Count, "E").End(xlUp).Row
            .Range("E" & i) = "'" & .Range("E" & i)
        Next i
    End With
    End Sub
    ton code précédent sera
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub CommandButton1_Click()
    Dim Dpt As String
     
    Dpt = InputBox("Entrez n° département") & "*"
    With Sheets("Clients")
        With .Range("A2")
            .AutoFilter
            .AutoFilter field:=5, Criteria1:=Dpt
        End With
    End With
    End Sub

  17. #17
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 249
    Par défaut
    je viens de tester ça marche mais pourquoi faut-il transformer mes codes postaux sous forme de texte ? Le problème c'est que apparement si je veux rajouter des lignes en bas de coordonnées et bien ces nouveaux codes postaux que je viendrais de saisir restent en chiffre et donc ne font pas parti de la sélection pour le filtre

  18. #18
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    je viens de tester ça marche mais pourquoi faut-il transformer mes codes postaux sous forme de texte ?
    Tout simplement parce que, en numérique, tous les codes postaux dont le n° de département est inférieur à 10 ne seront plus que sur quatre chiffres (2110 au lieu de 02110 par exemple) et donc votre question précédente :

    Est-il possible de créer le même type de filtre mais qu'il ne prenne en compte que les 2 premiers chiffres ?
    n'aura pas de solution.

  19. #19
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 249
    Par défaut
    merci beaucoup, j'ai compris. Je suis retourné lire le tutoriel sur les chiffres et avec ta réponse j'ai mieux compris.

    Merci à tous

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

Discussions similaires

  1. [VA-E] trier des données avec macro VBA
    Par M@XflY dans le forum Macros et VBA Excel
    Réponses: 25
    Dernier message: 13/01/2007, 13h24
  2. [c#]Nouveau probleme avec dataset et combobox
    Par misa dans le forum Windows Forms
    Réponses: 2
    Dernier message: 11/05/2006, 10h37
  3. [debutante][list] trier avec sort()
    Par norkius dans le forum Débuter
    Réponses: 10
    Dernier message: 24/10/2005, 18h13
  4. probleme de selection aleatoire sur excel avec macro vba
    Par guillaume sors dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 21/10/2005, 10h51
  5. [debutant][awt] Pb avec ItemStateChanged dans combobox
    Par cosmos.1097 dans le forum Composants
    Réponses: 2
    Dernier message: 30/06/2005, 18h38

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