Supprimer une ligne dans une ListView ?

Bonjour à tous,

J'ai 2 ListView, j'envoie 1 ligne d'une ListView à l'autre et vice versa.

De la ListView2 la ligne se copie bien dans la ListView1 s'efface bien de la ListView2, mais ça me crée un doublon dans la listView1.

Cela vient certainement du fait que dans le sens inverse, La ligne se copie effectivement de la ListView1 vers la ListView2, mais ne s'efface pas de la ListView1.

Je n'arrive pas à résoudre ce problème.

Auriez vous une idée d'où vient ce problème ?

Merci de l'aide que vous voudrez bien m'apporter...

Mon fichier :

Bonjour

Avec l'instruction Remove. Vous avez cette ligne dans la macro Private Sub btn_DesinscrireDuConcours_Click()
Le souci est que vous relancez InitListe dans le code d'inscription. Sans trop chercher, je ne vois d'ailleurs pas pourquoi vous videz toute la listview1 et que vous la remplissez à nouveau

Cordlalement

Merci Dan,

J'ai supprimé l'appel à "InitListe "", 1", mais si je supprime aussi "InitListe1" plus rien ne rentre dans ma ListView2.

E le conservant, J'ai bien mon transfert vers la ListView2, et la suppression de la ligne dans la ListView1, jusque la cet parfait.

Là ou ça se gâte, c'est au retour, La ligne ne revient pas dans la ListView1 et ne s'efface pas de la ListView2.

En tout cas, Merci encore, j'ai déjà fait un pas en avant...

Je suis sur ce problème depuis hier matin et râle de ne pas trouver de solution.

HELP...! svp...

Mon fichier rectifié :

Là ou ça se gâte, c'est au retour, La ligne ne revient pas dans la ListView1 et ne s'efface pas de la ListView2.

Vous parlez de l'annulation ? si oui, essayez en modifiant ce code

Private Sub btn_DesinscrireDuConcours_Click()
With ListView1
    .ListItems.Add , , ListView2.SelectedItem
    .ListItems(.ListItems.Count).ListSubItems.Add , , ListView2.SelectedItem.ListSubItems(1)
    '.ListItems(.ListItems.Count).ListSubItems.Add , , ListView2.SelectedItem.ListSubItems(2)
    '.ListItems(.ListItems.Count).ListSubItems.Add , , ListView2.SelectedItem.ListSubItems(3)
    '.ListItems(.ListItems.Count).ListSubItems.Add , , ListView2.SelectedItem.ListSubItems(4)
    '.ListItems(.ListItems.Count).ListSubItems.Add , , ListView2.SelectedItem.ListSubItems(5)
End With
ListView2.ListItems.Remove (ListView2.SelectedItem.Index)
End Sub

