OutIdx. Macro complémentaire, modules de classe et indexation

Dranreb

XLDnaute Barbatruc
Re : OutIdx. Macro complémentaire, modules de classe et indexation

La référence "Microsoft Scripting Runtime", à ajouter aux référence du projet VBA (Menu Outils, Références) offre une assistance à la programmation des Dictionary (dont elle définit ce type) et des exécutions plus rapides (liaisons précoces, résolues au moment de la compilation et non de l'exécution, aux méthodes et propriétés de l'objet)
 

ChTi160

XLDnaute Barbatruc
Re : OutIdx. Macro complémentaire, modules de classe et indexation

Bonsoir
Merci pour ces infos
Bonne fin de Soirée
Amicalement
Jean Marie
 

Dranreb

XLDnaute Barbatruc
Re : OutIdx. Macro complémentaire, modules de classe et indexation

Bonjour à tous.

Il y a bien longtemps que je ne suis plus intervenu sur ce fil.
Je n'ai pas encore joint, toujours pour la même raison, la version actuelle de OutIdx, dont j'ajuste pourtant régulièrement certains détails. Je la joindrai néanmoins quand même ainsi que le DémoOutIdx (mais sans démo pour ComboBoxLiés) s'il se fait connaître parmi vous un candidat intéressé. Il sera alors cité dans le 1er message, avec renvoi à celui où il aura joint ses versions .xlsm des deux classeurs.

Ce qu'il y aurait à faire :

1 - Je ne pense pas que des ajustements soient nécessaires pour simplement les enregistrer en .xlsm et ensuite utiliser OutIdx dans d'assez bonnes conditions. Mais si jamais c'est le cas, naturellement, ces ajustements doivent y être faits.

2 - La méthode Plage des modules de classes ComboBoxCasc et ComboBoxLiés attend actuellement un paramètre As Range. Il faudrait sans doute le mettre Variant de façon à ce qu'il puisse accepter soit un Range soit un fameux ListObject. Ce dernier devrait aussi pouvoir être accepté dans les arguments de MDictionnArbo.CréerTableau. Et vérifier si pas ailleurs aussi.
Si c'est néanmoins un Range d'une ligne qui est spécifié, mais qu'il appartient à un ListObject, adopter le Range de celui ci comme propriété PlgTablo des modules de classes ou, dans d'autre contextes, comme plage à traiter.

3 - Pour les modules de classes uniquement. Vérifier qu'il n'y aurait nul inconvénient à imposer carrément le ListObject. Auquel cas s'il est spécifié à Plage un Range de plusieurs lignes n'appartenant pas à un ListObject, ce dernier serait créé automatiquement par cette méthode. Le paramètre NouvellePlage de la méthode Actualiser pourrait alors être supprimé. Utilit.PlgUti aussi.

Tout ceci ne serait évidemment pas forcément la seule chose, ni à appliquer à la lettre, tel que je l'expose de mon point de vue inévitablement imparfait. Il s'agit, plus généralement, d'optimiser OutIdx pour son utilisation en les nouvelle versions d'Excel.

Alors ?… Un volontaire ?
Si vous avez une compétence certaine en VBA, deux cas feraient de vous un bon candidat:
1 - L'affaire vous apparait passionnante.
2 - Vous avez installé OutIdx en tant que programme complémentaire, l'avez ajouté aux références de quelques classeurs d'applications finales et appréciez de bénéficier de ses fonctionnalités.

Amicalement.
 

david84

XLDnaute Barbatruc
Re : OutIdx. Macro complémentaire, modules de classe et indexation

Bonjour,
cela fait maintenant quelques temps que notre ami Dranreb, Alias Karl CUBRENT, alias Bud CLARKNER nous fait partager ses modules de classe (de grande classe même !) au gré des discussions ouvertes sur le forum. Pour ma part je suis à la recherche de la dernière mouture du module TableIndex, alors Dranreb, si tu passes par là :)...
A+
 

Dranreb

XLDnaute Barbatruc
Re : OutIdx. Macro complémentaire, modules de classe et indexation

