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 :

Masquer / Afficher des Combobox


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Octobre 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Octobre 2018
    Messages : 6
    Par défaut Masquer / Afficher des Combobox
    Bonjour à tous,
    Pour des raisons de confidentialité, je ne peux pas partager le fichier sur lequel je travaille. Je vais essayer d'être clair :
    J'ai une structure complexe hiérarchisée sur 3 niveaux du type 1 ; 1.1 ; 1.1.1 (10 chapitre au 1er niveau, 70 chapitres au 2ème niveau et 240 au 3ème niveau).
    Pour chaque nouvel item que je souhaite enregistrer dans ma BDD, il me faut l'affecter à un chapitre du 3ème niveau. Je pourrais mettre une liste déroulante de 240 lignes mais ça ne me semble pas très ergonomique.
    J'imagine donc de le faire en 3 fois : sélection du Chapitre 1 dans la liste du niveau 1, puis du chapitre 2 dans la liste des niveaux 2 qui dépendent du chapitre 1 et enfin du chapitre 3 dans la liste des niveaux 3 qui dépendent du chapitre 2 sélectionné.
    Donc pour chaque item, pour chaque nouvelle ligne de mon tableur, les 3 premières cellules doivent servir à identifier les 3 niveaux choisis.
    J'ai commencé à vouloir utiliser la validation de donnée mais pas ergonomique : au final, je ne souhaite conserver que le n° de chaque chapitre alors que dans l'affichage de la liste déroulante, il me faut le libellé des chapitres (du type 1-Blanc ; 2-Bleu, ..).
    Je me suis donc tourné vers des combobox à 2 colonnes (N° chapitre ; Libellé) qui n'affichent que la première colonne.
    Ca m'oblige alors à avoir 3 combobox par ligne sur un tableur qui devrait avoir plus de 400 lignes et 40 colonnes.

    Mon problème : pour la lisibilité, je voudrais que les combobox soient de base masquées et qu'elles deviennent visibles quand je clique sur la cellule dans laquelle elles sont positionnées.
    J'ai nommé mes Combobox selon les cellules dans lesquelles elles sont positionnées (Combobox231 en A23) mais le code suivant me met une erreur membre de méthode sur Controls :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Not Application.Intersect(Range("a23:c24"), Range(Target.Address)) Is Nothing Then
        i = Target.Row
        j = Target.Column
        n = i * 10 + j
        Me.Controls("ComboBox" & n).Visible = True
    End If
    End Sub
    Une idée pour corriger ou changer complètement de méthode ?

  2. #2
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    993
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 993
    Par défaut
    Bonjour, la méthode Controls ne fonctionne pas directement avec les feuilles Excel, mais plutôt avec les UserForms.
    Essaie cette méthode:

    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
    18
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        Dim cb As OLEObject
        Dim cbName As String
     
         If Not Application.Intersect(Range("A23:C24"), Target) Is Nothing Then
            ' Construire le nom de la combobox en fonction de la cellule sélectionnée
            cbName = "ComboBox" & (Target.Row * 10 + Target.Column)
     
            ' Vérifier si la combobox existe
            On Error Resume Next
            Set cb = Me.OLEObjects(cbName)
            On Error GoTo 0
     
             If Not cb Is Nothing Then
                cb.Visible = True
            End If
        End If
    End Sub

  3. #3
    Membre du Club
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Octobre 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Octobre 2018
    Messages : 6
    Par défaut
    Nickel Franc, ça marche du feu de dieu.
    Bon, je devrais trouver tout seul comment remasquer le combobox après avoir fait le choix.
    Je reviens vers le forum si je suis encore coincé.
    Merci encore !

Discussions similaires

  1. Masquer-Afficher des colonnes sous conditions
    Par line78 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/06/2018, 17h45
  2. [XL-2016] Macro masquer afficher des colonnes si case à cocher active
    Par Martin Sofraco dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/12/2017, 08h56
  3. Réponses: 9
    Dernier message: 12/03/2014, 21h28
  4. [XL-2003] Masquer/Afficher des onglets
    Par Nikodemus dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 16/11/2012, 14h17
  5. [XL-2003] Macro masquer/afficher des lignes et colonnes
    Par Estimea dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 17/03/2011, 17h18

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