Microsoft 365 Problème avec une listview

  • Initiateur de la discussion Initiateur de la discussion Pat54
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Pat54

XLDnaute Nouveau
Bonjour et bon weekend à tous
Voici mon soucis, j'ai créer un Userform pour la gestion d'une association qui alimente une base de données (22 colonnes), dans le USF j'ai une listview dans laquelle je vois les éléments de la BD, mon soucis est lorsque je rajoute une personne ou que je modifie, lors de la validation çà me recopie les 22 colonnes donc je me retrouve avec 44 colonnes, puis 66, puis 88 etc etc dans la listview. Je n'arrive pas à trouver d’où vient le soucis.
Pour info je ne suis pas un expert en VBA mais je me débrouille et cherche a comprendre.
Si une âme charitable pourrait regarder mon fichier et me conseiller de la marche à suivre pour éliminer ce soucis.
Le code VBA dans ce fichier est ce qu'il est, il pourrait certainement être amélioré mais comme déjà dit avant de faire ce projet, je n'y connaissait rien en VBA.
Bien cordialement et merci d'avance a ceux qui voudront bien m'aider
 

Pièces jointes

Bonjour Pat54
peut être en effaçant les données ainsi que les Colonnes déjà présentes !
VB:
Function show_data_in_listView()
Dim r As Integer, c As Integer
Dim LastRow As Long
Dim li As Object
ThisWorkbook.Sheets("BaseDonnee").Activate
LastRow = Sheets("BaseDonnee").Cells(Rows.Count, 1).End(xlUp).Row
With ListView1
.View = lvwReport
.CheckBoxes = False
.FullRowSelect = True
.Gridlines = True
.ListItems.Clear 'Ici
.ColumnHeaders.Clear 'Ici
For c = 1 To 21
With .ColumnHeaders
.Add , , Sheets("BaseDonnee").Cells(1, c), Sheets("BaseDonnee").Cells(1, c).Width
End With
Next c
For r = 2 To LastRow
Set li = .ListItems.Add(, , Cells(r, 1))
For c = 2 To 21
li.ListSubItems.Add , , Cells(r, c)
Next c
Next r
End With
End Function
il est bien aussi de nommer tes Boutons et autres Controls avec des Noms adaptés à leurs Fonctions.
exemple
CommandButton1 en CBn_Enregistrer
Jean marie
 
Hello,
c'est normal car dans ta procédure show_data_in_listView tu ajoutes à chaque fois les colonnes de la listView :
VB:
For c = 1 To 21
With .ColumnHeaders
.Add , , Sheets("BaseDonnee").Cells(1, c), Sheets("BaseDonnee").Cells(1, c).Width
End With
Il faut que tu ne fasses cela qu'une seule fois, dans le Initialize par exemple.
Et puis soucis au singulier c'est souci . On peut avoir des soucis mais qu'en il y en a qu'un c'est souci.
Ami calmant, J.P
 
Bonjour Pat54
peut être en effaçant les données ainsi que les Colonnes déjà présentes !
VB:
Function show_data_in_listView()
Dim r As Integer, c As Integer
Dim LastRow As Long
Dim li As Object
ThisWorkbook.Sheets("BaseDonnee").Activate
LastRow = Sheets("BaseDonnee").Cells(Rows.Count, 1).End(xlUp).Row
With ListView1
.View = lvwReport
.CheckBoxes = False
.FullRowSelect = True
.Gridlines = True
.ListItems.Clear 'Ici
.ColumnHeaders.Clear 'Ici
For c = 1 To 21
With .ColumnHeaders
.Add , , Sheets("BaseDonnee").Cells(1, c), Sheets("BaseDonnee").Cells(1, c).Width
End With
Next c
For r = 2 To LastRow
Set li = .ListItems.Add(, , Cells(r, 1))
For c = 2 To 21
li.ListSubItems.Add , , Cells(r, c)
Next c
Next r
End With
End Function
il est bien aussi de nommer tes Boutons et autres Controls avec des Noms adaptés à leurs Fonctions.
exemple

Jean marie
Bonjour Jean Marie. Merci beaucoup pour ton aide, l'ajoute des ces 2 lignes à résolu mon souci. Pour un prochain projet, je penserai effectivement à nommer mes boutons correctement. Bon weekend 😉
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour