XL 2019 Optimisation d'un code VBA pour liste

im_Guillaume

XLDnaute Nouveau
Bonjour le forum,

J'ai actuellement un code qui permet de :
- Dans l'onglet liste : avoir un tableau de données (il va être dynamique, des lignes vont être ajoutées et enlevées dans la version finale)
- dans l'onglet choix : avoir le "catalogue" de chacune des colonnes et pouvoir choisir parmi ces options.

Malheureusement, dans mon document original, le tableau de données dépasse les 500 lignes. Cela m'affiche le message d'erreur suivant :
1645606076684.png

1645606083913.png

Puis quand je regarde le fichier journal :
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<recoveryLog xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"><logFileName>error104600_01.xml</logFileName><summary>Des erreurs ont été détectées dans le fichier « D:\mailing partenaires 2022 evolve6.xlsm »</summary><removedFeatures><removedFeature>Fonction supprimée: Validation des données dans la partie /xl/worksheets/sheet2.xml</removedFeature></removedFeatures></recoveryLog>

Comme si excel rencontrait un problème avec la validation des données dans l'onglet "choix"...

Je cherche donc à optimiser ce code pour qu'il fonctionne sur de grands tableaux. (Les fonctions doivent rester les mêmes au final)
Il fonctionne actuellement mais uniquement sur les "petits" tableaux.


La version actuelle du code est jointe ci-dessous.

Merci pour toute l'aide que vous pourrez m'apporter!
 

Pièces jointes

  • ex_forum.xlsm
    27.3 KB · Affichages: 9

im_Guillaume

XLDnaute Nouveau
voilà le document réel.

J'ai essayé de mettre le code de Patrick de façon à ce que dans les cases C11, D11, E11 et F11 de l'onglet "Moteur de recherche" on puisse avoir une liste déroulante pour chaque colonne des éléments respectivement dans les colonnes C, D, E F de l'onglet BDDsource.

J'ai juste un souci car il m'indique que la variable combo n'est pas déclarée (alors que dans le fichier de Patrick, ça fonctionne bien) 😏


Pour info :
Les codes de patrick ont été mis dans : Feuil2"moteur de recherche", "thisworkbook" et "Module4".
Le reste du code est pour d'autres choses qui ne nous concernent pas ici.
 

Pièces jointes

  • Empty_version_Patrick.xlsm
    230.7 KB · Affichages: 3

im_Guillaume

XLDnaute Nouveau
Avez vous ouvert mon dernier classeur ?
Les possibilités consistent en listes de ce qu'il reste à choisir dans les autres ComboBox. Mais ça suppose que tout est lié sinon rien n'a de sens.
Je viens de comprendre Dranred, désolé!
Effectivement, ta combobox est top et fonctionne bien mais est limite trop "intelligente" pour ce que je recherche. Il faut vraiment que les colonnes ne soient pas liées car l'utilisateur doit pouvoir se confronter à un choix qui n'existe pas dans la BDD.

Désolé encore pour cette incompréhension!
 

Dranreb

XLDnaute Barbatruc
Mais alors qu'entendez vous pour l'utilisateur par
les possibilités qu'il a dans chacune des listes
?
Ça ne veut donc pas dire tout ce qui est compatible dans une ou plusieurs lignes avec ce qu'il a déjà spécifié ? (Le problème où tout a été choisi mais ça correspond toujours encore à plusieurs lignes n'est toujours pas résolu)
Noter que même si tout est lié, on peut quand même encore prévoir des panachages exceptionnellement possibles en stoppant l'objet ComboBoxLiées. La méthode garnit en effet préalablement les listes des ComboBox dont il a la charge de tout ce qui existe dans la base.
 
Dernière édition:

im_Guillaume

XLDnaute Nouveau
Je prends ici l'exemple du document réel envoyé juste avant :

L'utilisateur choisit dans l'onglet "moteur de recherche" :
Dans la case C11 : un Département parmi ceux existants dans l'onglet BDDsource (de C11 à C429)
Dans la case D11 : un type de structure parmi ceux existants dans l'onglet BDDsource (de D11 à D429)
Dans la case E11 : une structure parmi celles existantes dans l'onglet BDDsource (de E11 à E429)
Dans la case F11 : un fonction parmi celles existantes dans l'onglet BDDsource (de D11 à D429)

chacun de ces choix par liste sont indépendants les uns des autres.
L'utilisateur peux ne pas remplir toutes les cases : il peut juste vouloir voir les données dans tels département (peu importe la structure/type de structure/fonction).

Il décide juste des critères qu'il va appliquer à la BDD.
 

im_Guillaume

