ListView avec Item_Click Objet introuvable

Compress

XLDnaute Occasionnel
Bonjour le forum,

J'ai un problème sur un de mes formulaires comprenant une listview.

Cette listview est initialisée grâce à un bouton présent dans le formulaire selon des données qui vont être saisies par l'utilisateur. Jusque là pas de problème, ma ListView1 va afficher les données de l'utilisateur selon ces premiers choix.

Une fois la listView affichée, je souhaite donner la possibilité à l'utilisateur de modifier certaines de ces données après cliquer sur la ligne de son choix.

J'ai rajouté un sub ListView1_ItemClick à mon code mais là lorsque j'ouvre mon userform j'ai une erreur : Erreur d'exécution '-2147352573 (80020003)': Objet Spécifié introuvable et ça me renvoie sur mon sub ListView1_ItemClick.

Voici ce sub :

VB:
Private Sub ListView1_ItemClick(ByVal Item As MSComctlLib.ListItem)

    Dim L, c As Long

    L = Me.ListView1.SelectedItem.Index
    
    Me("TextBox" & 5) = Me.ListView1.ListItems(L).ListSubItems(1).Text
    Me("TextBox" & 6) = Me.ListView1.ListItems(L).ListSubItems(3).Text
    Me("TextBox" & 6) = Me.ListView1.ListItems(L).ListSubItems(5).Text
    
End Sub

Est-ce que le problème vient du fait que mon userform_initialize n'initialise pas ma ListView1 directement ?

Et donc la présence de ListView1_ItemClick ne passe pas ?

Deuxième soucis pour le formatage dans ma listview :

ce code là ne fonctionne pas, j'ai beau cherché je ne comprends pas pourquoi il bloque sur la fonction format ?

VB:
.ListItems(.ListItems.Count).ListSubItems.Add , "Temp!D" & i, Format(Sheets("Temp").Cells(i, 4), "#,##0")

Merci par avance
 

jp14

XLDnaute Barbatruc
Re : ListView avec Item_Click Objet introuvable

Bonjour

Les Listview posent parfois des problèmes, en particulier certain évènement ne sont pas reconnu par le compilateur à l'instant t, par exemple le click sur une colonne pour trier la colonne.


Concernant le deuxième problème, le plus simple est de décomposer le code en utilisant des variables
A= Sheets("Temp").Cells(i, 4)
B=Format(Sheets("Temp").Cells(i, 4), "#,##0")
C= "Temp!D" & i
pour trouver le point de blocage.
Il faut parfois se méfier des caractères particulier comme par exemple "!". Si c'est le cas on remplace le caractère "!" par "£" et lors de l'utilisation on fait l'inverse.

JP
 

YANN-56

XLDnaute Barbatruc
Re : ListView avec Item_Click Objet introuvable

Bonjour Compress, jp14, et à ceux qui passeront par ici,

N'ayant de ta part qu'un petit extrait de ta procédure,
j'ai la flemme de créer des tests pour mieux comprendre.

Cependant, dans cet exemple que j'ai déposé sur un autre fil (Je ne me souviens plus lequel),
il devrait avoir une partie de réponse à ta question........... Enfin; je l'espère.

Bon o.k. il y a plein de choses dont tu n'auras pas besoin. Je te laisse éplucher.

Amicalement,

Yann
 

Pièces jointes

  • CHANTIER_5.xls
    69 KB · Affichages: 167
  • CHANTIER_5.xls
    69 KB · Affichages: 158
  • CHANTIER_5.xls
    69 KB · Affichages: 203

Compress

XLDnaute Occasionnel
Re : ListView avec Item_Click Objet introuvable

Merci Yann j'avais déjà lu et étudié ton fichier.

J'ai modifié mon ListView1_ItemClick en ListView1_Click ça a l'air de fonctionner.

jp14, je vais faire des tentatives, merci pour ta réponse.
 

Compress

XLDnaute Occasionnel
Re : ListView avec Item_Click Objet introuvable

Merci Yann, pour la listview tout fonctionne nickel.

Par contre pour mes formats sur tout mon projet, ça bloque. J'ai fait un test en créant un nouveau classeur avec un usf et une textbox seule dedans avec une fonction attaché à un bouton qui fixe le format.

Ma fonction :

VB:
Private Sub CommandButton9_Click

TextBox1.Value = Format(TextBox1.Value, "#,##0")

End Sub[highlight]

Je tape ensuite 15,565 dans la textbox je clique sur le bouton et j'obtiens bien 16, ce que je veux et vous noterez que Format reste avec un F majuscule.

Je fais la même chose dans mon grand projet et où que je puisse insérer format, il me l'écrit avec un f minuscule et avec la même fonction il me déclenche une erreur 

[QUOTE]Erreur de compilation:

Nombre d'arguments incorrect ou affectation de propriété incorrecte[/QUOTE]

