hight_in_trouble
Messages postés4Date d'inscriptionvendredi 5 juin 2015StatutMembreDernière intervention12 juin 2015
-
5 juin 2015 à 12:33
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 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
'.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.
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 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
hight_in_trouble
Messages postés4Date d'inscriptionvendredi 5 juin 2015StatutMembreDernière intervention12 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à...
vb95
Messages postés3473Date d'inscriptionsamedi 11 janvier 2014StatutContributeurDernière intervention30 avril 2024169 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 ?
hight_in_trouble
Messages postés4Date d'inscriptionvendredi 5 juin 2015StatutMembreDernière intervention12 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.
hight_in_trouble
Messages postés4Date d'inscriptionvendredi 5 juin 2015StatutMembreDernière intervention12 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 ;)
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_Le Pivert
Messages postés7903Date d'inscriptionjeudi 13 septembre 2007StatutContributeurDernière intervention11 mars 2024137 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
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.
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 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 ?????
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.
12 juin 2015 à 16:49