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 :

XL 2007 - listSubItems ou SubItems de listview non accepté [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué Avatar de danbo52
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 98
    Points : 125
    Points
    125
    Par défaut XL 2007 - listSubItems ou SubItems de listview non accepté
    bonsoir,

    rassemblant des données dans une listview, sous excel 2007, et après avoir testé plusieurs solutions du net, lorsque je lance ma macro de chargement de la listview, quelque soit les commandes

    .ListSubItems ou
    .SubItems

    dans le code suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    with listview
    '......
    .ListItems(1).ListSubItems(2).Add , , "montexte1"  ou
    .ListItems(1).SubItems(2).Add , , "montexte1"
    '......
    end with
    le système me répond :

    Erreur de compilation

    Membre de méthode ou de données introuvable.
    Je rappelle que je suis sous excel 2007.

    A priori SubItems semblerait remplacer ListSubItems dans Excel 2007, malgré cela, on le trouve quand même accepté dans certains codes !!!!

    L'aide précise qu'il faut valider l'orthographe, ce que j'ai fait, et aussi, la limite de l'index. Or mon tableau listview possède plus de colonnes que le code n'affecte de valeurs (pour l'instant).

    Y a t il une manip au sein d'Excel qui en plus de placer l'icone listview dans la boite à outils, interviendrait dans le fonctionnement ?

    ex : définition en Dim... quelque chose ? j'ai fait des tests, mais pas probant.
    placement du code dans le userform où se trouve la listview et
    placement du code dans un module, mais là aussi rien de positif.

    Qu'y aurait-il d'autre à voir ?

    L'appli que je développe est un gestionnaire de données pour un artisan métallurgiste. Elle est construite pour une utilisation professionnelle par des non informaticiens.

    Merci pour les idées et directives.

    Danbo.

    PS : au cas où, je vous présente mes meilleurs voeux pour 2010 en espérant que mes utopies deviennent réalités, et peut être les vôtre aussi.
    Hem ! J'ai souvent l'impression qu'on ne regarde que moi ! Hem !

  2. #2
    Membre chevronné Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Points : 2 003
    Points
    2 003
    Par défaut
    slt, danbo52

    je sais pas si ça peux t'aider, mais j'utilise aussi Excel 2007 et dans un userform je rempli une listview comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    For i = 1 To 3
    ListView1.ListItems(i).ListSubItems.Clear
    With ListView1.ListItems(i).ListSubItems
     
    'Remplissage des colonnes 2 et 3 dans la 1ere ligne etc...
            .Add , , Sheets(1).Range("A" & i).Value
            .Add , , Sheets(1).Range("B" & i).Value
    End With
    Next i
    Et ceci marche bien.
    une question peux-être bête, ta listview se nomme-t-elle bien "Listview" ou "Listview1""?


    A+
    @+

    Si vous avez trouvé la solution à votre problème n'oubliez pas d'appuyer sur
    Et n'oubliez pas de voter en appuyant sur si ce message a repondu à vos attentes.
    Ou sur si ce n'est pas le cas

  3. #3
    Membre habitué Avatar de danbo52
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 98
    Points : 125
    Points
    125
    Par défaut
    De retour,

    l'essai n'est pas concluant, le message d'erreur est alors le suivant:

    Erreur d'exécution '91'

    Variable objet ou variable de bloc with non définie
    Cette erreur est liée à la définition préalable de l'objet avant de traiter with...end with.

    Or, j'ai déclaré en Dim ListView1 as Object puis en ListView, mais la réponse reste la même.
    Pourtant, en syntaxe pointée, lorsque je déclare :

    Dim ListView1 As ...., Excel me propose sa liste d'objet, dont le 'ListView', qui passe totalement en minuscule, comme s'il n'était pas pris en compte par le code par la suite.

    A voir, je cherche l'origine de la déclaration falsifiée !!!
    Hem ! J'ai souvent l'impression qu'on ne regarde que moi ! Hem !

  4. #4
    Membre chevronné Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Points : 2 003
    Points
    2 003
    Par défaut
    slt,
    ou se trouve ta listview?
    Dans une feuille ou dans un userform?

    parce qu'il n'est pas necessaire de la déclarer en object dans un userform, dans une feuille je crois pas non plus... (à vérifier)

    Peux-tu mettre ton code stp?

    A+

    EDIT: un exemple : une listview dans un userform code à mettre dans initialize de l'userform:
    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
     
    Private Sub UserForm_Initialize()
    Dim i As Long
     
        With ListView1
            With .ColumnHeaders
                .Clear
                'Ajoute 3 colonnes en spécifiant le nom de l'entête
                'et la largeur des colonnes et centre les données de chaque colonne
                'sauf la première colonne
                .Add , , "1", 50
                .Add , , "2", 50, lvwColumnCenter
                .Add , , "3", 50, lvwColumnCenter
             End With
     
            'Remplissage de la 1ere colonne (création de 3 lignes)
            With .ListItems
               .Add , , "TATA"
               .Add , , "TONTON"
               .Add , , "TOTO"
            End With
     
     
        End With
     
        'Spécifie l'affichage en mode "Détails"
        ListView1.View = lvwReport
        ListView1.Gridlines = True
     
     
    For i = 1 To 3
    ListView1.ListItems(i).ListSubItems.Clear
    With ListView1.ListItems(i).ListSubItems
     
    'Remplissage des colonnes 2 et 3 dans la 1ere ligne etc...
            .Add , , Sheets(1).Range("A" & i).Value
            .Add , , Sheets(1).Range("B" & i).Value
    End With
    Next i
     
    End Sub
    Ce code fonctionne sans erreur.
    @+

    Si vous avez trouvé la solution à votre problème n'oubliez pas d'appuyer sur
    Et n'oubliez pas de voter en appuyant sur si ce message a repondu à vos attentes.
    Ou sur si ce n'est pas le cas

  5. #5
    Membre habitué Avatar de danbo52
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 98
    Points : 125
    Points
    125
    Par défaut
    Voici le code:


    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
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    Function remplirlalistviewchampsdonnees()
       'declaration de la feuille de données
       '
        nombase = UserForm1.ztext_basechoisie
        nomtable = UserForm1.ztext_tablechoisie
        nomfeuille = nombase & "_" & nomtable
        '
        'comptage du nombre de colonnes dans la feuille à la 5 eme ligne
        '
        nc = 1
        Do While Sheets(nomfeuille).Cells(5, nc) <> ""
          nc = nc + 1
        Loop
        nc = nc - 1
         '
         '----- remplissage ListView------------------------
         '
        With UserForm1.ListView1
           .ListItems.Clear
           .View = lvwReport
           '.FullRowSelect = True' fonctionne pas
           '.Gridlines = True'fonctionne pas
        '---------------------------------------------------
        'Création des colonnes d'entete
            With .ColumnHeaders
                'efface les entêtes precedentes
                .Clear
                'Ajout de 3 colonnes avec labels d'entete + largeur en pixels
                .Add , , "MachineFrappe", 50
                .Add , , "NbrePostes", 50
                .Add , , "Puissance", 30
                .Add , , "Cycle", 50
                .Add , , "TypeAcier", 50
                .Add , , "RefPiece", 30
            End With
            '
            'Chargement des lignes de la 1ere colonne
            '
            With .ListItems
               .Add , , "AKP55"
               .Add , , "FormSealH"
               .Add , , "AKP65"
               .Add , , "KruppCG"
               .Add , , "BoltoN5"
               .Add , , "Bau5poste"
            End With
        End With
        '
        'definition de l'object listview
        '
        'Dim ListView1 As ListView1
        '
        For i = 1 To 6 'de la ligne 1 à n
            ListView1.ListItems(i).SubItems.Clear ' <----- LIGNE NON ACCEPTEE
            '
            With ListView1.ListItems(i).ListSubItems
                '
                'Remplissage des colonnes 2 à c dans la 1ere ligne etc...
                'pour le moment on charge avec les memes references
                '
                .Add , , "5" 'NbrePostes
                .Add , , "50000" 'Puissance
                .Add , , "0.75" 'Cycle
                .Add , , "CMnB5" 'TypeAcier
                .Add , , "SAP_6008" 'RefPiece
            End With
        Next i' fin de boucle
     
    End Function

    Ce code est dans un Module.

    Ma ListView1 est dans un Multipage d'un Userform.

    -----

    Je regarde ton code pour déceler des détails sur les différences.

    à plus tard...
    Hem ! J'ai souvent l'impression qu'on ne regarde que moi ! Hem !

  6. #6
    Membre habitué Avatar de danbo52
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 98
    Points : 125
    Points
    125
    Par défaut
    problème !!!
    Je viens d'essayer ton code dans un nouveau fichier, et excel coince sur Gridlines.
    C'est la raison pour laquelle je l'ai occulté momentanément.

    Je me demande si le seul ajout de la listview dans la boite à outils suffit.
    N'y aurait-il pas une autre manip pour assurer la mise en place de ce composant ?

    a+
    Hem ! J'ai souvent l'impression qu'on ne regarde que moi ! Hem !

  7. #7
    Membre chevronné Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Points : 2 003
    Points
    2 003
    Par défaut
    Re,
    quelques remarques:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    End With
    End With
    '
    'definition de l'object listview
    '
    'Dim ListView1 As ListView1
    '
    For i = 1 To 6 'de la ligne 1 à n
    ListView1.ListItems(i).SubItems.Clear ' <----- LIGNE NON ACCEPTEE
    '
    With ListView1.ListItems(i).ListSubItems
    ici le 2eme end with cloture la série des with du début du code donc tu dois encore dire au programme ou se trouve ta listview1. je peux me tromper je suis pas trop caler en vba mais tu devrais supprimer Le Dim et dire ou se trouve la listview et mettre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    For i = 1 To 6 'de la ligne 1 à n
    userform1.ListView1.ListItems(i).SubItems.Clear 
    '
    With userform1.ListView1.ListItems(i).ListSubItems
    tu dis également que cette listview est dans un multipage oui, mais laquelle?
    J'imagine que plus tu seras précis dans le code sur l'emplacement de ta listview et plus facilement il l'a trouvera.

    enfin, pourquoi une fonction pour remplir la listview et pas une Sub?
    A+

    EDIT: Autant pour moi le fait qu'il soit sur une multipage ne change rien
    "UserForm1.Listview1etc..." suffit
    @+

    Si vous avez trouvé la solution à votre problème n'oubliez pas d'appuyer sur
    Et n'oubliez pas de voter en appuyant sur si ce message a repondu à vos attentes.
    Ou sur si ce n'est pas le cas

  8. #8
    Membre habitué Avatar de danbo52
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 98
    Points : 125
    Points
    125
    Par défaut
    rvtoulon,

    merci pour tes remarques, mais je viens de scruter le net pour le chargement de la listview.

    Or, dans mon pack Office, pour ceux que cela intéresse, lorsque je fais sur une zone libre de ma boite à outils,
    - clic droit,

    je peux choisir une multitude d'objects, comme listbox, combobox ,etc, et...

    listview, mais... car il y a un mais,

    dans mon cas, j'ai le choix entre 2 listview(s):
    - l'une est un modele (SP2)
    - l'autre est un modèle (SP6)

    Comme je suis sous XP, en toute tranquillité, j'ai pris le SP2.
    ...et bien que nenni, il fallait que je prenne le SP6.

    Et cela fonctionne parfaitement.

    Sincèrement, et merci à toi....bon réveillon dans le sud.

    Danbo
    Hem ! J'ai souvent l'impression qu'on ne regarde que moi ! Hem !

  9. #9
    Membre chevronné Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Points : 2 003
    Points
    2 003
    Par défaut
    Danbo52,

    De rien j'avais moi aussi galérer avec ma listview .

    ok merci et toi aussi bon réveillon

    A+ sur le forum.
    @+

    Si vous avez trouvé la solution à votre problème n'oubliez pas d'appuyer sur
    Et n'oubliez pas de voter en appuyant sur si ce message a repondu à vos attentes.
    Ou sur si ce n'est pas le cas

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

Discussions similaires

  1. Ajouter subitems dans listview (boucle)
    Par aus3004 dans le forum VB.NET
    Réponses: 8
    Dernier message: 29/10/2010, 23h55
  2. Réponses: 2
    Dernier message: 06/04/2010, 14h36
  3. Réponses: 1
    Dernier message: 27/02/2009, 17h52
  4. Listview : "Non numérique"
    Par maxmarie dans le forum Windows Forms
    Réponses: 5
    Dernier message: 15/10/2007, 19h11
  5. Réponses: 19
    Dernier message: 10/05/2007, 13h50

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