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 :

Source liste après filtre [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2017
    Messages : 12
    Par défaut Source liste après filtre
    Bonjour à tous,

    Je suis nouveau sur le forum et débutant en VBA et je suis confronté à un problème.

    J'ai l'habitude de me débrouiller pour coder avec de nombreuses recherche sur le web et notament sur developpez.net mais sur ce point je ne trouve pas de solution malgré quelques bouts de codes trouvés que je n'arrive pas à concrétiser sur mon sujet.

    Je m'explique : dans le cadre d'un stage, je suis chargé d'améliorer certains classeur, j'ai donc choisi les tableaux dynamique, très performant ainsi que les formulaires en VBA.

    J'ai donc une base de donnée regroupé dans un tableau, remplit par l'utilisateur grâce à un formulaire que j'ai codé. Ce tableau classe des factures ("N° de Facture") par hôtels par mois ainsi que d'autres informations inutiles dans mon problème.
    J'ai créer un UserForm "Modifier". L'utilisateur sélectionne avec combobox, l'hôtels, ainsi que le mois. La liste déroulante "N° de facture" s'active alors pour les faires afficher en fonction de ces deux critères. Là est mon problème.
    Lorsque l'utilisateur sélectionne un hôtels et un mois, j'applique un AutoFilter sur ma base de donnée qui fais donc masqué les factures qui ne répondent pas aux critères. La source de donnée de ma liste N° de facture "Choix_facture" est donc variable, et malgré mes tentatives, soit la source prend toutes les factures, soit elle ne se met pas à jours si l'utilisateurs sélectionnent un autre mois ou hôtels.

    En code j'avais éventuellement ca, des informations trouvées à droite, à gauche mais que je n'arrive pas à finaliser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub SourceFacture()
     
    Dim c As Range
    With Worksheets("Tableau général")
      For Each c In .Range("A34:A" & .Cells(.Rows.Count, 1).End(xlUp).Row)
        If Rows(c).Hidden = False Then
        Choix_facture.AddItem (c.Value)
        End If
      Next
    End With
     
    End Sub
    Et que j'appelle dans ma combobox Choix_facture_Change().
    J'imagine que les combobox hôtels et mois doivent rentrer en jeu : "Choix_hotels2" et "Choix_mois2"

    J'espère donc que vous pourriez m'apporté une solution et que j'ai été claire dans mes explications.
    Je vous remercie d'avance.

    Cordialement, Lucas 'Tizakx

  2. #2
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    Bonjour et bienvenue au forum,
    Supposons que tu as un bouton "recherche" sur lequel tu appuie après avoir renseigné l'hôtel et le mois et qui rempli la combobox. Le code du clique du bouton devra suivre la procédure suivante :
    1. Créer une nouvelle feuille et la nommer "selection", par exemple.
    2. Filtrer sur l'hôtel et le mois dans ta BDD (AutoFilter)
    3. Copier le résultat du filtre et le coller dans la feuille "selection" (méthode Copy)
    4. Alimenter la cbox avec la feuille "selection" -->
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      Dim derLig As Long
      derLig = Sheets("selection").Range("A" & Rows.Count).End(xlUp).Row
      Choix_facture.List()= Sheets("selection").Range("A1:A" & derLig).Value
    5. Supprimer la feuille "selection"

  3. #3
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2017
    Messages : 12
    Par défaut
    Merci de ta réponse.

    En revanche, il s'agit d'un formulaire modifier, dans lequel, après avoir sélectionné l'hôtel, le mois et la facture, les informations relative à celle-ci apparaissent dans le formulaire (voir image) pour que l'utilisateur puissent les modifier directement.
    Nom : Modifier.JPG
Affichages : 338
Taille : 53,2 Ko

    L'ajout de donnée dans la combobox doit se faire en même temps que l'AutoFilter.
    N'y a t-il pas un code pour dire "Prend les données dans la colonne A, à partir de la A33, sauf celle qui sont masqué" ?
    J'avais trouvé ce sujet sur le forum, mais je n'arrive pas l'adapté, j'ai essayer de chercher des informations sur la fonction UBound, mais je ne comprend pas tout : https://www.developpez.net/forums/d6...gnes-masquees/

    Ou encore ca : https://www.developpez.net/forums/d6...-d-autofiltre/

    Peut être arrivera-tu à l'adapté à mon sujet ?

  4. #4
    Membre très actif
    Homme Profil pro
    Analyste programmeur
    Inscrit en
    Mai 2014
    Messages
    393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Analyste programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 393
    Par défaut
    La fonction ubound permet de récupérer la limite supérieure d'un tableau.

    Ce que tu dois faire pour alimenter tes combobox, c'est parcourir tes cellules et les ajouter sauf si elles sont masquées (propriété .hidden de ta cellule).

  5. #5
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2017
    Messages : 12
    Par défaut
    Ca ne m'aide pas trop, comme j'ai dis, je suis débutant, j'ai appris à codé en VBA sur le tas depuis 3 semaine pour réalisé mon travaille à bien
    Je m'aide de plusieurs morceau de code pour comprendre comment c'est fait, comment ca fonctionne mais sur ce problème je sèche.

    Avec la fonction Hidden, j'ai posté un code dans mon premier post, mais il ne fonctionne pas, quesqu'y ne vas pas ?

    J'avais quelque chose comme ca qui me donnais quelques résultats plus ou moins bien:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub UserForm_Initialize()
     
    Dim c As Range
    With Worksheets("Tableau général")
      For Each c In .Range("A33:A" & .Cells(.Rows.Count, 2).End(xlUp).Row).SpecialCells(xlCellTypeVisible)
        Choix_facture.AddItem (c.Value)
      Next
    End With
     
    End Sub
    Sans la fonction hidden, mais gràce au type, mais comment l'adapté pour qu'il se mette à jour si je viens à changé de mois ou d'hôtels dans le formulaire après une première sélection ?

  6. #6
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    En fait ta question porte plus sur comment détecter le changement de valeur des cbox que sur la façon d'afficher les résultats dans la dernière cbox.
    Il faut utiliser l'évènement change de la cbox --> quand tu changeras la valeur de la cbox cela déclenchera cette méthode.

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

Discussions similaires

  1. [XL-2003] Row source de combobox après filtre.
    Par Usgpa dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 15/06/2010, 23h18
  2. Récupération liste de choix après filtre
    Par p0l1n dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 31/05/2010, 21h48
  3. Réponses: 1
    Dernier message: 01/07/2009, 11h44
  4. Réponses: 9
    Dernier message: 23/04/2008, 16h16
  5. Réponses: 1
    Dernier message: 09/03/2007, 07h52

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