Je dois vous dire que j'ai un peu de mal à comprendre le pourquoi de certaines lignes
la listview1 ne contient que deux Nom et prenom. Dans le code proposé ci-dessus on a donc besoin que de deux lignes et pas de 6 (j'ai désactivé les lignes 3 à 6)

Les items sont rajoutés en bas de la listeview1

Merci dan,

Ce code viens d'un ancien fichier et je l'ai importé tel quel dans celui-ci...

J'ai essayé, ça fonctionne uniquement sur la 1ere ligne du LisView2, cad que si je ne rentre qu'une ligne, le transfert se fait parfaitement, la ligne s'efface, elle se replace au bon endroit dans la ListView1... Parfait.

Pour ça, il a fallu que je garde ("InitListe "",1") actif

Par contre si je rentre plusieurs lignes, et que je sélectionne la 3eme par exemple, C'est toujours la première qui disparait, mais toutes les lignes retournent ensemble dans la ListView1, Les lignes restantes ne sortent plus de la ListView2.

Par contre si je rentre plusieurs lignes, et que je sélectionne la 3eme par exemple, C'est toujours la première qui disparait, mais toutes les lignes retournent ensemble dans la ListView1, Les lignes restantes ne sortent plus de la ListView2.

Pouvez vous donner un exemple car HYMVBTQ (le 3ieme) et je clique sur annulation cela me supprime bien cet item

Ce code viens d'un ancien fichier et je l'ai importé tel quel dans celui-ci...

Il serait bon de repasser un peu tous les codes dans cette usf

Merci Dan,

C'est ce que je suis entrain de faire, mais même si j'ai déjà réglés quelques problèmes, là, J'avoue que je suis un peu dépassé...

C'est pour ça que je demande de l'aide au forum, car je suis conscient que je n'y arriverai pas tout seul.

Chez moi le problème reste celui que je t'ai décrit plus haut.

Je continue a chercher.

Si d'autres bonnes âmes veulent aussi m'aider, je suis preneur...

Bonjour,

il est bien courageux Dan...
J'ai ouvert, 9 feuilles, 10 modules, 3 UF.
Aucune indication sur lequel est concerné (je l'ai trouvé en fouillant...), de comment le lancer, des actions à faire pour avoir le pb et j'en oublie certainement.
J'ai refermé et vais aider qq'un qui prend la peine de décrire son soucis et n'attend pas qu'on va passer 10 min à essayer de deviner.
Je suis un fainéant et je l'assume
eric

Edit : au final, je pense que tu es plus fainéant que moi en fait

Bonsoir eriiic,

Tu dis que je ne fait rien qu'attendre qu'on règle le problème pour moi....

N'en crois rien, ça fait deux jours maintenant que je cherche et crois moi j'ai vraiment essayé de régler le problème par moi-même.

Mais mes connaissances en VBA ne sont pas à ton niveau, et si je viens sur le forum, c'est que j'ai besoin de vous.

Si je n'ai pas été assez précis dans ma demande, n'aurait-il pas été plus élégant de me demander plus de détails.

Surtout que pour trouver le problème il suffisait de faire "Edition => Rechercher => LisView1" .... ou d'entrer directement dans le code de la ListView.

Ca t'aurais éviter tout le travail que tu as fourni pour trouver le code...

Alors avant de traiter les gens de fainéants .....

Merci pour ta participation.

Tu dis que je ne fait rien qu'attendre qu'on règle le problème pour moi....

Je n'ai pas dit ça.
J'ai dit que quand tu postes un pb, il faut donner tous les éléments et ne pas compter sur le fait qu'on va essayer de deviner ce que tu n'as pas dit.
Ou aller à la pêche aux renseignements.
On n'a pas forcément envie de passer du temps à chercher ou ça se passe pour s'apercevoir qu'on ne peut pas aider sur ce coup.
Dans un précédent topic tu avais cité les UF en cause, je t'avais indiqué quel était le pb.
D'ailleurs tu avais annoncé désactiver menu.Select qui provoque une erreur à l'ouverture, c'est toujours pareil...
Maintenant, fais comme tu veux, c'est toi qui vois

Si d'autres bonnes âmes veulent aussi m'aider, je suis preneur...
Et bien fait tout pour motiver, ou accepte de te passer d'une partie des helpers.
eric

Bonjour,

Je vois qu'il y a eu des échanges là.... sur le fond Eric n'a pas tord. Comme Eriic j'ai ouvert les modules, les usf,.... et c'est assez compliqué de s'y retrouver dans le fichier qui est devenu un peu "une usine à gaz" tant il y a ses instructions qui ne semblent pas utiles voire des macros qui sont positionnées à des endroits bizarres.

C'est ce que je suis entrain de faire, mais même si j'ai déjà réglés quelques problèmes, là, J'avoue que je suis un peu dépassé..

Je comprends d'où je pense qu'il faut revoir certains codes et simplifier ci et là.
1. Exemple dans l'usf inscription :
- La sub initialize comporte deux captions. Au final c'est le caption Annulation qui apparait toujours à l'ouverture
- Pourquoi utilisez vous un sub activate ? On peut faire tout dans la sub initialize d'autant que si j'ai bien vu vous n'appelez jamais l'usf Inscription depuis une autre USF.

2. Autre point : votre feuille Membre est au format structuré. Est-ce qu'actuellement vous avez uniquement les membres mentionnés à savoir donc 51 lignes ?

3. Important !!! est-ce votre bon fichier que vous avez posté ??

Je suis conscient que cela sort hors du cadre précis de votre demande mais je peux regarder ce qui est à modifier si vous le désirez.

Merci de répondre aux 3 points cités plus haut

Bonjour Dan et Eriiic,

Bien sûr que Eriiic a raison, mais après 2 jours de recherches infructueuses j'avais le cerveau en ébullition, je l'ai un peu mal pris et je m'en excuse ...

Eriiic, j'espère que tu ne m'en tiendra pas rigueur...

Dan, Je vais déjà voir les 3 points que tu a relevé, et je reviens soumettre mes modification à votre expertise si vous êtes d'accord...

Merci pour votre indulgence.

Dan, Je vais déjà voir les 3 points que tu a relevé, et je reviens soumettre mes modification à votre expertise si vous êtes d'accord...

Ok. J'ai déjà modifié certains codes dans cette USF.
Dans l'attente de votre retour

Cordialement

EDIT :
1.
j'aimerais aussi savoir le pourquoi de votre dernière colonne dans la feuille Membres. Il semble que vous mettiez un X. Quelle est la raison et comment doit-on appeler cette colonne ?
2. je vous donnerai aussi les lignes de codes à modifier pour votre usf_gestion pour vous éviter les deux boucles DO (trop compliqué cela)

Bonjour Dan et Eriic

Voila, j'ai passé beaucoup de temps à essayer de rendre mon fichier plus clair:

- Jai viré les captions qui ne servaient a rien

- J'ai viré la "Sub Activate", merci Dan

- J'ai viré après moult vérifications les modules en excès

- J'ai viré toutes les ligne en commentaire des procédures qui ne me servaient plus

- J'ai renommé les modules pour uniformiser leur nom

- J'ai rétabli le codename des feuilles qui n'étaient appelées dans le code

- J'envisage de le faire pour les autres, mais je vais y aller avec prudence pour ne pas mettre le cde en défaut

La dernière colonne sert à recevoir la date d'inscription, je l'ai renommée comme telle et réaffectée à la "txt_DateJour" du UserForm "Gestion".

Et oui dan, je veux bien que tu m'oriente sur les simplifications à apporter à mon code.

J'apprécierais également le coupe de main que tu me propose pour le faire....

Merci encore...

Mon fichier:

22club-de-boules.xlsm (235.08 Ko)

ok. Hum....

Mais je n'avais pas besoin de votre nouveau fichier car comme je vous l'ai ecrit j 'ai pas mal modifié le premier.

pour votre info, le souci de la suppression en cas d'annulation est résolu.

Pour la dernière colonne, en voyant le code c'est plutôt un X qu'une date qui était prévue à cette colonne. Quid ?

j'attends toujours reponse sur le point 2 de mon post précédent.

Merci dan pour votre réponse rapide,

Pour la 2eme question, Je n'ai pas bien compris le terme de "structuré", voulez vous dire sous forme de tableau ?

Et la liste des membres doit être variable (Le club s'agrandi peu a peu).

et je voudrais que le programme puisse servir même sur des clubs plus importants.

La dernier colonne est dédiée au dates d'inscriptions dans le club. dans mon nouveau fichier, je l'ai déjà réaffectée à la "txt_DateJour".

Je vous l'ai envoyé pour que vous, si vous le voulez bien, y jetiez un coup d'oeil et que vous me disiez si ce que j'ai fait est cohérent...

Sans que cela ne vous prenne trop de temps.

Merci de votre patience...

Bonjour

Pour la 2eme question, Je n'ai pas bien compris le terme de "structuré", voulez vous dire sous forme de tableau ?

Vous avez mis votre tableau au format structuré en cliquant sur l'icone "Mise au format structuré"

Et la liste des membres doit être variable (Le club s'agrandi peu a peu).

La question était de savoir si vous aviez plus de membres actuellement que dans le tableau. Là votre tableau prévoit des lignes jusque 73 et vous n'avez que 51 membres.
1. Dans un tableau structuré vous ne pouvez pas avoir de lignes vides. Un tableau structuré doit toujours être limité au nombre de lignes renseignées. Donc là, je vous suggère de :
- supprimer les lignes vides 52 à 73 sur votre fichier
- changer le nom "Tableau2" dans le gestionnaire de noms au profit de "TMembres" par exemple ou "TabMembres". Dites moi juste ce que vous choisissez comme nom et si vous avez supprimé les lignes

2. Dans la feuille Inscriptions, ne devriez-vous pas ajouter une colonne pour la référence ID du nom que vous avez dans la colonne A de la feuille membres.

3. Dans la Private Sub InitListe1(), vous mettez une référence couleur en L2 de la feuille Data (on se demande d'ailleurs le pourquoi de cette cellule en couleur). La couleur doit changer ? il est plus simple de définir la couleur de fond en utilisant le code VBA approprié

4. Dans le code Private Sub InitListe(nom, C), je ne vois aucune utilité à mettre nom et C puisque vous chargez la liste depuis la liste membres en fonction de la colonne 17. Dans cette ligne, pourquoi mettre un X puisque vous me parlez de Date dans cette colonne. Je vous en ai parlé précédemment

If UCase(Sh1.Cells(L, C).Value) Like UCase(nom) & "*" And Sh1.Cells(L, 17).Value <> "X" Then

Je suppose que la listview est chargée des noms si vous avez une date d'inscription en colonne 17. Dans ce caw, a ligne devient

If Sh1.Cells(L, 17).Value <> "" Then

Merci de répondre point par point sans me repostez votre fichier, je modifie celui que j'ai en travail.

Bonjour Dan,

Pour répondre à vos questions :

1 - J'ai fait ce format en cliquant sur "Mettre sous forme de tableau" pour avoir une esthétique, et parce que j'ai lu quelque part qu'il était préférable de le faire...

Est-ce une bonne chose ou pas ?

Actuellement, on a environ 65 membres, mais on espère attirer plus de monde.

Pour le nom du tableau, "TabMembres" me parait parfait. J'ai supprimé les lignes vides et l'ai nommé.

2 - Pour la colonne "ID" de la feuille "Inscriptions", je ne sais pas si je dois imprimer la liste des joueurs au départ de celle-ci…

d'autant plus qu' il nous arrive souvent de faire jouer des gens extérieurs au club dans des concours ouvert à tous, ou d'organiser des rencontres inter clubs...

Ces joueurs seront enregistrer au concours via le userform "usf_NonMembre", et n'auront bien entendu pas d'ID.

J'avais pensé faire un tirage aléatoire, avec attribution d'un nouveau N° dans une nouvelle feuille "Liste Concours" qui aurait pour titre "Liste des joueurs du concours du "Date du jour"".

Qu'en pensé vous ?

3 - La cellule de couleur dans la feuille "Data" n'a aucun intérêt à mon souvenir, je l'ai supprimé.

4 - Le "X" dans la colonne 17 vient d'une erreur d'affectation de ma par que j'avis oublié de réparer, c'est chose faite à présent.

Cette colonne est bien destinée à recevoir la date d'incription envoyée depuis la "txt_DateJour" du UserForm "usf_Gestion " et doit être renommée "Date Inscription", je l'ai fais de mon coté.

En ce qui concerne la "Private Sub InitListe(nom, C)", si vous jugez que ça ne sert à rien, supprimez ce qui est inutile…

Voilà, j'espère ne rien avoir oublié, et vous remercie encore du travail que je vous donne…

Point 1 :
- Mettre sous forme de tableau, c'est une bonne chose. Maintenant cela modifie le code mais je vais l'adapter
- je vais adapter le nom dans le fichier

Point 2 :

- Pour l'ID je vous en ai parlé parce que votre listview2 l'inclu (même si cachée). Cet ID devrait être identique à celui de la feuille membre. Lorsque vous annuler une inscription dans la listview2, il faut aussi l'annuler dans la feuille Inscription. Pour cette suppression il est préférable de se fier à l'ID plutôt qu'à la position dans la listview2. Vous comprenez ?

Edit : Pour les nom membres, rien ne vous empêche de créer automatiquement un ID bidon via l'usf, genre I1, I2, ... lors de l'inscription (I étant la lettre de INVITE). ou peut être une autre lettre genre NM (nom Membres)

Point 3:
- cette couleur servait dans la Private Sub InitListe1() pour mettre la couleur de fond dans la listview2. On peut s'éviter cela en mettant le code couleur directement dans le code.

Point 4 :
- On est d'accord que si pas de date, on ne reprend pas le nom dans la listview 1. Juste ?

Bonsoir Dan,

Pour l'ID, OK j'ai compris et je vous fais confiance...

Pour l'ID des joueurs non membres NM1, NM2, NM3, etc... me parais plus parlant pour faciliter la lecture...

Pour la date : il y a forcément une date dans la colonne pour tous les membres du club, puisque inscrite automatiquement par la TextBox "txt_DareJour".

Pour les joueurs non membres, bien entendu ce n'est pas nécessaire puisqu'on les inscrits via le UserForm "usf_NomMembre".

je compte d'ailleurs supprimer ce UserForm et intégrer l'enregistrement des joueurs non membres dans le UserForm "usf_Inscription" en me servant du bonton "Inscription joueur non membre" pour élargir "usf_Inscription".

A droite de la ListView2 on trouvera 2 texBox (Nom, Prénom), 2 Boutons d'option (Homme, Femme), 3 cases a cocher (Titeur, Milieu, Pointeur), 1 bouton Enregistrer, un bouton Annulation et un bouton Fermer qui cachera cette partie du UserForm.

Merci pour votre ténacité, bonne soirée...

Rechercher des sujets similaires à "supprimer ligne listview"