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 : Impossible de définir la propriété List. Index de table de propriétés non valide


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    377
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2013
    Messages : 377
    Points : 71
    Points
    71
    Par défaut Erreur : Impossible de définir la propriété List. Index de table de propriétés non valide
    bonjour tout le monde , j'ai une erreur au niveau de mon formulaire de modification que je comprends pas trop ça vient d'où .

    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
     
    Private Sub UserForm_Initialize()
    Dim Modèle
    Dim Constructeurs
    Dim Technologie
    Dim PPI
    Dim Site
    Dim Etat
    Dim ILD
    Dim Résultat
    Dim Année
    Dim modification
    Dim CodeGDO
    With Sheets("Remplissage")
    CodeGDO = .Range("D3:D" & .Range("D" & Rows.Count).End(xlUp).Row)
    'CodeGDO = Sheets("Remplissage").Range("D3:D" & Sheets("Remplissage").Range("D" & Rows.Count).End(xlUp).Row)
    End With
    With Sheets("Information")
    Modèle = .Range("A2:A" & .Range("A" & Rows.Count).End(xlUp).Row)
    Constructeurs = .Range("B2:B" & .Range("B" & Rows.Count).End(xlUp).Row)
    Technologie = .Range("C2:C" & .Range("C" & Rows.Count).End(xlUp).Row)
    ILD = .Range("D2:D" & .Range("D" & Rows.Count).End(xlUp).Row)
    Etat = .Range("F2:F" & .Range("F" & Rows.Count).End(xlUp).Row)
    Site = .Range("G2:G" & .Range("G" & Rows.Count).End(xlUp).Row)
    PPI = .Range("H2:H" & .Range("H" & Rows.Count).End(xlUp).Row)
    Année = .Range("J2:J" & .Range("J" & Rows.Count).End(xlUp).Row)
    modification = .Range("K2:K" & .Range("K" & Rows.Count).End(xlUp).Row)
    Résultat = .Range("I2:I" & .Range("I" & Rows.Count).End(xlUp).Row)
    End With
    ComboBoxCodeGDO.List() = CodeGDO
    ComboBoxModèle.List() = Modèle
    ComboBoxConstructeur.List() = Constructeurs
    ComboBoxTechnologie.List() = Technologie
    ComboBoxPPI.List() = PPI
    ComboBoxRésultat.List() = Résultat
    ComboBoxSiteOpérationnel.List() = Site
    ComboBoxBatterie.List() = Etat
    ComboBoxVoyant.List() = Etat
    ComboBoxTorres.List() = Etat
    ComboBoxPlatine.List() = Etat
    ComboBoxTypeILD.List() = ILD
    ComboBoxAnnéeBatterie.List() = Année
    ComboBoxDateControle.List() = Année
    ComboBoxAnnéeControleValise.List() = Année
    ComboBoxModificationSchémas.List() = modification
    End Sub
    Le code plante au niveau de la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ComboBoxCodeGDO.List() = CodeGDO
    .


    Dans le comboBoxCode GDO j'ai le code suivant

    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
    Dim ok As Boolean
        Private Sub ComboBoxCodeGDO_Change()
        Dim Ligne As Integer
        Dim derlign As Long
        If ok = True Then Exit Sub
        With Sheets("Remplissage")
        derlign = .Range("A65536").End(xlUp).Row
        Ligne = .Range("A3:AC" & derlign).Find(ComboBoxCodeGDO, lookat:=xlWhole).Row
        ok = True
        ComboBoxCodeDépartHTA.Value = .Range("A" & Ligne)
        ComboBoxNomDépartHTA.Value = .Range("B" & Ligne)
        TextExploit.Value = .Range("C" & Ligne)
        ComboBoxCodeGDO.Value = .Range("D" & Ligne)
        ComboBoxPPI.Value = .Range("E" & Ligne)
        ComboBoxNomPoste.Value = .Range("F" & Ligne).Value
        ComboBoxCommune.Value = .Range("G" & Ligne).Value
        ComboBoxModèle.Value = .Range("H" & Ligne)
        ComboBoxConstructeur.Value = .Range("I" & Ligne)
        ComboBoxTechnologie.Value = .Range("J" & Ligne)
        ComboBoxTypeILD.Value = .Range("K" & Ligne)
        ComboBoxAnnéeBatterie.Value = .Range("L" & Ligne)
        TextCalibrePossible.Value = .Range("M" & Ligne)
        TextRéglageEffectif.Value = .Range("N" & Ligne)
        TextRéglagePréconisé.Value = .Range("O" & Ligne)
        ComboBoxDateControle.Value = .Range("P" & Ligne)
        ComboBoxAnnéeControleValise.Value = .Range("Q" & Ligne)
        TextGéocutil.Value = .Range("R" & Ligne)
        TextTerrain.Value = .Range("S" & Ligne)
        ComboBoxBatterie.Value = .Range("T" & Ligne)
        ComboBoxPlatine.Value = .Range("U" & Ligne)
        ComboBoxVoyant.Value = .Range("V" & Ligne)
        ComboBoxTorres.Value = .Range("W" & Ligne)
        ComboBoxModificationSchémas.Value = .Range("X" & Ligne)
        TextContenuACR.Value = .Range("Y" & Ligne)
        TextActionVisite.Value = .Range("Z" & Ligne)
        TextActionUltérieurement.Value = .Range("AA" & Ligne)
        ComboBoxSiteOpérationnel.Value = .Range("AB" & Ligne)
        ComboBoxRésultat.Value = .Range("AC" & Ligne)
        End With
        ok = False
        End Sub
    . Merci d'avance pour vos aides

  2. #2
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 906
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 906
    Points : 8 539
    Points
    8 539
    Par défaut
    Salut

    .list() n'existe pas en VBA. [Edit]gFZT82 a bien fait de corriger mon erreur... List existe bien désolé :p [/Edit]

    Il te faut utiliser la propriété RowSource et lui affecter l'adresse des lignes contenant les valeurs

    Inutile de passer par des variables.

    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
    Private Sub UserForm_Initialize()
     
    'On pointe le classeur
    With ThisWorkbook
        'On pointe la feuille du classeur
        With .Sheets("Remplissage")
            ComboBoxCodeGDO.RowSource = "Remplissage!A2:A" & .Cells(.Rows.Count, "A").End(xlUp).Row
        End With
     
        With .Sheets("Information")
            ComboBoxModele.RowSource = "Information!A2:A" & .Cells(.Rows.Count, "A").End(xlUp).Row
            '... Ainsi de suite
        End With
    End With
     
    End Sub
    Quelques conseils,
    • il est préférable d'éviter les accents dans les noms de variables et des composants (combobox par exemple).
    • il vaut mieux pointer le classeur sur lequel tu travailles (ThisWorkbook), ça évite les surprises en cas de changement du classeur actif
    • Pense à indenter ton code, ça facilite sa lecture



    ++
    Qwaz

    PS: ça existe encore la GDO sous Extra! ?

  3. #3
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Points : 3 974
    Points
    3 974
    Par défaut
    Bonjour,

    J’ai effectué le test sans problème avec ton code épuré.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub UserForm_Initialize()
    Dim CodeGDO
        With Sheets("Remplissage")
            CodeGDO = .Range("D3:D" & .Range("D" & Rows.Count).End(xlUp).Row)
        End With
        ComboBoxCodeGDO.List() = CodeGDO
    End Sub
    As-tu vérifié le contenu de CodeGDO après initialisation ?
    Si CodeGDO ne contient qu’un seul élément, tu peux avoir ce type d’erreur car il sera considéré comme String et non pas comme Tableau de Variants, auquel cas List() ne convient pas.

    Cordialement.

  4. #4
    Membre chevronné Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Points : 1 999
    Points
    1 999
    Par défaut
    Bonjour,


    Je confirme l'explication donnée par gFZT82 , moi dans ce cas de figure, je test la plage, dans cet exemple la plage se nomme RRANGE :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     If RRANGE.Count = 1 Then
            ReDim Montab(1 To 1, 1 To 1)
            Set Montab(1, 1) = RRANGE
    Else
            Montab = RRANGE.Value
    End If
    Edit1: Pour etre complet, je test egalement l'existence de la plage en amont et pour ma part je travaille toujours avec [G]OPTION EXPLICIT[/G] c'est plus contraignant mais on evite aussi pas mal d'erreurs.

    Edit2 : En consultant mes codes, je constates que pour les combobox, je n'utilise jamais les listes, je préfère en général ajouter les éléments un par un dans une collection afin d'éviter les doublons puis de les charger par un AddItem ensuite.

    qwaz ==> des miliers de bons conseils sur ce forum, alors une petite boulette de temps en temps, ce ne fait pas de mal, juste histoire de voir si les gens suivent !

  5. #5
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 906
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 906
    Points : 8 539
    Points
    8 539
    Par défaut
    Salut

    Et voila ce qui arrive quand on parle trop vite merci d'avoir corrigé mon erreur.

    Par contre, histoire de pas avoir tout faux, je persiste sur le fait qu'il faille indiquer le classeur sur lequel on travaille :p

    ++
    Qwaz

  6. #6
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    377
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2013
    Messages : 377
    Points : 71
    Points
    71
    Par défaut
    Merci pour tous je n'ai plus l'erreur alors que je n'ai rien changé je ne sais pas pourquoi j'avais cette erreur, peut etre comme vous avez dit j'avais une seule donné dans le tableau Merci beaucoup

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 21/02/2015, 16h54
  2. Réponses: 3
    Dernier message: 27/08/2014, 18h04
  3. [XL-2007] Erreur 1004: Impossible de définir la propriété
    Par Leylone dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 18/06/2014, 15h13
  4. Réponses: 16
    Dernier message: 13/03/2008, 21h51
  5. Réponses: 1
    Dernier message: 21/08/2007, 15h23

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