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 :

Problème avec propriété VISIBLE


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2013
    Messages : 4
    Par défaut Problème avec propriété VISIBLE
    Bonjour tout le monde,

    je viens solliciter votre aide car je suis bloqué depuis ce matin à cause de la propriété VISIBLE du code ci-dessous qui marchait bien sous office 2003 et qui ne marche pas sous office 2007. J'ai tout le temps un message d'erreur causé par cette partie de code: et 'lintitulé du message est : "propriété ou méthode non gérée par cet objet". voici le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Set xlwkb = ThisWorkbook
    Set xlwks = xlwkb.Sheets(2)
        xlwks.Activate
    Set obj = xlwks.OLEObjects.Add("Forms.ComboBox.1")
        obj.Name = "Cmbverif"
        Set Cmb = obj.Object
     
        With Cmb
            .Clear
            .AddItem "Choisissez"
            .AddItem "A"
            .AddItem "B"
            .Visible = False
        End With
    pourriez vous m'aider svp, merci d'avance

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 678
    Par défaut
    Salut,

    en principe, il n'est pas possible de passer un control de visible à invisible (et vice-versa ) lorsque celui-ci a le focus.

    Il te faut donc "activer" un autre control pour pouvoir cacher/afficher ta combobox.
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2013
    Messages : 4
    Par défaut
    Merci beaucoup pour cette réponse rapide.

    Pour l'instant je ne vois pas comment contourner ce problème car en fait je veux faire apparaite une combobox en fonction de la cellule sur laquelle je clique dans ma feuille. Par exemple si je clique sur une cellule de la colonne A je veux qu'apparaisse la comboboxA pour que je puisse remplir la cellule; si je clique sur une cellule de la colonne B, je veux qu'apparaisse la comboboxB et seulement la comboxB (tous les autres doivent rester cachées).
    est ce que tu aurait une idée?

  4. #4
    Membre expérimenté
    Homme Profil pro
    Pompier de service
    Inscrit en
    Février 2014
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Pompier de service

    Informations forums :
    Inscription : Février 2014
    Messages : 146
    Par défaut
    Salut !

    Même si je ne comprend pas à 100% pourquoi et comment , ça fonctionne chez moi en faisant Obj.Visible = False au lieu de Cmb.Visible = False

    Si cela peux t'aider...

  5. #5
    Membre émérite Avatar de keygen08
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations forums :
    Inscription : Octobre 2012
    Messages : 545
    Par défaut
    Bonjour, si cela vous interesse
    vous créer un objet obj.name "cmbverif"
    puis vous appeler par la suite Cmb, celui ci ne devrait t-il pas etre cmbverif.


    premiere partie affiche et charge un combobox en fonction de son emplacement dans la feuille
    Des animateurs si une cellule de la colonne D est selectionné
    Des dates si une cellule de la colonne E est selectionné
    la valeur par defaut de la combobox est la valeur de la cellule(si déjà rempli)
    la combobox n'est visible QUE si une cellule de la plage programmé est selectionné
    la combobox est de la taille de la cellule
    Je n'ai qu'une combobox pour toute la feuille, il n'y as que le chargement de celle ci qui change
    simplicité d'entretien du code, legerete du classeur.

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     
    On Error Resume Next
    valeur = Target.Value
    'charge un combobox
    If Target.Row > 4 And Target.Row < [b65000].End(xlUp).Row + 1 Then
        If Target.Column = 4 or Target.Column = 5 Then
            With ActiveSheet.ComboBox1
                .Clear
                .Left = Target.Left
                .Top = Target.Top
                .Width = Target.Width
                .Height = Target.Height
                .AddItem ""
            End With
    'avec les animateurs dispo
            If Target.Column = 4  Then
                For Each cell In FEquipe.Range("c3:c" & FEquipe.[c65000].End(xlUp).Row)
                ActiveSheet.ComboBox1.AddItem cell.Value & " " & cell.Value
                Next cell
            Else
                'avec les dates dispo
                For i = Feuil1.[k15] To Feuil1.[k16]
                ActiveSheet.ComboBox1.AddItem Format((i), "dd mmm")
                Next i
            End If
        ComboBox1.Value = valeur
        ComboBox1.Visible = True
        Else
        ComboBox1.Visible = False
        End If
    End If
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub ComboBox1_change()
        If ComboBox1.Value <> ActiveCell.Value Then
        Cells(ActiveCell.Row, ActiveCell.Column) = ActiveSheet.ComboBox1.Value
        End If
    ActiveSheet.ComboBox1.Visible = False
    End Sub

  6. #6
    Membre expérimenté
    Homme Profil pro
    Pompier de service
    Inscrit en
    Février 2014
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Pompier de service

    Informations forums :
    Inscription : Février 2014
    Messages : 146
    Par défaut
    Citation Envoyé par lucienpaye Voir le message
    Merci beaucoup pour cette réponse rapide.

    Pour l'instant je ne vois pas comment contourner ce problème car en fait je veux faire apparaite une combobox en fonction de la cellule sur laquelle je clique dans ma feuille. Par exemple si je clique sur une cellule de la colonne A je veux qu'apparaisse la comboboxA pour que je puisse remplir la cellule; si je clique sur une cellule de la colonne B, je veux qu'apparaisse la comboboxB et seulement la comboxB (tous les autres doivent rester cachées).
    est ce que tu aurait une idée?
    Je n'avais pas lu la finalité

    Ca ne serait pas plus simple de créer une seule combobox et, sur l'évènement "Worksheet_SelectionChange", vider ta CB, la déplacer sur la cellule sélectionnée et la remplir par ce que tu veux ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        With ActiveSheet.ComboBox1
            .Clear
            .Left = Target.Left
            .Top = Target.Top
            .AddItem "Choisissez"
            .AddItem "A"
            .AddItem "B"
            .Visible = False ' ou true !!!
        End With
    End Sub

Discussions similaires

  1. Valeur d'un champ TextBox avec propriété visible = false
    Par mohamed301084 dans le forum VB.NET
    Réponses: 4
    Dernier message: 26/04/2010, 16h02
  2. Problème avec propriété CSS 'display'
    Par MAfiO_o dans le forum Mise en page CSS
    Réponses: 21
    Dernier message: 20/04/2009, 16h46
  3. [VB.NET] ListView Problème avec propriété View à 'List'
    Par elkidos dans le forum Windows Forms
    Réponses: 2
    Dernier message: 25/08/2006, 17h10
  4. [VB6] probléme avec propriété ActiveX
    Par Lucas42 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 14/06/2006, 16h51
  5. [Delphi 6] Problème avec la propriété Text d'un composant
    Par bionoir dans le forum Composants VCL
    Réponses: 4
    Dernier message: 08/12/2005, 11h23

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