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
G

Guest

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

bonjour Yann,

Ne serait-ce pas plutôt:

Code:
Public WithEvents GROUPE_LISTVIEW[B][SIZE=3][COLOR=red] As MSComctlLib.ListView[/COLOR][/SIZE][/B]

A+
 

YANN-56

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

Bonjour Hasco,

et Merci d'avoir pris la peine de me répondre.

Je ne doute pas que c'est la solution,
mais dans le fouillis de mes essais et autres applis où j'ai utilisé
la création de groupes, je suis infichu de retrouver rapidement
comment créer ce groupe lors de l'établissement des ListViews.

Fainéant de nature j'abuse de ta gentillesse en te demandant de
Bien vouloir compléter mon fichier.

Si tu en as le temps et l'envie.

A force de tests et recherches, je finirai par trouver.
(Enfin j'espère)

En tous les cas je te remercie vivement.

YANN-56

P.S. Tu peux aussi m'appliquer ce proverbe chinois:
"Donne un poisson à un homme; il se nourrira ce jour.
Apprends lui à pêcher; il se nourrira toute sa vie"
 
G

Guest

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

Re,

Je te mets sur la piste:

Si le module de classe s'appelle: clsListeView
avec pour contenu:

Code:
Public WithEvents Le_LISTVIEW As MSComctlLib.LISTVIEW
Private Sub Le_LISTVIEW_Click()
 UserForm2.Label1.Caption = Le_LISTVIEW.SelectedItem.Text
End Sub

Il faudra déclarer quelque part:
Code:
Dim GroupeListeViews() as clsListWiew
Ensuite et ailleurs:
Code:
    ReDim Preserve GroupeListeViews() (0 To i - 1)
    Set groupeLv(i - 1) = New clsListeView
    Set groupeLv(i - 1).Le_LISTVIEW = liste_view

Et le tour est joué!

[Edit] petit plus:
Code:
If CLASSEURS_EXISTANTS.GetDetailsOf(ELEMENT, 2) [SIZE=3][COLOR=red]Like "Feuille*Excel*"[/COLOR][/SIZE] Then
s'adaptera aux versions office qui n'ont pas toutes la même description, pour les feuilles.

A+
 
Dernière modification par un modérateur:

YANN-56

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

Vingt Dieux Hasco !!!

Comme je regrette de t'avoir ajouté mon proverbe!

En plus de ton aide c'est coup de pied au cul que tu me donnes.
Comme le disait Gilbert BECAUD dans sa chanson
sur les enchères: combien Le coup de .... et c.

A te lire, j'ai conscience d'avoir été présomptueux
de penser que je trouverais tout seul
Je ne suis pas certain d'avoir tout pigé.
mais je vais retourner à mon classeur en carafe...
et tenter de réussir.

Qu'il est agréable de rencontrer ici
de personnes sympas comme toi.

Bonne soirée et plein de bonnes choses.

Espérant ne revenir sur ce fil que pour renouveler mon Merci.

YANN-56

P.S.
Semble-t-il j'ai une erreur de syntaxe ici:
ReDim Preserve GroupeListeViews()(0 To i - 1)
 
Dernière édition:

YANN-56

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

Bonsoir Hasco,

Je suis à la fois désolé et un peu honteux
de n'être pas très doué.

Je ne parviens pas à compléter correctement
les procédures de mon fichier tout seul.
Sans doute trop encore à apprendre!

Je te renouvelle mes Grands "Merci".

Il est vrai qu'a soixante balais; les choses rentrent moins bien,
comme disait ma copine. (En parlant de VBA, bien sur !)

YANN-56
 
G

Guest

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

Re Yann,

Alors, procédure:

Un tête de module de ton UserForm1 tu déclares:
Code:
Dim GroupeListeViews() as clsListWiew

Quant au module de classe 'clsListView' je pense que tu as su le créé, ou alors ce n'est pas toi qui a fait le travail que tu m'a donné.

Pour le reste tout ce joue dans la procédure du bouton de commande (les lignes en rouge)

Attention, j'ai changé la ligne d'ouverture des classeurs également, il y avait un bug( la ligne en orange)

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
For i = 1 To UserForm1.ListView1.ListItems.Count
    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)
[SIZE=3][COLOR=red]  ReDim Preserve groupeLv(0 To i - 1)[/COLOR][/SIZE]
[SIZE=3][COLOR=red]  Set groupeLv(i - 1) = New clsListeView[/COLOR][/SIZE]
[SIZE=3][COLOR=red]  Set groupeLv(i - 1).Le_LISTVIEW = liste_view[/COLOR][/SIZE]
          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
                    With .ColumnHeaders
                       .Add , , "ARTICLES", 100
                       .Add , , "ALLUSION", 100
                    End With
 
' OUVERTURE DES CLASSEURS POUR COPIER LES DONNEES
[SIZE=3][COLOR=orange]Workbooks.Add ThisWorkbook.Path & "\FOURNISSEURS\" & UserForm1.ListView1.ListItems(i).Text[/COLOR][/SIZE]
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
Next i
UserForm2.Show
End Sub

L'âge n'est pas une excuse, je suis pas loin derrière toi :D
A+
 

YANN-56

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

Et re re Hasco?
Quelle patience!!