Je parle même pas de mes tests sur le formatage de ma listview, j'ai juste isolé une textbox et un bouton dans mon grand projet dédié à tester la même chose que je l'ai fait dans mon classer test où il y a seulement une seule textbox et un bouton. Dans l'un ça fonctionne, dans l'autre pas.

Quelqu'un aurait une idée d'où peut survenir ce problème ?

Une référence manquante ? je ne vois vraiment pas je suis perdu.

J'ai fait le ménage dans le fichier mais vous pouvez tester mon userform :

Cijoint.fr - Service gratuit de dépôt de fichiers 

Dans la partie de la ListView, vous pouvez également voir en mettant ce code :

[code=vb].ListItems(.ListItems.Count).ListSubItems.Add , "Temp!D" & i, Format(Sheets("Temp").Cells(i, 4), "#,##0")

qu'il y a également un bug sur le format....

Merci de m'aider par avance, je ne vois vraiment plus où chercher !
 

YANN-56

XLDnaute Barbatruc
Re : ListView avec Item_Click Objet introuvable

Bonjour Compress, et à ceux qui passeront par ici,

Je n'ai pas encore téléchargé ton Fichier, mais je vais regarder de près.

En premier lieu la mise au Format de ton SubItem ne peut pas fonctionner.
Il faudrait seulement te préoccuper du sien, et non de celui de la feuille.

Amicalement, et à plus tard,

Yann
 

YANN-56

XLDnaute Barbatruc
Re : ListView avec Item_Click Objet introuvable

Re Compress

Je n'ai pas pu m'appuyer sur ton fichier, car il y a beaucoup trop d'écritures qui m'échappent.

Petites remarques au passage:

Il faut éviter d'utiliser les Noms ressemblants à ceux de Windows. Ex: "Temp" pour ta Feuille.
Tu as des cellules au format "Négatif" ???

Je te joins donc un exemple reconstruit te montrant la mise en forme des Items et SubItems de la ListView.
Le TextBox n'a aucune mise en forme particulière; il ne fait que suivre.

En espérant que cela pourra t'aider,

Amicalement,

Yann
 

Pièces jointes

  • FORMAT_LV.xls
    37 KB · Affichages: 149

Compress

XLDnaute Occasionnel
Re : ListView avec Item_Click Objet introuvable

Merci Yann,

pour le format du subitem je ne comprends pas j'ai également essayé cela juste pour voir :

Appliquer un format dans une "cellule de la listview
Vba

ListView1.ListItems(2).ListSubItems.Add , , Format(1234567.89, "##,##0.00")



Troucer dans un tutorial "Utiliser le contrôle ListView en VBA Excel sur un site assez connu d'Excel, et même cela ne fonctionne pas.

Je te remercie pour le temps que tu consacres à la résolution de mon problème.

Amicalement, Allan.
 

Compress

XLDnaute Occasionnel
Re : ListView avec Item_Click Objet introuvable

J'ai bien regardé ton code, et je ne comprends pas la différence entre ces deux lignes (tienne et mienne) :

VB:
.ListItems(.ListItems.Count).ListSubItems.Add , , Format(ActiveSheet.Cells(i, j).Value, "0.00") (ton code)

.ListItems(.ListItems.Count).ListSubItems.Add , , format(ActiveSheet.Cells(i, 3).Value, "0.00") (mon code)

Et bien évidemment la mienne bug toujours avec la même erreur sur le format.
 

YANN-56

XLDnaute Barbatruc
Re : ListView avec Item_Click Objet introuvable

Bonsoir Compress, et à ceux qui passeront par là,

L'ajout d'un SubItem n'est possible que lors de l'initialisation de la ListView. (Dans le sens ponctuel)

Par la suite, il est possible de venir modifier l'un des existants ainsi:

Code:
Me.ListView1.ListItems(2).ListSubItems(2).Text = Format(1234567.89, "##,##0.00")
(Soit avec "=" et non un "Add")

Dans la pratique, il faudra mettre en mémoire l'item que l'on a sélectionné, car ce ne sera pas toujours le deuxième.

A noter que les SubItems vides vont avoir un encadrement désagréable du genre "xlHairline"
quand une ligne est sélectionnée.

Il est donc préférable de mettre un caractère quelconque (Voire "?" ou "-") pour l'éviter,
quand il y a une cellule vide dans la base de données.

Hi,Hi! Je me dis que si cela était fait sur le front pour les neurones, on pourrait repérer les c...
(Désolé; je n'ai pas pu m'empêcher)

Il me semble que cela fonctionne aussi avec un " " ou un Alt+255, mais je n'ai pas réitéré mes essais.

Comme j'ai toujours pensé qu'un exemple valait mieux que des encadrés de codes;
je joins une nouvelle version où j'ai adapté la procédure et ajouté un Bouton.
(Sauf que pour montrer l'inconvénient des vides; je n'y ai pas pallié)