Bonsoir.

Voici l'état actuel de OutIdx.xls.
Je le joins exceptionnellement dans ce poste et non dans celui en tête de la discussion où je ne suis plus intervenu depuis longtemps, car je ne suis pas absolument sûr que le DémoOutIdx.xls lui soit encore parfaitement compatible, qu'il ne contient de toute façon pas de démo pour ComboBoxLiés ni pour GroupOrg, et parce que l'utilisation de OutIdx en programme complémentaire (IsAddin) avec référence à son projet ne semble pas intéresser grand monde. Cela permettra de plus aux (très) curieux de repérer les détails de son évolution. Mais j'y puise fréquemment des modules que j'implante dans les classeurs des demandeurs, dont le module de classe TableIndex qui en est le dispositif central.

Bien cordialement.
 

Pièces jointes

  • OutIdx.xls
    846 KB · Affichages: 128
  • OutIdx.xls
    846 KB · Affichages: 151
  • OutIdx.xls
    846 KB · Affichages: 155

david84

XLDnaute Barbatruc
Re : OutIdx. Macro complémentaire, modules de classe et indexation

Bonjour,
merci beaucoup pour ces pépites.
Je regarde ton fichier dès que je peux y consacrer le temps nécessaire et ne manquerai pas de te faire part de mes questionnements et idées éventuels.
A+
 

fhoest

XLDnaute Accro
Re : OutIdx. Macro complémentaire, modules de classe et indexation

Bonjour Dranreb,

Ton complément outidx, m'intéresse mais je n'arrive malheureusement pas à l'utiliser.
si je copie le bout de code du usf dans le 1er module de classe Excel plante.
Quel est la marche à suivre avec un exemple simple pour pouvoir utiliser et apprécier ton bijoux.
Je te remercie par avance et te souhaite ainsi qu'à tous un très bonne année 2014.
A bientôt.
 

Dranreb

XLDnaute Barbatruc
Re : OutIdx. Macro complémentaire, modules de classe et indexation

Bonjour.
Précise ce que tu essaie de faire. S'agit-il bien de l'utilisation comme complément dans un autre classeur ou d'y implanter des modules qui en sont repris ?
Peut tu joindre le classeur, là ce n'est pas bien clair.
P.S. En tout cas il n'y a rien à changer dans la programmation des modules de OutIdx pour les utiliser, ni en extraire des instructions. Tout se fait par paramétrage des éléments à traiter. Alors je ne sais pas ce que tu essaie de copier dans quoi.
 
Dernière édition:

fhoest

XLDnaute Accro
Re : OutIdx. Macro complémentaire, modules de classe et indexation

Bonjour Dranreb,

Après quelques essais des premières combobox, j'ai réussi a utiliser ton petit bijoux,je vais approfondir et voir pour tester les différentes fonctionnalités.
je reviendrai vers toi.
Un grand merci pour ce jolie travail et ce partage.

A bientôt.
 

Dranreb

XLDnaute Barbatruc
Re : OutIdx. Macro complémentaire, modules de classe et indexation

Bonjour.
Je me suis aperçu qu'il manquait dans le module NouvInstances une fonction pour pouvoir utiliser un objet déclaré As OutIdx.ListesLiées depuis un autre projet ayant OutIdx dans ses références :
VB:
Public Function LstLiées() As ListesLiées
Set LstLiées = New ListesLiées
End Function
C'est un objet récent et je ne l'avais utilisé jusqu'ici que par implantation du module de classe dans les classeurs des demandeurs. Pour l'autre truc récent, un OutIdx.SsGroup, pas besoin normalement car seul OutIdx.MClassement.GroupOrg sait renvoyer une collection de ces objets.

Amicalement.
 

fhoest

XLDnaute Accro
Re : OutIdx. Macro complémentaire, modules de classe et indexation

