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 :

Erreur d'exécution 9: L'indice n'appartient pas à la sélection associée à UserForm.Show [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2016
    Messages : 22
    Par défaut Erreur d'exécution 9: L'indice n'appartient pas à la sélection associée à UserForm.Show
    Salut à tous!

    Mon problème est le suivant: j'ai un classeur qui comporte une feuille "Prod et stock" dans laquelle se trouve un bouton qui affiche un UserForm (UserForm1). Le code associé est dans un module classique nommé "Apparition_formulaire".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub Apparition_formulaire()
     
    UserForm1.Show False
     
    End Sub
    Le UserForm s'affichait sans problème depuis un bon bout de temps jusqu'à ce qu'aujourd'hui le message d'erreur "Erreur d'exécution 9: L'indice n'appartient pas à la sélection" apparaisse, avec la ligne surlignée.

    Auriez-vous une idée d'où cela peut-il venir?

    Merci d'avance.

  2. #2
    Membre très actif
    Homme Profil pro
    Analyste programmeur
    Inscrit en
    Mai 2014
    Messages
    393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Analyste programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 393
    Par défaut
    Bonjour,

    Cela peut venir d'énormément de choses, et très probablement pas de la ligne .

    Le fait que l'erreur soit signalée à cette ligne signifie seulement que lors de l'appel de UserForm1.Show False une erreur s'est produite. L'erreur peut venir de n'importe quel élément dans ton userform_initialize ou encore userform_activate, ou même de fonction appelées par ces deux fonctions et ainsi de suite.

    On ne pourra rien faire sans le code de userform_initialize et de userform_activate.

  3. #3
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gers (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 56
    Par défaut
    Salut,

    As tu renommé ton userform1 entre temps? L'erreur pourrait venir de là. Sinon effectivement il faudra voir le reste du code

    A+

    Captain

  4. #4
    Membre très actif
    Homme Profil pro
    Analyste programmeur
    Inscrit en
    Mai 2014
    Messages
    393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Analyste programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 393
    Par défaut
    L'erreur ne peut même pas venir de là, sinon ce serait
    Erreur de compilation : Variable non définie

  5. #5
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    Userform1 est une objet et pas une variable

    j'aurai plutôt vu, en cas de renommage de l'userform, une erreur de type "objet requis" ?

    L'erreur se trouve probablement dans le Userform_Initialize et pour la trouver, tu dois placer un point d'arrêt sur ta procédure d'appel du formulaire, et dérouler en pas à pas la procédure pour voir à quelle ligne ça s'arrête.

    Là, le problème semble plutôt prendre sa source :

    - si aucune modification du code n'a été faite : un problème de conception et de maintenance, par exemple travailler sur une feuille qui a été renommée ou n'existe plus
    - si modification du code qui a été faite : le débogage et le recettage de la modification n'a pas été complet, par exemple une coquille s'est glissée dans le nom d'une feuille



    Nous ne pourrions rien faire sans voir le code d'initisalisation du Userform

  6. #6
    Membre très actif
    Homme Profil pro
    Analyste programmeur
    Inscrit en
    Mai 2014
    Messages
    393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Analyste programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 393
    Par défaut
    Citation Envoyé par joe.levrai Voir le message
    Bonjour,

    Userform1 est une objet et pas une variable

    j'aurai plutôt vu, en cas de renommage de l'userform, une erreur de type "objet requis" ?
    Et bien non, j'avais vérifié avant de poster mon message. Le test est simple, il suffit de créer cette sub et voir l'erreur retournée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    'Pour voir l'erreur, il faut que UserForm2 n'existe pas bien sûr 
    sub test()
          UserForm2.show
    end sub
    Voilà en image :Nom : Capture.JPG
Affichages : 1946
Taille : 84,6 Ko

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2016
    Messages : 22
    Par défaut
    Salut tout le monde, et merci pour votre réactivité!

    Effectivement, je suis en train de faire des modifs dans le UserForm_Initialize mais comme je n'étais pas sûr que le problème pouvait venir de là, je n'ai pas mis le code en premier lieu. Je vais essayer de chercher les erreurs dans UserForm_Initialize et je reviendrai rapidement vers vous si j'ai du nouveau (en bon ou en mauvais).
    Je peux simplement dire qu'a priori ce n'est pas un problème de nom d'UserForm ou de Sheet.

  8. #8
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2016
    Messages : 22
    Par défaut
    Je crois bien que j'ai trouvé le problème!

    Pour contextualiser, j'ai un type de Variable que j'ai appelé "Lot" et qui a entre autres attributs "CodeLot" (String, référence du lot) et "Occurrence" (Integer, nombre d'occurrences du Lot dans une liste).
    J'ai aussi un tableau Excel dans la feuille "Prod et stock" dont une des colonne liste des Lot. Je veux que les Lot qui n'apparaissent qu'une fois dans cette colonne soient ajoutés à la ComboBox2 au moment d'initialiser le UserForm.

    Vraisemblablement, le problème vient du fait que je crée le tableau "Lots()" et qu'ensuite je mette UBound(Lots()) en limite sup du compteur d'une boucle For qui parcourt ce même tableau, alors que Lots() ne contient aucun élément lors de la première itération (du coup UBound(Lots())) = -1).

    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
    Private Sub UserForm_Initialize()
     
    Dim ComptLigneHP As Integer
    Dim Lots() As Lot
    Dim i As Integer
    Dim LenDim As Integer
     
    ComptLigneHP = 4 'La première des lignes à analyser dans le tableau Excel ("HP") est la quatrième
    i = 0
    LenDim = 0
     
    With ThisWorkbook.Sheets("Prod et stock")
        Do While Not IsEmpty(.Range("D" & ComptLigneHP))   'Pour chaque ligne de l'historique de prod,comparer la référence du lot à une liste de lots. S'il ne figure pas dans la liste, incrémenter son occurence.
            For j = 0 To UBound(Lots())
                If .Range("D" & ComptLigneHP).Text = Lots(j).CodeLot Then
                    Lots(j).Occurrence = Lots(j).Occurrence + 1
                    Exit For
                End If
                i = i + 1
            Next j
            If i = UBound(Lots()) Then
                Dim NewLot As Lot
                NewLot.CodeLot = .Range("D" & ComptLigneHP).Text
                NewLot.Occurrence = 1
                LenDim = LenDim + 1
                ReDim Preserve Lots(LenDim)
                Lots(UBound(Lots())) = NewLot
            End If
            ComptLigneHP = ComptLigneHP + 1
        Loop
    End With
    For k = 0 To UBound(Lots())    
            If Lots(k).Occurrence = 1 Then
                Me.ComboBox2.AddItem (Lots(k).CodeLot)
            End If
    Next k
     
    End Sub

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

Discussions similaires

  1. [XL-2010] Erreur 9 l'indice n'appartient pas la sélection
    Par Ardiden31 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 28/04/2015, 16h42
  2. [XL-2010] Erreur 9 l'indice n'appartient pas la sélection
    Par Ardiden31 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 28/04/2015, 16h26
  3. [XL-2010] erreur '9' l'indice n'appartient pas à la sélection
    Par jad73 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 05/03/2013, 00h47
  4. [XL-2007] Erreur 9 l'indice n'appartient pas à la sélection
    Par stardeus dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 20/02/2013, 16h29
  5. [XL-2010] Erreur 9 l'indice n'appartient pas à la sélection
    Par PATDRO dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 14/08/2012, 00h23

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