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 :

Ajouter et gérer un combobox par macro


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2004
    Messages : 237
    Par défaut Ajouter et gérer un combobox par macro
    Bonjour,

    J'ai une macro qui crée une feuille, ajoute un combobox dans cette feuille et le remplit avec la liste des onglets.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ActiveSheet.DropDowns.Add(138, 160, 150, 15).Select
    For Each feuille In Worksheets
          Selection.AddItem feuille.Name 
    Next feuille
    Selection.Name = "CbChoixFeuille"
    Selection.OnAction = "choixFeuille"
    Jusqu'ici pas de problème. J'aimerais que l'utilisateur puisse ouvrir l'onglet qui le concerne en le choisissant dans le combobox plutôt que de le sélectionner dans les onglets en bas de page.
    Et là je sèche complètement. Comment lire le contenu du combobox que j'ai créé par macro? Ma sub choixfeuille ne marche pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Sub choixFeuille()
     
        Sheets(ActiveSheet.Shapes("CbChoixFeuille").List(ActiveSheet.Shapes("CbChoixFeuille").listitem)).Select
     
    End Sub
    Quelqu'un a une idée?

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 652
    Par défaut
    Bonjour,

    Ce n'est une ComboBox qui a été créée mais un contrôle de formulaire Excel.DropDown.

    Essayez de remplacer le code de la Sub choixFeuille par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub choixFeuille()
    Dim DD As Excel.DropDown
    '---
    Set DD = ActiveSheet.Shapes(Application.Caller).OLEFormat.Object
    Sheets(DD.List(DD.Value)).Select
    End Sub

  3. #3
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    pourquoi utiliser un combobox quand une liste de validation située dans une cellule réalise la même chose ?

    créer une liste de validation dans la cellule A1 de Feuil2 : la liste contient le nom de chaque feuille du classeur

    Macro a placer dans un module standard
    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
    Sub ListeValidation()
    Dim Chaine As String
     
    For i = 1 To ThisWorkbook.Worksheets.Count
        Chaine = Chaine & Worksheets(i).Name & ","
    Next i
     
    Chaine = Mid(Chaine, 1, Len(Chaine) - 1)
     
    With Feuil2.Cells(1, 1).Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=Chaine
        .IgnoreBlank = True
        .InCellDropdown = True
    End With
     
    End Sub

    Evènement qui se déclenche quand on choisi une valeur dans la liste de validation : activation de la feuille sélectionnée

    Macro à placer directement dans le module de la feuille qui contient la liste de validation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Worksheet_Change(ByVal Target As Range)
     
    If Not Intersect(Target, Cells(1, 1)) Is Nothing Then
        If Cells(1, 1) <> "" Then Worksheets(Cells(1, 1).Value).Activate
    End If
     
    End Sub

    je te laisse adapter à ton cas

    Ps : écrire une macro par macro c'est possible, faire une recherche sur le forum pour trouver le tuto de manipulation du VBE

  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 174
    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 174
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Jusqu'ici pas de problème. J'aimerais que l'utilisateur puisse ouvrir l'onglet qui le concerne en le choisissant dans le combobox plutôt que de le sélectionner dans les onglets en bas de page.
    Un simple clic droit au niveau des flèches de navigation permet de sélectionner une feuille. Une petite explication aux utilisateurs suffira.
    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 éclairé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2004
    Messages : 237
    Par défaut
    Merci énormément pour vos réponses.
    Pour éviter de trop modifier mon code existant j'ai utilisé le code de PMO2017, ça fonctionne parfaitement.

    Joe.Levrai, merci aussi pour ta contribution. J'ai déjà écrit une macro qui écrit une macro mais dans mon souvenir il fallait autoriser l'accès au VBE ce que les gens de la sécurité n'aime pas beaucoup.

    Philippe Tulliez, effectivement, c'est plus simple comme tu dis mais certains utilisateurs ont besoin qu'on leur tienne la main et c'est pas demain que ça va changer. J'en ai même qui ne savent même pas que les onglet existent...

    Encore merci et bonne journée!

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2004
    Messages : 237
    Par défaut
    Petite remarque pour les administrateurs du site. Je ne reçois plus les notifications instantanées par e-mail. Pourtant je reçois toujours la newsletter...

  7. #7
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Concernant l'option "Accès approuvé au modèle objet" dont tu fais mention, et qui doit être activée quand on manipule le VBE par macro

    fait une recherche sur le forum ... de mémoire on a déjà traité le sujet et proposé une solution (un peu bancale il me semble) pour mettre en place l'option à la place de l'utilisateur

    EDIT : voilà le sujet en question http://www.developpez.net/forums/d15...asic-n-fiable/

    Excel 2010 : ok
    Excel 2003 : ok
    autre version : tester mais probablement qu'il faudra adapter les solutions 2003 ou 2010

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2004
    Messages : 237
    Par défaut
    Merci, je vais garder ça dans un coin, ça peut toujours servir.

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

Discussions similaires

  1. [XL-2010] Comment ajouter une référence à un XLA par macro ?
    Par Siefch1 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 25/03/2013, 15h38
  2. [XL-2003] Ajouter module dans plusieurs fichiers par macro ?
    Par jedineofr dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 07/07/2011, 11h30
  3. [HTML] Ajouter même ligne html par macro (plusieur fichiers HTML)
    Par naouah dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 25/02/2009, 21h49
  4. Par Macro, gérer fichier TXT
    Par malabarbe dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 12/07/2008, 22h52
  5. Réponses: 12
    Dernier message: 28/03/2007, 18h00

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