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 :

Bug listbox lors de l'ouverture du fichier excel.


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Alternant
    Inscrit en
    Mars 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

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

    Informations forums :
    Inscription : Mars 2019
    Messages : 9
    Par défaut Bug listbox lors de l'ouverture du fichier excel.
    Bonjour, je rencontre un problème lors de l'ouverture de mon fichier excel.
    Comme dit dans le titre à chaque ouverture je doit effectuer un débogage via VBA concernant une listbox.
    Cela affiche : Erreur d’exécution '424' Objet requis.

    Pouvez-vous me dire de quoi cela peut-il venir ?

    Voici un extrais du code qui coince en question :

    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
    Private Sub ListBox1_Click()
     
    ListBox2.ListFillRange = ListBox1.Value
    ListBox2.ListIndex = 0
     
    ListBox1.IntegralHeight = False
    'ListBox1.Width = 150
    'ListBox1.Left = 650
    'ListBox1.Height = 125
     
    ListBox2.IntegralHeight = False
    'ListBox2.Width = 500
    'ListBox2.Left = 650
    'ListBox2.Height = 350
     
            For j = 0 To 1
            Cells(500, j + 1).End(xlUp).Offset(1, 0) = "-"
            Next j
            For j = 2 To 2
            Cells(500, j + 1).End(xlUp).Offset(1, 0) = Cells(2, 20)
            Next j
            For j = 3 To 4
            Cells(500, j + 1).End(xlUp).Offset(1, 0) = "-"
            Next j
     
    End Sub

  2. #2
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Sur quelle ligne ?

  3. #3
    Membre habitué
    Homme Profil pro
    Alternant
    Inscrit en
    Mars 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

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

    Informations forums :
    Inscription : Mars 2019
    Messages : 9
    Par défaut
    Citation Envoyé par clementmarcotte Voir le message
    Le problème se produit sur la deuxième ligne

    Citation Envoyé par Patrice740 Voir le message
    Je ne comprend pas bien, pouvez vous développer ? Merci

  4. #4
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 478
    Par défaut
    Bonjour,

    Avec l'explorateur d'objets :
    Nom : ListFillRange.jpg
Affichages : 265
Taille : 70,7 Ko

  5. #5
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 478
    Par défaut
    Citation Envoyé par maxime00001 Voir le message
    Je ne comprend pas bien, pouvez vous développer ? Merci
    En utilisant l'explorateur d'objet (touche raccourci F2) tu peux constater :
    1) L'objet Listbox ne possède pas de propriété ListFillRange
    2) La propriété ListFillRange concerne un objet ControlFormat ou un Object OLEObject

    Il est donc normal que VBA ne trouve pas le bon objet pour « ListBox2.ListFillRange = .... »

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    242
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 242
    Par défaut
    Bonjour,
    C'est vrai qu'avec les contrôles ActiveX on a parfois des comportements bizarres...
    J'ai reproduit le problème (uniquement au démarrage), on peut le contourner en ajoutant un test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub ListBox1_Click()
        If Not IsEmpty(ListBox2) Then
            ListBox2.ListFillRange = ListBox1.Value
            ListBox2.ListIndex = 0
        End If
        '...
    End Sub
    C'est comme si à l'ouverture du classeur, la sub ListBox1_Click était exécutée alors que l'objet ListBox2 n'était pas encore instancié ??!!

  7. #7
    Membre habitué
    Homme Profil pro
    Alternant
    Inscrit en
    Mars 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

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

    Informations forums :
    Inscription : Mars 2019
    Messages : 9
    Par défaut
    Bonjour,
    Merci beaucoup, j'ai mis votre code avant le code existant cependant le bug est encore la...
    Peut être est-ce moi qui ne l'ai pas bien inséré ou autres, pouvez vous me dire si cela vient de moi ?

    Code VBA :

    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
    Private Sub ListBox1_Click()
    
     If Not IsEmpty(ListBox2) Then
            ListBox2.ListFillRange = ListBox1.Value
            ListBox2.ListIndex = 0
     End If
    ListBox2.ListFillRange = ListBox1.Value
    
     
    ListBox2.ListIndex = 0
    
    ListBox1.IntegralHeight = False
    'ListBox1.Width = 150
    'ListBox1.Left = 650
    'ListBox1.Height = 125
    
    ListBox2.IntegralHeight = False
    'ListBox2.Width = 500
    'ListBox2.Left = 650
    'ListBox2.Height = 350
               
            For j = 0 To 1
            Cells(500, j + 1).End(xlUp).Offset(1, 0) = "-"
            Next j
            For j = 2 To 2
            Cells(500, j + 1).End(xlUp).Offset(1, 0) = Cells(2, 20)
            Next j
            For j = 3 To 4
            Cells(500, j + 1).End(xlUp).Offset(1, 0) = "-"
            Next j
     
     
    
    
    End Sub

  8. #8
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    242
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 242
    Par défaut
    En fait, il faut conditionner l'exécution de toutes les lignes faisant intervenir Listbox2 au fait que l'objet ListBox2 soit bien défini.
    Ton code légèrement remanié peut donc donner ça
    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
    Private Sub ListBox1_Click()
     
        ListBox1.IntegralHeight = False
        'ListBox1.Width = 150
        'ListBox1.Left = 650
        'ListBox1.Height = 125
     
        If Not IsEmpty(ListBox2) Then
            ListBox2.ListFillRange = ListBox1.Value
            ListBox2.ListIndex = 0
     
            ListBox2.IntegralHeight = False
            'ListBox2.Width = 500
            'ListBox2.Left = 650
            'ListBox2.Height = 350
        End If
     
        For j = 0 To 1
            Cells(500, j + 1).End(xlUp).Offset(1, 0) = "-"
        Next j
        For j = 2 To 2
            Cells(500, j + 1).End(xlUp).Offset(1, 0) = Cells(2, 20)
        Next j
        For j = 3 To 4
            Cells(500, j + 1).End(xlUp).Offset(1, 0) = "-"
        Next j
     
    End Sub
    Je ne peux pas tester actuellement, mais comme ça, ça devrait passer.

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

Discussions similaires

  1. [Toutes versions] Bogage listbox lors de l'ouverture du fichier excel.
    Par maxime00001 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 04/03/2019, 16h50
  2. [XL-2016] Listes en cascade VBA bug lors de l'ouverture du fichier
    Par faustien dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 10/11/2017, 11h24
  3. [XL-2007] Pb lors de l'ouverture de fichier Excel
    Par mouss4rs dans le forum Excel
    Réponses: 3
    Dernier message: 16/05/2012, 12h06
  4. [XL-2007] Affichage des macros lors de l'ouverture du fichier excel
    Par Saridro dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 25/02/2010, 19h51
  5. Réponses: 10
    Dernier message: 26/05/2008, 11h02

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