XLDnaute Nouveau
Mais alors qu'entendez vous pour l'utilisateur par ?
Ça ne veut donc pas dire tout ce qui est compatible dans une ou plusieurs lignes avec ce qu'il a déjà spécifié ? (Le problème où tout a été choisi mais ça correspond toujours encore à plusieurs lignes n'est toujours pas résolu)
Noter que même si tout est lié, on peut quand même encore prévoir des panachages exceptionnellement possibles en stoppant l'objet ComboBoxLiées. La méthode garnit en effet préalablement les listes des ComboBox dont il a la charge de tout ce qui existe dans la base.
Justement, les critères que l'utilisateur remplit doit pouvoir correspondre à plusieurs lignes.
Ce document est en quelques sorte un "consulteur" de BDD. Mais pour y voir plus claire, l'utilisateur peut décider de ne voir que les lignes qui répondent à tel ou tel critère.
 

Dranreb

XLDnaute Barbatruc
Dans ce cas c'est plutôt dans une ListBox qu'il faudrait les afficher, et on n'a plus besoin de la feuille choix ?
Je peux vous faire ça si vous voulez.
Mais ce n'est pas utile de proposer des choix qui n'aboutiront surement à aucune ligne, n'est-ce pas.
Donc c'est bien lié. Dans votre vrai tableau, quel sont les titre de colonnes que vous voulez pouvoir sélectionner ?
 
Dernière édition:

im_Guillaume

XLDnaute Nouveau
Ne connaissant pas les options de box je ne peux pas être sûr mais effectivement la listbox semble correspondre.

L'idéal serait de tout de même avoir une feuille "choix" (ou plutot "moteur de recherche") car d'autres fonctions VBA sont déjà implantées à partir des cellules de cette feuille permettant derrière de trier la BBD puis d'afficher seulement les résultats voulus.

La listbox devrait donc apparaître lorsque l'utilisateur clique sur une des cases C11 à K11 dans l'onglet "moteur de recherche"

La listbox est remplie par l'utilisateur puis est validée. Les champs C11 à K11 sont alors remplis avec les éléments de la listbox.

Ce serait le déroulement idéal!
 

im_Guillaume

XLDnaute Nouveau
Voilà les colonnes du tableau :
1645625012820.png

Je souhaiterais pouvoir :
- sélectionner parmi une liste les éléments "Département", Type de structure", "Structure", "Fonction" et "Titre".
- la selection des "Prénom", "Nom", "mail", "bénéficiares" se fait manuellement par l'utilisateur.

C'est à dire que dans la listbox, l'utilisateur va sélectionner dans des listes les 5 premiers critères et va écrire les autres critères.

Exemple 1:

User cherche les éléments présents dans la Rhône: User va donc avoir la listbox, dans la liste "Départements", il va choisir "Rhône" et valider la listbox (en laissant le reste vide).
Rhône apparaît donc dans la case C11. Puis il lance la recherche et ça renvoie la BDD triée avec ce critère.

Exemple 2:

User cherche Les personnes qui s'appellent "Marie" : User va écrire, soit dans la listbox (je ne sais pas si c'est possible), soit directement dans la case H11 "Marie" (en laissant le reste vide).
Il valide la listbox (si il écrit dans la listbox).
Puis il lance la recherche et ça renvoie la BDD triée avec ce critère.
 

im_Guillaume

XLDnaute Nouveau
Mon vrai tableau et fichier de travail est celui-ci.
J'ai juste remplacé des infos par "-" dans l'onglet BDDsource pour des questions de confidentialité.
Mais l'emplacement des cellules, le titre des colonnes et tout le reste est vrai et bon.
 

Pièces jointes

  • Empty_version_Dranreb.xlsm
    226.5 KB · Affichages: 1

im_Guillaume

XLDnaute Nouveau
re
@im_Guillaume
Alors tout va bien
c'est ok pour moi 👍

Je reviens vers toi Patrick, je suis toujours en train d'essayer de comprendre pourquoi la variable comboNum n'est pas reconnue dans mon fichier. Aurais-tu une idée?


Je remets mon précédent message ci-dessous :) :

voilà le document réel.

J'ai essayé de mettre le code de Patrick de façon à ce que dans les cases C11, D11, E11 et F11 de l'onglet "Moteur de recherche" on puisse avoir une liste déroulante pour chaque colonne des éléments respectivement dans les colonnes C, D, E F de l'onglet BDDsource.

J'ai juste un souci car il m'indique que la variable combo n'est pas déclarée (alors que dans le fichier de Patrick, ça fonctionne bien...)


Pour info :
Les codes de patrick ont été mis dans : Feuil2"moteur de recherche", "thisworkbook" et "Module4".
Le reste du code est pour d'autres choses qui ne nous concernent pas ici.
 

Pièces jointes

  • Empty_version_Patrick.xlsm
    234 KB · Affichages: 0
Dernière édition:

Statistiques des forums

Discussions
311 716
Messages
2 081 828
Membres
101 823
dernier inscrit
mohamed3s