Problème propriété View d'un ListView

Signaler
Messages postés
4
Date d'inscription
vendredi 5 juin 2015
Statut
Membre
Dernière intervention
12 juin 2015
-
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
-
Bonjour,

J'ai un formulaire dans lequel j'ai une multiPage de 5 pages
leur name est standardisé : Page+Jour (PageLundi, PageMardi,...PageVendredi)

Chaque page possède UNE SEULE ET UNIQUE ListView avec un name standardisé ListView+Jour (ListViewLundi,...,ListViewVendredi)

Le code pour afficher les ListView marchaient trés bien et marche trés bien dans un autre formulaire et je n'y ai pas touché depuis j'ai juste changé un variable globale de mon form qui définit le nombre de colonnes que va avoir la ListView mais encore une fois avec ce même nombre de colonnes cela marche dans l'autre formulaire.

Or lors de l'éxecution de mon formulaire j'obtiens une erreur sur le lvwReport celon le message d'erreur suivant:



Le code de l'affichage (normalement focntionnel)
'-------------------------------------------------------------------------------------
'---I Affichage PM par jour ---
'-------------------------------------------------------------------------------------
' Nom : Affiche_PM
' Date : 21/05/2015 / 08:44
' Auteur : --------------------
' Fonction : Met en place l'afficahge des PM d'un jour donné
' Paramètres : jour As String (jour correspondant au ListView)
'-------------------------------------------------------------------------------------
' Rempli la ListView correpondante au jour passé en paramètre
Private Sub Affiche_PM(jour As String)
Dim rng As Range
Dim n As Integer, i As Integer

' On va chercher dans l'onglet correspondant au jour passé en paramètre
With ThisWorkbook.Worksheets(jour)
.Activate
Set rng = [A1] ' ligne avec les titres
n = nbCol ' nombre de colonnes de données

With Me.Controls("ListView" & jour)
' suppression titres
.ColumnHeaders.Clear
' suppression contenu
.ListItems.Clear
' ajout titres
For i = 1 To n
.ColumnHeaders.Add , , rng.Offset(0, i - 1)
Next i
' ajout des éléments
Set rng = [A2]
Do Until IsEmpty(rng)
.ListItems.Add , , rng

For i = 1 To n
.ListItems(rng.Row - 1).ListSubItems.Add , , rng.Offset(0, i)
Next i
Set rng = rng.Offset(1, 0)
Loop

.FullRowSelect = True
.MultiSelect = True
.View = lvwReport

'.Enabled = False
'.Enabled = True
' on supprime toute selection dans la ListView
For i = .ListItems.Count To 1 Step -1
.ListItems(i).Selected = False
Next i

End With
End With
Affiche_Cpt_PM (jour)
End Sub


A savoir que j'avais deux formulaires quasiment similaire à réaliser que celui ci est un copié collé de l'autre avec juste des changement dans la partie saisie et dans le nombre de colonnes à afficher dans ma ListView. Donc me disant que l'erreur venait peut être du copier coller où le contenu du presse papier aurait été légèrement modifié à mon insu, j'ai réécris le code mais cela ne change rien ...

Voila si vous avez déjà eu ce genre d'erreur comment vous y êtes vous pris car la clairement je sèche.

N'hésitez pas à demander le reste du code.

Merci d'avance.

7 réponses

Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
Bonjour,

Ça ne répondra peut-être pas à la question, mais où initialises-tu nbCol ?
n = nbCol       '   nombre de colonnes de données

Messages postés
4
Date d'inscription
vendredi 5 juin 2015
Statut
Membre
Dernière intervention
12 juin 2015

Merci de ta réponse et c'est une variable globale de mon formulaire que je déclare en tant que constante et que j'initialise directement lors de la déclaration. Donc je ne penses pas que le problème vienne de là...
Messages postés
2333
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
20 janvier 2021
121
salut
Lvwreport est une constante en VBA qui permet d'afficher une listview en mode détails !
N'aurais-tu pas créer une variable portant le même nom sur la feuille où se passe l'erreur ?
Messages postés
4
Date d'inscription
vendredi 5 juin 2015
Statut
Membre
Dernière intervention
12 juin 2015

