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

hight_in_trouble Messages postés 4 Date d'inscription vendredi 5 juin 2015 Statut Membre Dernière intervention 12 juin 2015 - 5 juin 2015 à 12:33
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 12 juin 2015 à 17:46
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

cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
5 juin 2015 à 14:35
Bonjour,

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

0
hight_in_trouble Messages postés 4 Date d'inscription vendredi 5 juin 2015 Statut Membre Dernière intervention 12 juin 2015
12 juin 2015 à 16:49
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à...
0
vb95 Messages postés 3473 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 30 avril 2024 169
6 juin 2015 à 12:07
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 ?
0
hight_in_trouble Messages postés 4 Date d'inscription vendredi 5 juin 2015 Statut Membre Dernière intervention 12 juin 2015
12 juin 2015 à 17:00
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.
0
hight_in_trouble Messages postés 4 Date d'inscription vendredi 5 juin 2015 Statut Membre Dernière intervention 12 juin 2015
12 juin 2015 à 17:24
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 ;)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
12 juin 2015 à 17:35
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

0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 12/06/2015 à 18:10
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.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
12 juin 2015 à 17:14
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
?????
-1
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 12/06/2015 à 21:22
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.
0
Rejoignez-nous