Quant à ce que j'ai transmis comme fichier,
il est de ma pomme et comme je l'ai dit;
les autres boutons, Labels et c. ne me posent pas de problèmes.

Je suis en passe de comprendre comment tu procèdes.

Mais il me reste à résoudre le message d'erreur joint:
Je vais voir du coté des références cochées

Merci encore p'tit jeune:)

YANN-56
 

Pièces jointes

  • MESSAGE_ERREUR.jpg
    MESSAGE_ERREUR.jpg
    21.4 KB · Affichages: 118
  • MESSAGE_ERREUR.jpg
    MESSAGE_ERREUR.jpg
    21.4 KB · Affichages: 115
  • MESSAGE_ERREUR.jpg
    MESSAGE_ERREUR.jpg
    21.4 KB · Affichages: 118

YANN-56

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

Bonjour Hasco, et à ceux qui passeront par là,

En rebaptisant mon module de classe "clsListWiew'

Puisque dans ton aide précédente tu avais parlé de
"Quant au module de classe 'clsListView' "
et j'avais suivi. (Changement que je n'avais pas perçu)

Quant aux lignes:

ReDim Preserve groupeLv(0 To i - 1)
Set groupeLv(i - 1) = New clsListeView
Set groupeLv(i - 1).Le_LISTVIEW = liste_view

Je les ai traduites par:

ReDim Preserve GroupeListeViews(0 To i - 1)
Set GroupeListeViews(i - 1) = New clsListWiew
Set GroupeListeViews(i - 1).Le_LISTVIEW = liste_view


Maintenant, tout fonctionne ainsi que je le cherchais.

Merci à toi mille fois.
Car sans aide comme la tienne, j'étais vraiment mal barré!

Bonne fin de journée et Bravo pour ce que tu sais faire.

YANN-56

P.S.
Je joins le fichier modifié, au cas où cela puisse servir à quelqu'un.
 

Pièces jointes

  • ETUDES_2.zip
    31.6 KB · Affichages: 126

YANN-56

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

A Hasco:

J'ai bien reçu ton message privé.

Tu m'as charrié un p'tit peu. Taquin, n'est il pas?
Finalement tu as fait ce qu'il fallait pour que j'avance.

Ici l'on peut clore ce fil de discussion.

De Breizh à Breizh l'on ne peut que finalement se comprendre !!!

Au plaisir de te croiser ici.
 

MJ13

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

Bonjour Yann, Hasco

Moi, j'ai bien aimé ton fichier Yann et je remercie GES d'avoir pu te faire avancer.

En plus les modules de classes, j'en avais fait quand j"étais jeune, mais cela fait longtemps que je n'en ai pas réalisé.

Dans ta dernière version, c'est bizarre, quand on cliques dans l'USf sur un item, on a tout qui s'affiche dans le USF multipage. Est-ce normal?
 

YANN-56

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

Bonsoir MJ13, et merci pour ton regard,

Je n'ai pas constaté d'anomalie de ce genre;
mais je vais vérifier.

A dans quelques instants

YANN-56

Après vérification:

1- Quand je télécharge ce dernier fichier à partir d'ici;
j'ai un plantage immédiat à l'ouverture de l'USF!!! Etrange.
Alors que chez moi, avec l'original, cela marche...
(Hasco n'a pas rencontré ce problème, ainsi que toi puisque vous avez pu l'ouvrir)

2- Je ne pige pas ce que tu veux dire par:
"Il y a tout qui s'affiche dans l'USF multipage"
C'est quoi qui s'affiche, et qui ne le devrait pas?

Si Oui, Merci d'avoir déniché un problème.

Bonne fin de soirée.

YANN-56
 
Dernière édition:

MJ13

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

Bonjour Yann

Sur XL2003 et XL 2007, cela fonctionne bien.

Mais si je clique sur Fruits dans le Userform1, il m'ouvre le 2ème USF avecc les données Fruits Poissons et viandes.

C'est ce qui me semble bizarre.

Bon courage.
 
G

Guest

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

Bonjour Yann, Michel,

Michel a raison, j'avais noté la chose mais pensais que c'était en cours d'évolution.

Effectivement ton userForm1 suggère que l'utilisateur peut choisir dans la listeView, ce qu'il veut voir apparaître dans la deuxième UserForm. Or, quoique qu'il choisisse, toutes les catégories sont affichées dans la UserForm2 .

A+
 

YANN-56

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

Bonjour Hasco, MJ13, et à ceux qui passeront par là

En effet ce classeur n'était qu'un essai pour résoudre
mon ancien souci de groupe rencontré dans une appli en cours.
J'ai omis l'utilisation des CheckBoxes pour simplifier.

Après:
For i = 1 To UserForm1.ListView1.ListItems.Count

Il faut ajouter:
If UserForm1.ListView1.ListItems(i).Checked = True Then

Sans oublier bien sur le dernier "End If"

Quant à mon problème d'ouverture,
Il vient sans doute de l'incompatibilité de "Namespace"
en cas d'ouverture immédiate, sans avoir enregistré le dossier.

Je suis touché par votre spontanéité à vouloir m'aider.

Merci, et bonne journée.

YANN-56
 
Dernière édition:

Statistiques des forums

Discussions
312 504
Messages
2 089 086
Membres
104 023
dernier inscrit
zerarka mohamed