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 initialisation sélections listbox multiselect au chargement du workbook : Erreur d'exécution 238,


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 2
    Par défaut Problème initialisation sélections listbox multiselect au chargement du workbook : Erreur d'exécution 238,
    Bonjour,

    Les sélections de ListBoxes Active X Multiselect n'étant pas sauvegardées et restituées automatiquement à l'ouverture d'un workbook, je les ai sauvegardé à coté de chaque item de la plage de définition des items pour chaque ListBox.
    J'utilise la méthode Workbook_Open() pour les restituer à l'ouverture du WorkBook (voir code ci-dessous).
    Je ne comprends pas pourquoi j'ai une erreur d'exécution 238 (propriété ou méthode non définie pour cet objet) sur le lb.Selected(i)
    Merci pour votre aide.

    Jean-Marc

    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    Private Sub Workbook_Open()
        Dim lb, CurShape As Shape
        Dim lbName As Variant
        Dim Name As String
        Dim Width, height, Left, Top As Long
        Dim Wsname, rg As String
        Dim mg As Range
        Dim i, m As Long
        Dim WS As Worksheet
        Dim SelectedP As Boolean
     
     
     
        Set CurShape = ActiveSheet.Shapes("Rectangle 102")
        CurShape.Left = 2
        CurShape.Top = 1177
        CurShape.Width = 661
        CurShape.height = 692
     
        Set CurShape = ActiveSheet.Shapes("Rectangle 154")
        CurShape.Left = 2
        CurShape.Top = 1871
        CurShape.Width = 661
        CurShape.height = 228
     
        For Each lbName In Array(Array("Assembly", 132, 53, 58, 1200), Array("Propulsion", 144, 53, 262, 1192), _
            Array("Avionics", 204, 88, 452, 1194), Array("Casting", 120, 28, 54, 1274), Array("Processes", 141, 78, 261, 1267), _
            Array("Testing", 197, 135, 456, 1309), Array("Forging", 120, 28, 55, 1325), Array("MRO", 144, 90, 261, 1377), _
            Array("Cabin", 191, 52, 456, 1459), Array("Insulation", 120, 20, 60, 1393), Array("Tubes", 144, 40, 261, 1496), _
            Array("Consummables", 191, 30, 458, 1528), Array("Material", 120, 41, 56, 1441), Array("Metal", 144, 39, 261, 1551), _
            Array("Composite", 190, 109, 461, 1568), Array("Machining", 132, 85, 63, 1513), Array("Engineering", 147, 66, 261, 1613), _
            Array("Welding", 132, 30, 57, 1619), Array("Tools", 146, 40, 58, 1677), Array("Onboard", 294, 101, 264, 1710), _
            Array("Additive", 148, 101, 59, 1742), Array("Certificates", 194, 195, 96, 1894), Array("Approvals", 205, 195, 450, 1891))
            Name = CStr(lbName(0))
            Width = CInt(lbName(1))
            height = CInt(lbName(2))
            Left = CInt(lbName(3))
            Top = CInt(lbName(4))
            Set CurShape = ActiveSheet.Shapes(Name)
            CurShape.Width = Width
            CurShape.height = height
            CurShape.Left = Left
            CurShape.Top = Top
            Set lb = Me.Worksheets(1).Shapes(Name).OLEFormat.Object
            rg = lb.ListFillRange
            Wsname = Split(rg, "!")(0)
            Set WS = ThisWorkbook.Worksheets(Wsname)
            Set mg = WS.Range(rg).Offset(ColumnOffset:=1)
            m = mg.Rows.Count ' lb.ListCount
            For i = 0 To m - 1
                SelectedP = mg.Cells(i + 1, 1).Value
                lb.Selected(i) = SelectedP
            Next i
        Next lbName
     
     
    End Sub

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    bonjour
    c'est normal que ca plante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    For i = 0 To m - 1
                SelectedP = mg.Cells(i + 1, 1).Value
                lb.Selected(i) = SelectedP
            Next i
    pour selected des item d'une listebox c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lb.Selected(i) = true ou false
    il te faut donc comparer la valeur de mg.Cells(i + 1, 1).Value par raport a lb.list(i)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    For i = 0 To m - 1
                SelectedP = mg.Cells(i + 1, 1).Value
                lb.Selected(i) = lb.list(i)=SelectedP 
     Next i
    si lb.list(i) est différent de SelectedP se sera false sinon true

    si tu a plusieurs colonne dans ta mg et listbox
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     lb.Selected(i) = lb.list(i,0)=SelectedP
    le zero pour comparer la colonne 1 de la listbox par rapport a la colonne 1 de mg
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  3. #3
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 2
    Par défaut
    Merci pour ta réponse Patrick.
    En fait ce n'est pas la valeur des items que je lis dans ma feuille mais le statut VRAI ou FAUX archivé pour chacun dans la colonne suivante:
    ListFillRange:
    Colonne1 Colonne2
    Item1 VRAI
    Item2 FAUX
    Item3 FAUX
    ...
    ce qui fait planter c'est le lb.Selected(i).
    lb.ListCount génère la même erreur 438

    C'est comme s'il manquait ces méthodes à l'objet ListBox stocké dans ma variable lb.

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    ca serait pas plutot par ce que vba prend tes "VRAI" ET "FAUX" comme des strings au lieu de la valeur qu'ils representent
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    For i = 0 To m - 1
                 lb.Selected(i) = lb.list(i)= mg.Cells(i + 1, 1).Value="VRAI"
     
     Next i
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

Discussions similaires

  1. Problème listbox multiselect
    Par mimicor15 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/01/2017, 20h00
  2. Problème Listbox MultiSelection
    Par Bab06 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 25/11/2009, 11h53
  3. Problème de sélection dans un tableau dynamique (gestion des erreurs)
    Par aulilou dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 01/08/2007, 16h38
  4. Réponses: 5
    Dernier message: 01/06/2007, 12h28
  5. Problème de sélection dans une listbox
    Par cacahuèèète dans le forum Access
    Réponses: 3
    Dernier message: 29/06/2006, 15h03

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