Bonjour Dranreb,
Merci pour cette nouvelle fonction que j'ai bien évidemment ajouté.
Je vais aller doucement,
Une première question:
sans tenter dans un premier temps de comprendre l'entièreté du code,
Pourrais tu m'expliquer la différence entre le premier module de classe en cascade et le deuxième liés,car avec ma très petite DB.test j'obtiens le même résultat.
cette différence est dans le code ou dans le fonctionnement,n'ai je pas compris quelque chose ?

Merci
Au plaisir.
 

Dranreb

XLDnaute Barbatruc
Re : OutIdx. Macro complémentaire, modules de classe et indexation

Le module de classe ComboBoxLiés autorise des choix dans un ordre quelconque, tandis que le ComboBoxCasc ne permet que les choix dans l'ordre où les ComboBox ont été spécifiés aux Add. En revanche il peut être un peu plus rapide car il n'utilise qu'un seul dictionnaire arborescent à plusieurs niveaux, et on est sûr que le 1er propose toujours tous les choix possibles dans toute la base. Pour un ComboBoxLiés je conseille la mise en place d'un bouton "Effacer" qui exécute sa méthode Nettoyer.
 

fhoest

XLDnaute Accro
Re : OutIdx. Macro complémentaire, modules de classe et indexation

Bonjour Dranreb,
Ok,pour les explications,merci.
J'ai suivi ton conseil,mais j'ai une erreur ça doit venir de moi.
je fais appel à la méthode comme ceci:
Code:
Private Sub CommandButton1_Click()
OutIdx.CbxLiés.Nettoyer
End Sub
l'indice n'appartient pas à la sélection,je fais un pas à pas et je tombe sur cette ligne.
Code:
Public Sub Nettoyer(Optional ByVal Index As Long = 1)
Rem. —— Nettoie les ComboBox à partir du 1er de la liste par défaut ou d'un autre de rang spécifié.
Dim I As Long
SExécuteDéjà = True
For I = Index To UBound(TCBM) '****************** avec Ubound(TCBM)= -1 ******************
With TCBM(I).CBx: .Text = "": .Clear: End With
   Next I
SExécuteDéjà = False
CBM_Change TCBM(1) ' Nimporte lequel en fait.
End Sub
Tu peux m'expliquer ou est l'erreur svp ?

A+
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : OutIdx. Macro complémentaire, modules de classe et indexation

Bonjour.
Il ne faut pas employer la méthode sur une nouvelle instance de ComboBoxLiés mais sur celle qui est utilisée dans l'Userform et qui a été déclarée WithEvents au début !
Par exemple :
VB:
Private Sub BtnEffacer_Click()
CBL.Nettoyer
End Sub
Je vais tâcher d'expliquer pourquoi ça me parait indispensable. Lorsqu'il n'existe qu'un seul choix possible dans un des ComboBox, celui ci y est assumé. Il peut en résulter une impossibilité de l'effacer car cette valeur y revient aussitôt. Quand aux autres ComboBox qu'il faudrait effacer d'abord pour que ça ne se produisent pas, ils peuvent être dans le même cas. Voilà pourquoi il me parait indispensable de mettre à disposition de l'utilisateur un bouton permettant d'effacer tous les ComboBox spécifiés aux Add en vue de recommencer une nouvelle série de choix. Pour un ComboBoxCasc ce n'est pas si crucial car il est toujours possible de repartir d'un autre choix du 1er ComboBox.
 
Dernière édition:

fhoest

XLDnaute Accro
Re : OutIdx. Macro complémentaire, modules de classe et indexation

Re bonjour,
merci pour cette précision,ça fonctionne.
Par contre si je peux me permettre une critique,
Lorsque je sélectionne un item dans ma première combobox
puis selon le filtre un item dans la seconde
Tout fonctionne à merveille, si je reviens sur ma première ,toute les combobox que je n'ai pas touché se rafraichisse,mais pas la deuxième.
est ce un oubli dans le code ou cela est il normal.
A+ ( veux tu que j'ouvre un fil pour toutes les questions concernant ton outil outidx ?)
 

Discussions similaires

Statistiques des forums

Discussions
315 096
Messages
2 116 183
Membres
112 677
dernier inscrit
Justine11