Si ListView2.ListItems().SubItems(1) = zero [Résolu]

sancho12345 131 Messages postés jeudi 21 mai 2009Date d'inscription 18 mars 2012 Dernière intervention - 1 mars 2010 à 17:35 - Dernière réponse : Claiyah 580 Messages postés mercredi 20 août 2008Date d'inscription 20 avril 2010 Dernière intervention
- 2 mars 2010 à 17:58
Bonjour à tous,


Pourriez-vous m?aider pour ce petit problème.

J'ai une listview2 avec dans :

ListView2.ListItems().Add() des références
ListView2.ListItems().SubItems(1) des chiffres.

Comment faire pour que si ListView2.ListItems().SubItems(1) = 0(zero le chiffre) effacer la ligne complète ?


Merci d'avance.
Afficher la suite 

Votre réponse

22 réponses

Meilleure réponse
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 1 mars 2010 à 23:05
3
Merci
trop,k c'est trop ...
regarde ce que tu as écrit (ainsi que ce que j'ai mis en regard, en commentaires) :

For r = ListView1.ListItems.Count - 1 To 0 Step -1
i = 0 ' <<<<<==== a quoi diable sert cette variable i ? Tu ne l'utilises d'ailleurs pas !
If ListView1.ListItems(r).SubItems(1) <> "0" Then '<<<=== à quoi diable sert cette condition, puisque tu n'en fais rien ?

Else

While Not (ListView1.ListItems(r).SubItems(1) <> "0")


ListView1.ListItems.Remove (r) ' <<<=== ah ? et tu le supprimes combien de fois, cet index r ? autant de fois que de subitems ?

i = i + 1 '<<<<===  voir plus ghaut ! à quoi diable sert ce compteur avec i ?

Wend

End If
Next


Tu voudras bien s'il te plait comprendre qu'il ne s'agit pas d'animosité de ma part, mais tout simplement de la prise de conscience de ce que ce que tu attends est le code tout fait, sans même le comprendre (exactement comme tu n'analyses déjà pas la portée de ce que tu écris toi-même).
Si je faisais ce que tu attends, je te rendrais le pire des services et tu n'avancerais ensuite que de cette manière : en demandant, en copiant, en collant ... (ce n'est là ni mon but ni ma tasse de thé).
Désolé
____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est

Merci ucfoutu 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de ucfoutu
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 1 mars 2010 à 18:15
0
Merci
Nonjour,
lorsque tu frappes dans ton code :
listview2.listitems.
apparaît une petite fenêtre de propositions, parmi lesquelles la méthode Remove !
si tu frappes alors Remove ===>>
listview2.listitems.remove suivi d'un espace, apparaît alors une seule proposition : "(Index)"
Cela ne te parle pas ?
____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
Commenter la réponse de ucfoutu
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 1 mars 2010 à 18:20
0
Merci
D'une manière plus générale :
La méthode remove(index) s'applique à toute collection.
Listitems est une collection. Subitems est également une collection

____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
Commenter la réponse de ucfoutu
sancho12345 131 Messages postés jeudi 21 mai 2009Date d'inscription 18 mars 2012 Dernière intervention - 1 mars 2010 à 18:34
0
Merci
Merci pour ta réponse,


Voilà le code que j'ai tapé
Mais il ne fonctionne pas comme je veux.



Petite précision le sorted de la listview2 est à False.


Dim r As Long


For r = 1 To ListView2.ListItems.Count
If ListView2.ListItems(r).SubItems(1) = "0" Then
ListView2.ListItems.Remove (r)

Else
Exit For

End If
   Next




As-tu une idée.


Merci.
Commenter la réponse de sancho12345
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 1 mars 2010 à 18:50
0
Merci
Si j'ai une idée ?
B& ... oui ...
Tu écris :
Else 
  exit For
end if

Ce qui veut dire que ta boucle est quittée dès le 1er ListView2.ListItems(r).SubItems(1)<> 0
Tu plaisantes ?


____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
Commenter la réponse de ucfoutu
sancho12345 131 Messages postés jeudi 21 mai 2009Date d'inscription 18 mars 2012 Dernière intervention - 1 mars 2010 à 19:20
0
Merci
Désolé mais je ne plaisante pas.

A quel endroit dois-je mettre exit for pour que cela fonctionne ?

Si je le supprime il y a un message « index hors limite » ?


Merci.
Commenter la réponse de sancho12345
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 1 mars 2010 à 20:46
0
Merci
Je crois vraiment que tu plaisantes !
1) Le contraire serait extrêmement inquiétant ! (réfléchis un peu... un tout petit peu... un milliardième de chouïa... Quand même ! quitter une boucle ainsi, probablement dès le 1er r... et s'étonner de son non fonctionnement ... C'est tout sauf la démonstration de la compréhension de ce que l'on fait .... Je dirais même sans la moindre hésitation que c'est carrément du n'importe quoi ... Excuse-moi, mais il n'y a pas d'autres mots et il faut qu'ils soient dits, désolé !)
2) tu as un message "index hors limite" et ta "remèdee" consiste à quitter dès la 1ère valeur différente de 0, hein ? Tu te rends compte de ce que tu fais ? Oui ? Non ? (je m'interroge sérieusement sur le sérieux qui est le tien !). ===>> sui c'est là le genre de remède que tu privilégies, j'en connais un autre, moi... ne pas faire de boucle, ne pas faire de test.... et tiens .0.. ne pas faire d'appli !
3) son 1er indice étant 0, une listview de 2 articles a :
- pour ListView2.ListItems.Count : la valeur 2
- pour indices : l'indice 0 et l'indice 1 (donc listview2.listitems.count -1) et non 2
Lis, relis, re-relis tout ce que je viens d'écrire et sors vite (j'espère) de ton mirage !
Sui, malgré tout cela, tu ne t'(en sors pas, pardonne-moi, mais à défaut de te retrouver totalement seul, tu ne m'auras personnellement plus à tes côtés (c'est ainsi !)

Désolé de me montrer aussi sec, aussi dur... mais je ne trouve pas d'autre moyen pour te sortir de ce que j'appelle sans hésitation : une torpeur effrayante !
Bonne chance.



____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
Commenter la réponse de ucfoutu
sancho12345 131 Messages postés jeudi 21 mai 2009Date d'inscription 18 mars 2012 Dernière intervention - 1 mars 2010 à 21:53
0
Merci
Non malheureusement je ne plaisante pas !

1)Tu as une manière bien étrange d'aider les gens, d'autant plus que tu m?as aidé plus fois sur VBFRANCE sans jamais te mettre en boule sans raison ? ( Je ne vois pas l'intérêt)
2)Concernant mon sérieux n'est aucun doute vu mon métier je n'ai pas droit à l'erreur.
3)Pour moi la programmation c'est très récent et cela reste une manière de décompresser, à mon avis tu prends cela trop au sérieux(Fait attention à l'ulcère)

