Pb Listview dans userForm

  • Initiateur de la discussion Initiateur de la discussion Byfranck
  • 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 !

Byfranck

XLDnaute Occasionnel
Bonsoir à tous,


J'ai trouvé comment créer des listBox grâce à un exemple qui me convient tout à fait.. mais ça ne marche pas chez moi.

Voila comment fonctionne ma base de donnée:
je lance l'USF7 qu contient la ListBox de puis l'USF1 avec:
Code:
Private Sub CommandButton14_Click()

UserForm7.Show

End Sub

Ma feuille de donnée s'appelle Feuil1
dans l'USF7 j'ai:

Code:
Private Sub UserForm_Initialize()
Dim i As Long, sNom As String
    Sheets("Feuil1").AutoFilterMode = False
    With ListView1
        With .ColumnHeaders
            .Clear
            .Add , , "Nom", 120
            .Add , , "Parenté", 50
            .Add , , "TEST", 40
        End With
        .View = lvwReport
        .FullRowSelect = True
        .Gridlines = True
        Application.ScreenUpdating = False
        Sheets("Feuil1").Select
        i = Sheets("Feuil1").Range("A65536").End(xlUp).Row
        Sheets("Feuil1").Range("A1:BM" & i).Select
        Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlYes, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
        Sheets("Feuil1").Cells(1, 1).Select
        sNom = ""
        For i = 3 To Sheets("Feuil1").Range("A65536").End(xlUp).Row
            If Sheets("Feuil1").Cells(i, 1) <> sNom Then
                .ListItems.Add , , Sheets("Feuil1").Cells(i, 1)
                .ListItems(.ListItems.Count).ListSubItems.Add , , Sheets("Feuil1").Cells(i, 3)
                .ListItems(.ListItems.Count).ListSubItems.Add , , Sheets("Feuil1").Cells(i, 2)
                sNom = Sheets("Feuil1").Cells(i, 1)
            End If
        Next
        ListView1.ListItems(1).Selected = False
        Set ListView1.SelectedItem = Nothing
    End With
    Sheets("Accueil").Select
Application.ScreenUpdating = True
End Sub

Private Sub ListView1_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader)
Application.ScreenUpdating = False
    ListView1.Sorted = False
    ListView1.SortKey = ColumnHeader.Index - 1
    
    If ListView1.SortOrder = lvwAscending Then
        ListView1.SortOrder = lvwDescending
        Else
        ListView1.SortOrder = lvwAscending
    End If
    ListView1.Sorted = True
Application.ScreenUpdating = True
End Sub

Private Sub CommandButton1_Click()
Unload Me: Sheets(1).Activate
End Sub


quand je click sur le bouton 14 dans l'USF1 j'ai immédiatement:
Erreur d'exécution "9"
L'indice n'appartient pas à la sélection

Le débogueur stoppe sur UserForm7.show dans l'USF1

ça c'est le 1er problème😱

Pour essayer de m'en sortir avec une base simple, j'ai recréé un Excel pour essyer de voir ce qui se passe ..
là c'est encore mieux le bouton lancer (test) de l'USF1 ... ne lance rien du tout

Si une âme chairitable pouvait voler à mon secour !!


Cordialement @+
Franck
 

Pièces jointes

Re : Pb Listview dans userForm

Salut,

là c'est encore mieux le bouton lancer (test) de l'USF1 ... ne lance rien du tout
Ah bon ....
Mais je ne vois pas de bouton "Lancer" dans ton fichier 😕

Mais qu'est-ce que c'est que se biiiiiinse

Ah, c'est peut-être celui dans l'USF1 mais il ne s'appelle pas "Lancer" !?

En tout cas dans ton USF1, ton code se trouve dans
Code:
Private Sub CommandButton4_Click()
    UserForm2.Show
End Sub

Alors que le nom de ton bouton est : CommandButton14
Donc ton code devrait être :
Code:
Private Sub CommandButton14_Click()
    UserForm2.Show
End Sub

Comment veux-tu que ça fonctionne !?

Clique droit sur un objet te permet d'accéder à son code ou à ses propriétés

A+
 
Dernière modification par un modérateur:
Re : Pb Listview dans userForm

Salut,


Ah bon ....
Mais je ne vois pas de bouton "Lancer" dans ton fichier 😕

Mais qu'est-ce que c'est que se biiiiiinse

Ah, c'est peut-être celui dans l'USF1 mais il ne s'appelle pas "Lancer" !?

A+

Ouups! désolé Bruno!

😀 ça y est J'ai fait un peu dodo .... ça devrait aller un chti peu mieux!

Bon on reprend depuis le début .... une petit RAZ donc 😛

Ci-Joint un fichier exemple de ce que je n'arrive pas à faire tourner.

=> un bouton de lancement dans USF1 qui ouvre USF2 dans slequel il y a une Listview.
Outre le pb de la Listview qui fait certainement ce que je lui demande .. c'est à dire autre chose que ce que je veux (zarivepas à lui faire lire à partir de la ligne 8 sans mettre le pagaille dans ma base!).. le bouton qui lance l'USF2 me plante au lancement.
Moi pas comprendre pourquoi! 🙁

Une idée?


Merci d'avance
 

Pièces jointes

Re : Pb Listview dans userForm

Salut ByFranck,

Comme c'est là, tu ne connais pas le mode déboggage 😕