Salut et merci de ta réponse, mais je n'ai pas déclaré d'autre variable portant le même nom sur ma feuille, et l'auto complétion Ctrl+Espace ne me propose rien ayant du sens comme si cette propriété n'était pas reconnue comme une propriété du ListView.
Messages postés
4
Date d'inscription
vendredi 5 juin 2015
Statut
Membre
Dernière intervention
12 juin 2015

Si je parle de propriété c'est de View ;)
Ensuite si je suis là c'est que d'après mon message d'erreur je ne sais pas d'où sa vient à part me mettre lvwReport en surligné et afficher le message d'erreur que j'ai screenshot donc l'un des deux foire mais je ne sais pas lequel ce que je penses c'est que la propriété Vies n'est pas reconnu et que par conséquent la constante ne peut pas lui être affectée ou alors la constante pète un plomb car elle n'ai pas déclaré explicitement mais je n'y crois pas trop vu que dans mon autre formulaire utilisant exactement le même code cela marche sans soucis. Je ne vois pas vraiment comment être plus précis ;)
Messages postés
7223
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
21 janvier 2021
118
Bonjour,

Essaie cela:

 With Me.Controls("ListView" & jour)
   With .ColumnHeaders 'modif
            '   suppression titres
          .Clear 'modif
            '   suppression contenu
            .ListItems.Clear
            '   ajout titres
            For i = 1 To n
               .Add , , Rng.Offset(0, i - 1) 'modif
            Next i
            '   ajout des éléments
            Set Rng = [A2]
            Do Until IsEmpty(Rng)
                .ListItems.Add , , Rng
                
                For i = 1 To n
                    .ListItems(Rng.Row - 1).ListSubItems.Add , , Rng.Offset(0, i)
                Next i
                Set Rng = Rng.Offset(1, 0)
            Loop
             End With 'modif

            .FullRowSelect = True
            .MultiSelect = True
            .View = lvwReport

            '.Enabled = False
            '.Enabled = True
            '   on supprime toute selection dans la ListView
            For i = .ListItems.Count To 1 Step -1
                .ListItems(i).Selected = False
            Next i
            
        End With
    End With

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
233
Les propriétés ne sont pas affichées par CTRL + Espace mais après le . mis à la suite de cet objet. S'agissant non d'un contrôle VBA, mais d'un ocx, c'est l'intellisense seul qui peut les proposer. Idem pour les constantes de cet objet
Peu importe.===>>>> dis-nous ce qu'affiche :
Dim toto As Object
Set toto = Me.Controls("ListView" & jour)
MsgBox TypeName(toto) & vbcrlf & Me.Controls("ListView" & jour).View

placé juste après ta ligne disant :
With Me.Controls("ListView" & jour)

________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
233
comme si cette propriété n'était pas reconnue comme une propriété du ListView

SZois s'il te plait très porécis.
De quoi s'agit-il :
1) de la propriété View (seule propriété que je vois dans ton code)
ou
2) de la constante (et non propriété) lvwReport
?????
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
233
Attends,; là ...
C'est toi qui a mis ce -1 ???
Continue donc seul ! (et c'est bien dommage pour toi, car il y avait d'autres questions, notamment en ce qui concernait le contrôle utilisé et sa provenance, l'existence sur ta machine de VB6 ou non, de VB.net ou non, etc ... Mais également une autre question relative aux références cochées(en particulier "Microssoft Windows Common Controls" - 6.0 (SP6) et ou 5.0) et si tu as pris/inséré MSCOMCTL.OCX ou COMCTL32.OCX) Mais comme une question a pour réponse un message du genre "je sais de quoi je parle et te mets donc un -1 pour m'avoir posé cette question", ... ma foi ...Bonne chance.