Bonne soirée.
Commenter la réponse de sancho12345
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 1 mars 2010 à 22:08
0
Merci
Ce n'est quand même pas difficile dse lire et de comprendre !

For r = 1 To ListView2.ListItems.Count - 1


____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
Commenter la réponse de ucfoutu
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 1 mars 2010 à 22:09
0
Merci
pardon (l'énervement ...) :
For r = 0 To ListView2.ListItems.Count - 1


____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
Commenter la réponse de ucfoutu
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 1 mars 2010 à 22:17
0
Merci
Et de surcroît : quand on supprime dans une boucle for to next (dit mille et une fois) : on commence àpar le bas et on remonte (de sorte à éviter de tomber sur un index qui n'existe plus, c'est évidentr) ===>> donc ===>>
For r = ListView2.ListItems.Count - 1
to 0 step -1

____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
Commenter la réponse de ucfoutu
sancho12345 131 Messages postés jeudi 21 mai 2009Date d'inscription 18 mars 2012 Dernière intervention - 1 mars 2010 à 22:44
0
Merci
Merci à toi de continuer à m?aider.

Effectivement cela fonctionne mieux.

Par contre si t?envoie mon code car j'ai un problème.

Si la dernière référence contient un zéro alors il n'est pas supprimé ?

As-tu une idée ?

Private Sub Form_Load()

' Initialisation Listview1
With ListView1
.MultiSelect = True ' Sélection de plusieurs lignes
.HideSelection = False ' Même sans le focus, la sélection reste
.FullRowSelect = True ' Sélectionne la ligne entière
.GridLines = True ' Affiche les lignes de la grille
.View = lvwReport ' Affichage en grille
'--------------------------------------------------------------------------
.ColumnHeaders.Add ' Ajout d'une colonne
.ColumnHeaders.Add ' Ajout d'une colonne

.ColumnHeaders(1).Text = "Réfèrence " ' Spécifie la caption de la première colonne
.ColumnHeaders(1).Width = .Width / 4
.ColumnHeaders(2).Text = "GGGGG" ' Spécifie la caption de la deuxième colonne
.ColumnHeaders(2).Width = .Width / 4

.Arrange = lvwAutoLeft ' Range tout à gauche
End With




' Chargement de la Listview 1
Set Lview = ListView1.ListItems.Add()
With Lview
.Text = "Test"
.SubItems(1) = "0"

End With


Set Lview = ListView1.ListItems.Add()
With Lview
.Text = "zozo5"
.SubItems(1) = "0"

End With

Set Lview = ListView1.ListItems.Add()
With Lview
.Text = "Titi"
.SubItems(1) = "3"

End With

Set Lview = ListView1.ListItems.Add()
With Lview
.Text = "zozo"
.SubItems(1) = "1"

End With

Set Lview = ListView1.ListItems.Add()
With Lview
.Text = "Test"
.SubItems(1) = "0"

End With

Set Lview = ListView1.ListItems.Add()
With Lview
.Text = "Titi"
.SubItems(1) = "7"

End With

Set Lview = ListView1.ListItems.Add()
With Lview
.Text = "BiBi"
.SubItems(1) = "0"
End With

End Sub

Private Sub Command6_Click()
On Error Resume Next


Dim r As Long

For r = ListView1.ListItems.Count - 1 To 0 Step -1
i = 0
If ListView1.ListItems(r).SubItems(1) <> "0" Then

Else

While Not (ListView1.ListItems(r).SubItems(1) <> "0")


ListView1.ListItems.Remove (r)

i = i + 1

Wend

End If
Next

End Sub




Merci
Commenter la réponse de sancho12345
sancho12345 131 Messages postés jeudi 21 mai 2009Date d'inscription 18 mars 2012 Dernière intervention - 1 mars 2010 à 23:13
0
Merci
Oui effectivement cette variable ne serve à rien ainsi que ce compteur,


Merci bien pour ta patience, mais voilà je ne suis peut être pas fait pour la programmation ?


Bonne soirée
Commenter la réponse de sancho12345
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 2 mars 2010 à 08:11
0
Merci
mais voilà je ne suis peut être pas fait pour la programmation

Pas d'"accord !
Chacun d'entre nous est fait pour cette activité. Le cerveau lui-même passe tout son temps à ce "sport".
Pour le reste, ce n'est qu'une question de goûts, de couleurs, d'envie et de choix personnel.
Ce "sport" ne demande que de la réflexion et la volonté de réfléchir (au moins celle de ne faire que des pas dans le cadre d'un raisonnement et d'une logique - comme pour toute autre chose - !
Il te suffit de recommencer, mais par les bases et avec méthode !

____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
Commenter la réponse de ucfoutu
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 2 mars 2010 à 08:28
0
Merci
Mon conseil, Sancho :
- ré-apprends l'essentiel des bases
- force-toi à agir au maximum par toi-même. (Cesse de "solutionner" chaque difficulté par l'ouverture d'une discussion et la copie de ce que tu y récoltes).
Aide-toi au besoin par un crayon et une feuille de papier : utilise-les pour mettre noir sur blanc la logique (pseudo-algorithme) du mécanisme à mettre en oeuvre.
Utilise sans modération, )à chaque pas, ton aide en ligne (MSDN)
Prends l'habitude de ne solliciter une aide qu'en dernier recours et face à une difficulté "sortant de l'ordinaire ".
Lorsque tu reçois une aide : analyse-la à fond (à nouveau feuille de papier et crayon), jusqu'à ce qu'elle ne soit plus pour toi un simple ensemble étrange de lignes de codes ...
Voilà tout ! En d'autres termes : on ne devient pas footballeur en se contentant de regarder des matches à la télévision !
Je suyis certain de ce que tu peux y parvenir, si tu le VEUX !

____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
Commenter la réponse de ucfoutu
sancho12345 131 Messages postés jeudi 21 mai 2009Date d'inscription 18 mars 2012 Dernière intervention - 2 mars 2010 à 09:04
0
Merci
Merci pour tes conseils ucfoutu,

Tu as 1000 fois raisons je suis entièrement d'accord certes il me manque sûrement les bases mais dans mon cas et dans ce petit problème, le temps joue contre moi, c'est pour cette raison que j'ai sollicite VbFrance.

Mais tu sais je m?efforce déjà, et je passe beaucoup de temps a travailler seul mais il m?arrive quelques fois de tourner en rond !

Je lâche très rarement donc je n'ai aucun doute que je peux y parvenir.

Encore merci et bonne journée.
Commenter la réponse de sancho12345
Claiyah 580 Messages postés mercredi 20 août 2008Date d'inscription 20 avril 2010 Dernière intervention - 2 mars 2010 à 16:32
0
Merci
salut

dim r as long
for r = listview.listitems.count to 1 step -1
if listview.listitems(r).subitems(1) = "0" then listview.listitems.remove(r)
next


normalement c'est tout ce que tu cherche je vois pas pourquoi toute cette conversation


Quand on pose une question on est con 5 minutes,Quand on ne la pose pas on le reste toute sa vie
Commenter la réponse de Claiyah
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 2 mars 2010 à 17:23
0
Merci
J'espère pour lui, Claiyah, qu'il l'a déjà trouvée seul, cette syntaxe (il en avait tous les ingrédients) ...
Il est vrai que si cette syntaxe lui avait été donnée d'emblée (en dépit de ses tentatives sans sens), il aurait gagné du temps, mais aurait continuer, à chaque futur pas, à traiter la totalité de ses problèmes de la même "manière", sans jamais commencer à commencer à commencer à progresser.
Tu poses décidément un autre regard que moi sur la manière d'aider réellement à développer ...


____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
Commenter la réponse de ucfoutu
Claiyah 580 Messages postés mercredi 20 août 2008Date d'inscription 20 avril 2010 Dernière intervention - 2 mars 2010 à 17:32
0
Merci
si je me suis intervenu c'est parce que le sujet devient long et il parait qu'il est pressé lol
dans tout les cas j'espère aussi qu'il l'a trouvé seule
a+


Quand on pose une question on est con 5 minutes,Quand on ne la pose pas on le reste toute sa vie
Commenter la réponse de Claiyah
Claiyah 580 Messages postés mercredi 20 août 2008Date d'inscription 20 avril 2010 Dernière intervention - 2 mars 2010 à 17:33
0
Merci
et comme il a dit il est nouveau dans la programmation donc on fera mieux de l'aider et l'encourager et pas le contraire.
enfin sa reste mon avis personnel et chacun a sa propre manière de voire les choses



Quand on pose une question on est con 5 minutes,Quand on ne la pose pas on le reste toute sa vie
Commenter la réponse de Claiyah

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.