Amicalement,

Yann

P.S.
Désolé, je n'avais pas vu ton Post précédent.

Code:
.ListItems(.ListItems.Count).ListSubItems.Add , , format(ActiveSheet.Cells(i, 3).Value, "0.00") (mon code)

Sauf plus ample informé; tu n'a que deux colonnes dans ta ListView.Ceci expliquant cela.:confused:
 

Pièces jointes

  • FORMAT_LV_1.xls
    40 KB · Affichages: 145
Dernière édition:

Compress

XLDnaute Occasionnel
Re : ListView avec Item_Click Objet introuvable

Merci Yann,

pour le moment, je n'arrive toujours pas à implémenter tes solutions, donc j'ai trouver le subterfuge d'utiliser Round() c'est pas forcément très joli mais ça donne le résultat que je souhaite obtenir.

Je continue de regarder et tester pour mettre en place tes solutions...

En tout cas, je te remercie pour ton aide et le temps consacré à mon problème.

Bonne journée.
 

YANN-56

XLDnaute Barbatruc
Re : ListView avec Item_Click Objet introuvable

Bonsoir Compress, et à ceux qui passeront par ici,

Là tu commences à m'énerver! :mad:

Il est bien évident que le "Round (Mon Nombre ,2)" va l'arrondir à deux décimales!
Sauf que dans ta ListView tu auras un SubItem de "10" pour 9,999 et non "10,00"

Je ne pige pas pourquoi tu ne parviens pas à adapter mon dernier exemple à ce que tu cherches.
(Plus simple: "Dur, Dur!)

Si tu souhaites que je poursuive à t'aider;
montre-moi où, en ayant ajouté ou modifié une ligne, cela ne marche pas comme tu veux.


Si tu pompes sans comprendre un morceau de code, et que tu le colles dans ta procédure,
tu auras toutes les chances de te planter.
(Une appli c'est souvent comme un sous-marin. il suffit qu'un seul hublot soit entr'ouvert pour que Plouf!)

Restons simples, et oublie pour l'instant l'ensemble de ton projet.

Il faut avancer pas à pas.

Je veux bien corrigé une page, mais un dictionnaire imaginaire... Non!

Amicalement,

Yann
 

Bebere

XLDnaute Barbatruc
Re : ListView avec Item_Click Objet introuvable

bonjour Compress,Yann
dans module2 tu as une sub format()
à éliminer(ne jamais employé un mot clé comme nom)
pour cette ligne
.ListItems(.ListItems.Count).ListSubItems.Add , , format(ActiveSheet.Cells(i, 3).Value, "0.00") (mon code)
tu peux écrire
.ListItems(.ListItems.Count).ListSubItems.Add , , ActiveSheet.Cells(i, 3).text
à bientôt
 

YANN-56

XLDnaute Barbatruc
Re : ListView avec Item_Click Objet introuvable

Bonjour Bebere, à ceux qui passeront par là (Dont, je l'espère, Compress)

Bebere:): O.K. avec ta remarque relative à l'utilisation de ".Text" plutôt que ".Value"
Mais si le format des cellules pompées n'est pas en "Nombre à deux décimales"; on revient à la case départ!

Mon allusion aux mots à proscrire était surtout dans le cadre d'une recherche dans tout un projet.
(Et aussi de ne pas brouiller la lecture des codes)

Ex: Le mec fait une appli pour la gestion d'un magasin de dessous féminins.
Il a une Feuille "DIM". Son projet a cinquante modules et 10 USF..... Il n'a pas fini de faire "Suivant":D

Dans le projet présent, je ne vois pas le risque d'exécuter une commande "Format"

Par ailleurs; dans le cas d'une écriture faite dans une feuille nouvellement créée,
on va avoir à se farcir la mise en forme de je ne sais combien de colonnes, lignes ou cellules ponctuelles.

Ceci étant dit, Merci pour ton avis qui est certainement bien utile et à retenir pour d'autres cas.

Amicalement,

Yann
 

Habitude

XLDnaute Accro
Re : ListView avec Item_Click Objet introuvable

Bonjour Yann et les autres

Pour ton premier problème
mettre ceci a la place

Code:
Private Sub ListView1_ItemClick(ByVal Item As MSComctlLib.ListItem)

    Me("TextBox" & 5) = Item.ListSubItems(1).Text
    Me("TextBox" & 6) = Item.ListSubItems(3).Text
    Me("TextBox" & 7) = Item.ListSubItems(5).Text
 
End Sub

La fonction ItemClick recoit en paramètre l'item sur lequel tu as clické

pour ton 2ieme problème, tu es entre bonne main avec Yann
 

Discussions similaires

Statistiques des forums

Discussions
312 095
Messages
2 085 253
Membres
102 837
dernier inscrit
CRETE