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 :

liste déroulante ACtiveX récalcitrante : déplacement, réduction, impossible à définir ListRows


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Inscrit en
    Décembre 2006
    Messages
    897
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 897
    Par défaut liste déroulante ACtiveX récalcitrante : déplacement, réduction, impossible à définir ListRows
    Bonjour,

    J'ai un activeX Listbox sur ma feuille depuis des années.

    Cette dernière bouge de place ou se réduit dans certains cas. J'ai résolu le problème en la réaffectant toujours les paramètres lors d'une activation de la feuille.

    Maintenant, j'ai souhaité définir la taille de la liste déroulante au nombre d'éléments de la liste (env. 30 éléments)
    Même en définissant le nombre directement, seule la valeur de 16 (valeur par défaut suivant la doc MS) fonctionne.
    Erreur 438
    Propriété ou méthode non gérée par cet objet
    en ligne 43

    Quelle est la solution ?


    Je viens de constater en vérifiant qu'il s'agit d'un ActiveX ET qu'il m'est impossible d'ajouter des Listbox ou des checkbox sur la feuille. Par contre, les boutons ActiveX ne posent pas de problème.
    "FM20.DLL" est bien présent et coché.

    Suis en Win10 et XL2007 ou WIn7 32 et XL2010.

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    Private Sub Worksheet_Activate()
        '--- Parfois des problèmes de reconnaissance du CboListEns donc faut faire un test
        Dim s As Shape, Trouve As Boolean
        Dim TrouveCbo As Boolean
     
        '---
        TrouveCbo = False
        For Each s In ActiveSheet.Shapes
            If s.Name = "CboListEns" Then TrouveCbo = True: Exit For
        Next s
        If Not TrouveCbo Then
            'Création du comboBox
            Dim oCombo As OLEObject
     
            Set oCombo = Sheets("T2022-2023").OLEObjects.Add(ClassType:="Forms.ComboBox.1", Left:=200, Top:=0, Width:=120, Height:=20)
            With oCombo
                .Name = "CboListEns" '<-- nom du Combobox
                '.ListFillRange = "Feuil2!A1:A20" '<-- exemple de chargement des données
            End With
     
            '---
            Set oCombo = Nothing
        End If
     
        'De toutes façons, nouveau ou existant redéfinit les propriétés car elles changent seules !!!!
        With ActiveSheet.Shapes("CboListEns")
            .Visible = True
            .Width = 120
            .Height = 20
            .Top = 0
            .Left = 280
            ' Ne fonctionne pas
            'ActiveSheet.Shapes.Range(Array("Rounded Rectangle 1")).Select
            '.ShapeRange.TextFrame2.TextRange.Font.Size = 18
            'ActiveSheet.Shapes("CboListEns").Font.Size = 12
            'ActiveSheet.Shapes("CboListEns").Font = "Arial"
        End With
     
        'LISTRows = 16 par défaut sinon valeur de 1 à 255 dans l'aide MS
        Dim ssss As Long
        ssss = IIf(Worksheets("Data").Range("TabCategorie").ListObject.ListRows.Count + 2 > 15, 15, Worksheets("Data").Range("TabCategorie").ListObject.ListRows.Count + 2)
        'Worksheets("Data").Range("TabCategorie").Shapes("CboListEns").ListRows = 15 'IIf(Worksheets("Data").Range("TabCategorie").ListObject.ListRows.Count + 2 > 15, 15, Worksheets("Data").Range("TabCategorie").ListObject.ListRows.Count + 2)
        Worksheets("Data").Range("TabCategorie").Controls("CboListEns").ListRows = 15
     
    End Sub
    Merci de votre aide.

    ESVBA

  2. #2
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 241
    Par défaut
    Hello,
    Citation Envoyé par ESVBA Voir le message
    Bonjour,
    Je viens de constater en vérifiant qu'il s'agit d'un ActiveX ET qu'il m'est impossible d'ajouter des Listbox ou des checkbox sur la feuille. Par contre, les boutons ActiveX ne posent pas de problème.
    "FM20.DLL" est bien présent et coché.
    Dans Insérer/ActiveX/Autres contrôles as-tu Microsoft Forms 2.0 Listbox comme dans la capture d'écran ci-dessous ?
    Si non cliquer sur le bouton Enregistrer le contrôle personnalisé et sélectionner le fichier FM20.dll

    Nom : AxListBox.PNG
Affichages : 417
Taille : 26,1 Ko

    Ami calmant, J.P

  3. #3
    Membre émérite
    Inscrit en
    Décembre 2006
    Messages
    897
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 897
    Par défaut Bonjour Jurassic Pork
    Merci de te pencher sur mon problème.

    Comme expliqué, oui, j'ai Microsoft Forms 2.0 Combobox (oui, moi c'est pour "combobox")
    Nom : img1.png
Affichages : 364
Taille : 13,2 Ko

    j'ai aussi "fm20.dll" coché :
    Nom : img3.png
Affichages : 370
Taille : 14,5 Ko

    Dans la fenêtre "Autres contrôles", si je clique sur "Enregistrer le contrôle personnalisé...", vais dans "windows32" et saisi "fm20.dll", j'ai un message d'erreur :
    Echec de l'enregistrement du contrôle dans le registre.

    est-ce un problème de réenregistrement du contrôle ?

    Je cherche.

    ESVBA

  4. #4
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 241
    Par défaut
    Citation Envoyé par ESVBA Voir le message
    Merci de te pencher sur mon problème.
    Dans la fenêtre "Autres contrôles", si je clique sur "Enregistrer le contrôle personnalisé...", vais dans "windows32" et saisi "fm20.dll", j'ai un message d'erreur :
    Echec de l'enregistrement du contrôle dans le registre.
    le fm20.dll qui est dans system32 c'est celui du 64 bits . Il faut choisir le fm20.dll du syswow64 pour du 32 bits.

  5. #5
    Membre émérite
    Inscrit en
    Décembre 2006
    Messages
    897
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 897
    Par défaut
    Ce ne sont pas des Win10-64 bits mais 32.
    Je n'ai pas le "syswow64".

    J'ai trouvé des questions pour ce genre de problème mais pas de réponse valable. Comme mauvaise MAJ avec extension à supprimer.

    Mon code ne sait plus créer de "combobox" si je supprime celle sur la feuille.
    J'ai donc mon problème de validité/inscription de la DLL à régler en premier.

    ESVBA

  6. #6
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 241
    Par défaut
    Citation Envoyé par ESVBA Voir le message
    Ce ne sont pas des Win10-64 bits mais 32.
    Je n'ai pas le "syswow64".
    effectivement il n'y a pas de syswow64 dans un windows 32 bits.
    Ton problème ressemble à celui-ci . Dans ce cas comme indiqué dans le lien il suffit de supprimer le fichier MSForms.exd qui se trouve dans ton répertoire temporaire.

    Ami calmant, J.P

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

Discussions similaires

  1. Bug affichage liste déroulante ActiveX
    Par francoiscurtet dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 24/06/2019, 10h16
  2. [XL-2010] Liste déroulante activex avec suppression de choix
    Par alx123 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 11/06/2015, 16h14
  3. Réponses: 5
    Dernier message: 15/12/2014, 14h28
  4. Réponses: 10
    Dernier message: 23/04/2014, 13h21
  5. Liste déroulante ActiveX remplissage
    Par Maxnihilist dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 14/09/2013, 18h01

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