Extraire des données selon 2 critères

Mishai

XLDnaute Nouveau
Bonjour,

Je vous soumets mon besoin. Je précise que je suis à peu près une quiche en matière de macro et de VBA (les formules de calcul, c'est un peu mieux).

Dans un fichier Excel, j'ai une liste de plusieurs milliers de lignes, dont je voudrais, à la demande, extraire uniquement les enregistrements correspondant à 2 critères, sans toucher directement à ma liste d'origine.

J'imagine le fonctionnement suivant:

- Soit "BASE" le fichier qui contient la liste, que je ne dois pas modifier,

- Soit "RECHERCHE" un autre fichier Excel :

o à partir duquel je fais ma requête avec mes 2 critères, sur un formulaire qui a une tête sympa,

o et dans lequel je récupère les réponses à ma requête, présentées de manière sympa.

Et quand j'ouvre mon fichier "RECHERCHE", le formulaire de requête s'ouvre directement et est vierge, de même que le formulaire de résultat.

J'imagine que les 2 fichiers doivent avoir une liaison stable, et qu'il faut forcer l'ouverture du fichier "BASE" quand je lance la requête…sachant qu'il se peut qu'il soit déjà ouvert puisque tout ça sera multi-utilisateurs(oui, c'est pour mon boulot).

Je joins un fichier Excel avec une feuille contenant ma liste (donc contenu du fichier "BASE"), et une deuxième feuille contenant une idée des formulaires du fichier "RECHERCHE" (mais si c'est plus joli, je prends aussi).

Voilà. Quelqu'un peut-il m'aider ?
 

Pièces jointes

  • Mon besoin.xlsx
    26.6 KB · Affichages: 58

Mishai

XLDnaute Nouveau
Bonsoir Lone-Wolf

Merci encore pour ce travail remarquable et réalisé si rapidement. Les fonctionnalités que tu as créées fonctionnent parfaitement.

Et j'ai encore quelques questions, (rappel: je suis vraiment nul en VBA):

· En fait la base de données à partir de laquelle la recherche doit être faite existe et ne doit pas être modifiée (ni ajout, ni suppression, ni modification des enregistrements existants); je suppose que pour éviter ça, il suffit que j'enlève les boutons "Nouveau", "Modifier" et "Supprimer, ainsi que les lignes de code correspondantes ? (ça je pense pouvoir le faire seul).

· Pour ne pas prendre le risque que la base de données puisse être altérée, la recherche se fera dans un fichier Excel distinct de celui qui contient les données; j'imagine que pour gérer ça dans le code, il faut remplacer les appels à la feuille de calcul (shBase) par un appel à la feuille de calcul dans le fichier distinct avec son adresse complète, dans le gente "C:\*********\BASE.xlsx" où "BASE.xlsx" est le nom du fichier qui contient la base de données? (là je ne suis pas certain d'y arriver tout seul).

· Je n'ai pas trouvé comment activer le code pour que le formulaire s'ouvre automatiquement à l'ouverture du fichier qui le supporte ?

Bref, j'ai encore besoin de ton aide ...
 

Lone-wolf

XLDnaute Barbatruc
Bonjour Mishai

En ce qui concerne le 2ème point, oui il faut ajouter l'appel au classeur source. Pour l'appel du formulaire à l'ouverture du classeur, tu supprime le code qu'il y a dans la feuille Base. Dans le module de ThisWorkbook, tu ajoute ceci

Private Sub Workbook_Open()
UsfContacts.Show
End Sub
 

Lone-wolf

XLDnaute Barbatruc
Re

Le fichier en retour. Dans le module Initialiser, faudra changer le chemin du classeur source ainsi que le nom des feuilles qui sont dans le projet. Pour le nom des feuilles dans la fenêtre VBA, clique sur Edition > Remplacer. Rempli les cases Rechercher - Remplacer par; coche la case Projet en cours, puis sur Remplacer tout.
 

Pièces jointes

  • Mon besoin-1.xlsm
    514.6 KB · Affichages: 38
Dernière édition:

Mishai

XLDnaute Nouveau
Hem... je suis confus :confused:, mais j'ai été incapable de mettre en oeuvre correctement: le seul résultat que j'ai obtenu, c'est que la recherche se fasse sur la feuille "Base" du fichier "Mon besoin-1.xlsm", ce qui n'est pas très glorieux.
Alors, si ce n'est pas abusé , je te remets cette fois-ci 2 fichiers distincts, tels qu'ils seront nommés dans la configuration définitive:
  • "Base.xlsx" est la base de données qui ne doit pas bouger, dans laquelle il y a 1 seule feuille nommée "Base";
  • "Recherche.xlsm" est le fichier à partir duquel les recherches seront faites (et si la feuille "BASE" de Recherche.xlsm" ne sert à rien, alors il faudrait l'enlever); la feuille à conserver est nommée "RECHERCHE3.
Est-ce que tu accepterais de me sauver du chaos ?
Merci d'avance.
Et très bonne soirée.
 

Pièces jointes

  • Base.xlsx
    17.1 KB · Affichages: 17
  • Recherche.xlsm
    467.4 KB · Affichages: 27

Lone-wolf

XLDnaute Barbatruc
Bonjour Mishai, le Forum :)

Ton fichier en retour. J'ai dû changer le classeur source au format .xls, pour qu'il accepte les macros, ne change pas son extension et n'applique pas la mise en forme dans la feuille Base, sa rallenti l'ouverture du classeur. J'ai aussi dû ajouter un bouton pour l'affichage du formulaire; à l'ouverture du classeur ça causait problème.

Il m'a donné en peu du fil à retordre, mais tout est OK. Il faut juste changer le chemin.

Bonne continuation.
 

Pièces jointes

  • dossier principal.zip
    198.5 KB · Affichages: 53
Dernière édition:

Mishai

XLDnaute Nouveau
Bonjour Lone-Wolf, le Forum
J'ai testé l'appli et , c'est super, ça marche parfaitement :). Du coup, ça me donne envie d'apprendre VBA, histoire de jouer à faire des choses sympa. J'ai déjà découvert que je pouvais ajouter une image ... Merci beaucoup et à bientôt sur le forum.
 

Discussions similaires