Groupe ListViews + Module de Classe avec "Public WithEvents". Est-ce Possible?

YANN-56

XLDnaute Barbatruc
Bonjour à ceux qui passeront par là.

Je crée à la volée des ListViews
(Par nécessité car leur nombre est aléatoire)

Pour pouvoir utiliser "Quand Double-Clic" sur un Item des Listes,
je suis obligé d' incérer celles-ci dans un Groupe et de définir
l'évènement dans un module de Classe.

Voici un nombre d'heures inavouable que je cherche en vain!!!
(Avec d'autres types de "Controls" cela fonctionne, mais ici...Ploufff)

Merci d'avance si quelqu'un peut m'aider, car là je suis totalement en panne.

YANN-56

Dossier joint pour comprendre mon souci.
 

Pièces jointes

  • ETUDES.zip
    29.8 KB · Affichages: 94
  • ETUDES.zip
    29.8 KB · Affichages: 82
  • ETUDES.zip
    29.8 KB · Affichages: 80

MJ13

XLDnaute Barbatruc
Re : Groupe ListViews + Module de Classe avec "Public WithEvents". Est-ce Possible?

Re Yann, Hasco

Excuse moi Yann, mais je l'ai plutôt fait comme cela (A tester):

Code:
Private Sub CommandButton1_Click()
 
'SUPPRESSION DES PAGES FORFAITAIREMENT EXISTANTES DANS LE MULTIPAGE DE L'USF2
Do While UserForm2.MultiPage1.pages.Count > 0
   UserForm2.MultiPage1.pages.Remove 0
Loop
 
'CREATION DES NOUVELLES PAGES SUIVANT LES CLASSEURS PRESENTS DANS LE DOSSIER FOURNISSEURS
'Stop
For i = 1 To UserForm1.ListView1.ListItems.Count
 
 'MsgBox UserForm1.ListView1.ListItems(i).Text
 If UserForm1.ListView1.ListItems(i).Checked = True Then GoTo suite Else GoTo suite2
 
suite:
Set PAGE_DU_CARNET = UserForm2.Controls("MultiPage" & 1).pages.Add
'ATTRIBUTION AUX ONGLETS DU MULTIPAGE DE LEUR NOM ISSU DES CLASSEURS PRESENTS
 UserForm2.Controls("MultiPage" & 1).pages(UserForm2.MultiPage1.pages.Count - 1).Caption = UserForm1.ListView1.ListItems(i).Text
                                            '"-1" Puisque la première page = "0"
 
 'CREATION DES LISTVIEWS
    Set liste_view = UserForm2.Controls("MultiPage" & 1). _
    pages(UserForm2.MultiPage1.pages.Count - 1).Add("MSComctlLib.ListViewCtrl.2", , True)
 
  ReDim Preserve GroupeListeViews(0 To i - 1)
  Set GroupeListeViews(i - 1) = New clsListWiew
  Set GroupeListeViews(i - 1).Le_LISTVIEW = liste_view
 
          With liste_view
           .Top = 6
           .Height = UserForm2.Controls("MultiPage" & 1).Height * 0.8
           .Left = 30
           .Width = 220
           .Gridlines = True
           .View = 3
           .CheckBoxes = False
           .MultiSelect = True
           .FullRowSelect = True '(Pour quand Clique même sur les SubItens)
                    With .ColumnHeaders
                       .Add , , "ARTICLES", 100
                       .Add , , "ALLUSION", 100
                    End With
 
' OUVERTURE DES CLASSEURS POUR COPIER LES DONNEES
Workbooks.Add ThisWorkbook.Path & "\FOURNISSEURS\" & UserForm1.ListView1.ListItems(i).Text
Worksheets("PRODUITS").Select
 
 'CHARGEMENT DES LISTVIEWS
  For j = 2 To ActiveSheet.Range("A65536").End(xlUp).Row
         .ListItems.Add , , ActiveSheet.Cells(j, 1).Value
         .ListItems(.ListItems.Count).ListSubItems.Add , , ActiveSheet.Cells(j, 2).Value
   Next j
          End With
 
 ' FERMETURE DES CLASSEURS
    If ActiveWorkbook.Name <> ThisWorkbook.Name Then
           ActiveWorkbook.Saved = True
           ActiveWorkbook.Close
    End If
suite2:
Next i
UserForm2.Show
End Sub
 

YANN-56

XLDnaute Barbatruc
Re : Groupe ListViews + Module de Classe avec "Public WithEvents". Est-ce Possible?

Merci pour ta suggestion MJ13 (Michel),

Je n'ai pas testé; mais c'est peut-être une façon d'accélérer la boucle
sur la liste de fournisseurs.

Pour tout dire, mon appli sert à passer des commandes.
Transmission par mail, édition et enregistrement dans le Dossier
du fournisseur situé dans un serveur (12 postes en réseau)
Par un autre biais, le chef de production précise l'état de celles-ci:
(Partiellement reçue ou reçue)
Les conducteurs de travaux suivent alors leurs appros,
ainsi que la compta et la direction.
+ Possibilité de fouiller dans les archives et faire des statistique,
ou inventaire et c.
De la même façon, les métreurs y trouvent nos prix d'achat pour leurs devis.
(Dans commandes précédentes ou base de données)

J'ai voulu créer le multipage car le souci est la relative lenteur de chargement
des données dans une seule ListView au coup par coup, comme cela est depuis trois ans..
(4 Fournisseurs principaux sur 52 avec entre 19000 et 23000 articles)

Pour chaque article;
Code, désignation, conditionnement, base de facturation, prix, et indexation
suivant l'habitude des articles commandés pour les mettre en tête de liste.
Aussi 19000 ou 23000 multiplié par 6 ou plus, cela demande du temps.

Donc l'utilisateur lance le chargement le temps du pipi du matin,
et suivant ses besoins de la journée (Sans allusion à ce qui précède)

Il ouvre l'application; choisi le fournisseur; double clique sur les articles
à commander, valide... et c'est parti...

Le "Hic" est qu'il ne doit pas fermer l'appli.
Le rêve serait de pouvoir le faire en enregistrant l'USF
avec ses ListView chargées.


J'ai sérieux doute que cela soit possible.

Si oui, je serais bigrement preneur (Of course)

Amicalement, et désolé d'avoir été si long.

YANN-56
 
Dernière édition:

MJ13

XLDnaute Barbatruc
Re : Groupe ListViews + Module de Classe avec "Public WithEvents". Est-ce Possible?

sBonjour Yann

Merci pour ces précisions.

Il est vrai que c'était intéressant, comme en plus, il y avait des modules de classes, des Userforms multipages et des Listviews que je n'utilse jamais, c'était bien la l'occasion de voir de quoi il en retournais.

Sinon pour ce que tu fais il y a aussi les filtres élaborés qui sont très performants et les filtres de type SQL ODBC.

Bonne journée.
 

YANN-56

XLDnaute Barbatruc
Re : Groupe ListViews + Module de Classe avec "Public WithEvents". Est-ce Possible?

Bonjour Michel, alias MJ13,
sans oublier ceux qui passeront par là.

C'est quoi:
Les filtres élaborés qui sont très performants et les filtres de type SQL ODBC ?

Pour info, j'ai une autre méthode qui consiste à copier la page
du classeur de données dans une feuille temporaire du classeur maître.
180000 Cellules ou plus instantanément.
L'avantage est de ne pas mobiliser le fichier à ouvrir. (Serveur)
Mais cela ne change rien au temps de chargement des ListViews.

Pour ce qui est d'enregistrer l'Userform en l'état avant fermeture,
il me semble bien avoir vu un truc du genre par ici.

Mon doute subsiste, mais je poursuis mes recherches.

Amicalement,
et bonne jounée.

YANN-56
 

YANN-56

XLDnaute Barbatruc
Re : Groupe ListViews + Module de Classe avec "Public WithEvents". Est-ce Possible?

Merci pour ton lien, Michel,

Aujourd'hui ce n'est pas mon sujet.
Je ne pratique pour l'instant de requêtes que pour des pages Web.

J'ai apprécié tes interventions.
Et je t'en remercie vraiment beaucoup.

Au plaisir de te croiser ici un de ces jours.

Amicalement, avec mes voeux de bonne
fin de journée et bonne fin de semaine.

YANN-56
 

Statistiques des forums

Discussions
312 505
Messages
2 089 070
Membres
104 017
dernier inscrit
annboi19