Bon petite leçon, lorsque tu cliques sur ton bouton "Départ"
Tu as un message d'erreur qui s'affiche avec 2 boutons "Fin" et "Débbogage"
Tu cliques sur ce dernier
Ta ligne
Code:
UserForm2.Show
se met en jaune
Pour exécuter le code pas à pas il suffit d'appuyer sur F8
La ligne d'exécution passe ensuite à
Code:
Private Sub UserForm_Initialize()
Tu continues par F8, etc ....
Tout va bien, tu arrives sur ta boucle
Code:
For i = 3 To Sheets("Feuil1").Range("A65536").End(xlUp).Row
Comme tu n'as pas envie de te taper toute la boucle ligne par ligne
Tu mets un "Point d'arrêt" grace à la touche F9 sur la ligne
Code:
ListView1.ListItems(1).Selected = False
celle qui se trouve en dessous de la boucle
Pour cela tu cliques avec ta souris sur la ligne en question et tu appuies sur F9
Celle-ci passe en couleur avec un rond sur le bord de la ligne
Pour passer la boucle tu cliques sur le petit outils "Play" ou CTRL+F8
La boucle est passée toujours aucun soucis 😛😕
Tu appuies alos sur F8 et là PAF
Code:
Sheets("Accueil").Select
Message d'erreur à ce niveau

Et là tu te dis Ce lien n'existe plus qu'est-ce que je peux être bête 🙄
Ben oui la feuille "accueil" n'existe pas donc je ne peux pas la sélectionner

De plus dans ton USF2, comme ton USF1 est ouvert en modal
Tu peux supprimer "UserForm1.Show"
Code:
Private Sub CommandButton1_Click()
Unload Me
End Sub

😀 A+
 
Dernière modification par un modérateur:
Re : Pb Listview dans userForm

RE,

Voici ton code modifié
La sélection de feuille ou de cellule n'est pas nécessaire pour récupérer des valeurs, donc j'ai supprimé les lignes

Code:
Private Sub UserForm_Initialize()
  Dim i As Long, sNom As String
  Dim DerLig As Long, Lig As Long, Sht As Worksheet
  ' Définir la variable objet pour la feuille contenant la BdD
  Set Sht = Sheets("Feuil1")
  Sht.AutoFilterMode = False
  ' Avec la List View
  With ListView1
    With .ColumnHeaders
      .Clear
      .Add , , "Nom", 70
      .Add , , "critère3", 40
      .Add , , "critère1", 40
    End With
    .View = lvwReport
    .FullRowSelect = True
    .Gridlines = True
    ' Mémoriser la dernière ligne du tableau
    DerLig = Sht.Range("A65536").End(xlUp).Row
    ' Trier à partir de la ligne 8 jusqu'à la dernière
    Sht.Range("A8:BM" & DerLig).Sort Key1:=Sht.Range("A8"), Order1:=xlAscending, Header:=xlNo, _
                                     OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
    sNom = ""
    ' Pour chaque ligne
    For Lig = 8 To DerLig
      If Sht.Range("A" & Lig) <> sNom Then
        .ListItems.Add , , Sht.Range("A" & Lig)
        .ListItems(.ListItems.Count).ListSubItems.Add , , Sht.Range("B" & Lig)
        .ListItems(.ListItems.Count).ListSubItems.Add , , Sht.Range("C" & Lig)
        sNom = Sht.Range("A" & Lig)
      End If
    Next
    ListView1.ListItems(1).Selected = False
    Set ListView1.SelectedItem = Nothing
  End With
  Set Sht = Nothing
End Sub

A+
 
Re : Pb Listview dans userForm

.... Bon sang que je suis bête !!

Super merci (pas de me le faire remarquer .. mais de ton aide!)

Bon alors je note soigneusement sur un bristol les explication concernant le débogueur 🙂😉

C'est fait. (sauf que F9 me met un "espion" c'est peut être normal?)

J'ai donc remplacé acceuil par Feuil1. et plus de plantage

Maintenant c'est ce bouton qui pose problème:
Private Sub CommandButton1_Click()
Unload Me: UserForm1.Show
End Sub
..
Je me suis dit Unload = décharger .. j'ai remplacé UserForm1 par UserForm2
Plus d'alarme .. mais je tourne en boucle sur l'USF2 quand je clique sur le bouton.

Moi ce que je voudrais c'est refermer l'USF2 et rester avec l'USF1 à l'écran. (dans ma vraie base de donnée l'USF1 est plein écran et on ne voit donc pas la Feuil1)😕
C'est grave docteur?

Pi en plus comme dans cet exemple je vois ma Feuil1 .. je me rend compte que mes valeurs se sont déplacées .. et ça pas bien du tout !

Cordialement
 
Re : Pb Listview dans userForm

Bonjour,
Tu n'est pas obligé de trier tes données avant de les afficher ensuite dans la listview, il suffit de l'inclure dans le code (autant en profiter !); vois comment retrouver rapidement le numéro de ligne sans rechercher dans la base, si ensuite tu veux faire des modifs par exemple.
Je ne vois pas à quoi sert le filtre en l'état actuel, donc explication bienvenue
(sNom = ?)
Outre les pb déjà évoqués, tes données commencent à la ligne 9 et non pas 2
A+
kjin
 

Pièces jointes

Re : Pb Listview dans userForm

Un grand MERCI à Bruno et à Kjin pour ce coup de main!

j'arrive à afficher mon USF avec la listView.
maintenant je cherche à trouver comment on selectionne une ligne et lancer l'ouverture d'un autre USF qui conrient toute les données de ligne sélectionnée...
actuellement cela fonctionne avec un ListBox .. j'ai bien essayé de remplacer ListBox par ListView ... mais ça n'a pas l'air de suffire!
 
Dernière édition:
- 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

  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
250
Réponses
3
Affichages
599
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
79
Réponses
2
Affichages
405
Réponses
4
Affichages
362
Retour