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 :

Rafraichissement ComboBox (Dynamique) [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Responsable marketing opérationnel
    Inscrit en
    Juillet 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Responsable marketing opérationnel
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2012
    Messages : 7
    Par défaut Rafraichissement ComboBox (Dynamique)
    Bonjour à tous et toutes,

    J'espère que vous allez bien et je vous remercie déjà d'être sur ce post.

    J'ai commencé la création il y a quelques mois d'un programme dans le cadre de mon travail et pour faire gagner du temps à mon équipe.

    L'objectif ici du programme est de faciliter la prospection téléphonique grâce à une base excel modifiable sur un formulaire et traité sur VBA.

    Je suis plutôt novice dans le domaine du code VBA donc j'ai un peu de mal à voir les solutions rapidement mais j'essaye au fur et à mesure du temps de m'exercer.

    En tout cas, venons en au fait ( ). Je vous rappel simplement le contexte de mon problème :
    - Je filtre mes données par un filtre classique géré en USERFORM6
    - Dans mon formulaire de modification, ma ComboBox1 vient dans un fonctionnement normal reprendre uniquement les lignes visibles et me permet de charger les données dans mon formulaire.
    ==> Mon problème est que si je viens "annuler" ou "refaire" un filtrage de mes données, ma combobox1 ne rafraichit pas son contenu et me propose toujours l'ancienne liste.

    J'ai actuellement le code 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
    Private Sub UserForm_Initialize()
     
      ComboBox1.Clear
     
      Dim Societe As Variant
      Dim Plage As Range
     
      With ThisWorkbook.Worksheets("annuaire")
        Set Plage = .Range("A4:A" & .Range("A65536").End(xlUp).Row)
        Set Plage = Plage.SpecialCells(xlCellTypeVisible)
      End With
     
      For Each Societe In Plage
        ComboBox1.AddItem Societe
      Next Societe
     
    End Sub
    Qui ne rafraichit pas la combobox1.

    Pour ceux qui pourraient ou souhaiteraient me filer un petit coup de main ;p je vous invite pour plus de clareté à regarder le fichier excel fournit (je n'ai rien à cacher tout le monde peu le refaire et on est dans le partage je pense...) -- Voir PJ.

    En tout cas, pour ceux qui auront le courage de se lancer dans l'aventure... ou ceux qui auront des petits conseils autres, je vous remercie d'avance.

    A+ les développeurs ;p
    Fichiers attachés Fichiers attachés

  2. #2
    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,

    Le problème est que tu ne "lances" le "rafraichissement" de ta ComboBox que lors de l'initialisation de ton userform.

    Tu devrais :
    1- placer le code contenu dans ta Private Sub UserForm_Initialize(), dans une procédure séparée. Exemple :
    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 RafraichiCombo()
    Dim Societe As Variant
    Dim Plage As Range
     
    ComboBox1.Clear
    With ThisWorkbook.Worksheets("annuaire")
        Set Plage = .Range("A4:A" & .Range("A65536").End(xlUp).Row)
        Set Plage = Plage.SpecialCells(xlCellTypeVisible)
    End With
     
    For Each Societe In Plage
        ComboBox1.AddItem Societe
    Next Societe
    End Sub
    2- appeler cette procédure dans ton UserForm_Initialise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub UserForm_Initialize()
    RafraichiCombo
    End Sub
    3- et la rappeler, de la même manière, à chaque fois que tu "filtres"...

  3. #3
    Membre régulier
    Homme Profil pro
    Responsable marketing opérationnel
    Inscrit en
    Juillet 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Responsable marketing opérationnel
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2012
    Messages : 7
    Par défaut
    Bonjour Franck,

    Merci beaucoup pour ta réponse. J'ai essayé d'intégrer ce que tu m'as mis dans le UserForm_Initialize mais ca n'a pas fonctionné.

    Par contre, ton post (à moins que ta réponse ait été ça) m'a permis d'avoir une idée simple mais efficace de créer un bouton de réinitialisation du contenu de la combobox. Je click dessus et le contenu est mis à jour...

    C'est une solution simple (peut-être pas la plus fluide car je rajoute un bouton) mais elle fonctionne...

    Merci pour ta réponse qui m'a bien servie.

    Je ne valide pas encore le post, si jamais tu ou quelqu'un d'autre aurait un message à laisser.

    A++

  4. #4
    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 173
    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 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    C'est une solution simple (peut-être pas la plus fluide car je rajoute un bouton) mais elle fonctionne...
    Pas besoin de bouton, la réponse que Franck t'a donné te permet justement dans n'importe quelle procédure de la UserForm d'appeler la procédure RafraichiCombo
    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

  5. #5
    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 et merci à Philippe,

    En effet, tu peux, lorsque tu filtres simplement ta feuille ajouter cette ligne au code VBA apparemment contenu dans ton Userform6 :
    Je filtre mes données par un filtre classique géré en USERFORM6

    A la fon de ta macro de filtre, tu ajoutes juste :

    Par contre, dans ton UserForm_Initialize(), il ne doit y avoir que RafraichiCombo également, comme je te l'ai indiqué plus haut.

  6. #6
    Membre régulier
    Homme Profil pro
    Responsable marketing opérationnel
    Inscrit en
    Juillet 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Responsable marketing opérationnel
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2012
    Messages : 7
    Par défaut
    Bonjour Philippe et merci à tous les deux.

    En fait, je n'avais pas fais le lien avec le filtre XD
    Il me manquait cette partie et c'est bon ca à l'air de fonctionner

    Un grand merci à vous deux pour avoir incisté sur ce point et je vous souhaite une bonne fin d'après-midi.

    Bye

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

Discussions similaires

  1. Probleme de rafraichissement combobox
    Par dubidon dans le forum VB.NET
    Réponses: 3
    Dernier message: 24/05/2007, 11h39
  2. Réponses: 4
    Dernier message: 12/03/2007, 17h51
  3. [Excel] Gérer des combobox dynamiques
    Par VBall dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 11/09/2006, 14h23
  4. ComboBox dynamique à partir de fichier XML
    Par ikeaboy dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 28/07/2006, 09h54
  5. Rafraichissement liste dynamique
    Par Petitjean_85 dans le forum ASP
    Réponses: 5
    Dernier message: 14/06/2004, 10h21

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