RechercheV a adresses variables. Need

Bonjour a tous,

Débutant en macro Exel j’ai a faire pour le boulot une BDD assez importante (environ 500 fichiers Exel a gérer)

Certain me dirons de suite que Exel n’est pas le mieux pour ça mais les contrainte qui me sont imposé font que c’est ce logiciel ou rien d’autre.

Ces fichiers sont créés a partir de 4 principaux modèles afin d’en faciliter la consultation j’aimerais créer une page de « navigation ».

C'est-à-dire que l’utilisateur n’aurais a ouvrir qu’un seul fichier pour consulté ensembles des fichiers réalisé sur le même modèle.

Comment faire ? J’ai utilisé un fichier modèle comme base et j’ai rajouté une entête de sélection. En pratique, l’utilisateur arrive sur le fichier de consultation, sélectionne la machine dont il veut consulter le fichier et le Modèle ce rempli des infos concernant la machine sélectionnée.

En pratique et avec deux fichiers je pourrais utiliser une simple rechercheV pour remplir chaque cellules mais la ou je me heurte a un problème et que si l’emplacement des cellules ou chercher l’info et le même peut importe le fichier (modèle commun) le fichiers, du moins son nom et son adresse sont variable.

J’ai donc créé une base de donné d’adresse en dur de mes fichiers, petite explication :

En A1 je sélectionne ma machine

En A2 s’affiche l’adresse du fichier, adresse obtenue par une recherche V dans la feuille deux : =RechercheV(A1 ; feuille2page_de_recherche ; 2 ; FAUX)

Jusque le ça marche !

La ou ça coince c’est quand je veux remplir A3, idéalement il me faudrait de l’aide pour réaliser une macro équivalente a cette formule :

=RechercheV( Refderecherche ; Adresse_ou_chercher ; X ; FAUX) Adresse_ou_chercher etant égale au contenue de A2.

ATENTION l’adresse est le résultat de la formule dans A2.

Bref, je galére, Help me please !

Merci d’avance.

Rapsodys

Bonjour

En fournissant ton fichier principal et 2/3 fichiers à traiter, cel pourrait augmenter tes chances que quelqu'un regarde de plus près ton problème

Bonjour Banzai

Les formules de recherche V qui ne fonctionne pas dans le fichier sont celles qui me pose problèmes et que je cherche a faire fonctionner ou a remplacer par une macro, j'ai bien sur essayer différentes solutions comme faire une recherche V l'une dans l'autre, utiliser "indirect" ou même indiquer l'adresse direct de la cellule ayant l'adresse comme contenue (l'idée étant de ne pas utiliser le résultat d'une formule comme adresse" mais rien ne semble y faire, Exel ne veut pas prendre autre chose de l'adresse directement dans la formule.

Chose étonnante j'utilise le même système pour créer un lien hypertexte me permettant d’accéder au fichier source et la pas de problème, exel accepte sans pb le contenue d'une cellule (même si c'est le résultat d'une formule de rechercheV) en guise d'adresse pour créer le lien. C'est pour cette raison que je ne pense pas pouvoir faire autrement que par une macro.

Merci de ton aide.

Rapso

Bonjour

Les fichiers que j'ai demandés ne sont pas spécialement pour moi

Mais surtout j'ai demandé aussi 2/3 fichiers à traiter et cela sont absents

je ne crois pas que RECHERCHEV fonctionne avec des fichiers fermés

Une macro à voir

Les fichiers à traiter et le fichier principal

28rapsodys.zip (26.30 Ko)

Bonjour,

remplace la formule de la cellule D31 par celle ci

=RECHERCHEV(B31;indirect(E5);3;FAUX)

, mais bien sur je pense que tu doit supprimer de ta feuille 2 l’expression (Adresse Machine 1 Ex : ) par exemple, il faut mettre juste le chemin.

Cordialement

Bonjour a tous,

@ Gestionnaire_Rh : J'ai déjà essayé indirect, et je ne peut pas dire pour les autre version Exel mais pour 2003 cela ne fonctionne pas avec la formule RechercheV , j'ai bien sur réessayé au cas ou précédemment j'aurais fait une erreur d’écriture ou autre mais ça ne fonctionne pas plus.

@Banzai : Merci pour ton aide et désolé pour le fichier d'exemple incomplet. Ta macro remplit parfaitement son office dans ton fichier exemple j'essaye a présent de l'adapter a ma base de donnée. Cependant je n'avait jamais fait de macro avant et mes connaissances en VBA sont très lacunaire, pourrais tu me l'expliquer un peu s'il te plait car j'ai du mal a la modifier.

La seule différence entre ton exemple et ma BDD c'est que le fichier source d'information a le même format que le fichier de consultation en dehors de l’entête de sélection dans le fichier de consultation.

Merci a vous pour votre aide précieuse, je commence a voir la lumière au bout du chemin ^^

Bonne journée

Re bonjour,

Banzai, j'aurais besoins de ton aide !

J'essaye de modifier la macro comme je te l'ai dit précédemment, la ou je bloque c'est dans la copie et le remplissage des cellules

(Tu me corrige si je dit des bêtises)

Si j'ai bien compris tu fait d'abord en sorte que les cellules a remplir soient vides

Range("D31,J31,D33,H33") = ""

If Target <> "" Then

tu désactive les rafraichissements et autres pour pas faire ramer

With Application

.ScreenUpdating = False

.EnableEvents = False

End With

ensuite dans le module "recherche", tu définie ta plage de recherche et tu fait une copie/ recherche dans le fichier que tu viens d'ouvrir.

Set cel = Range("B1:Z300").Find(what:=.Range("B31"), LookIn:=xlValues, lookat:=xlWhole)

If Not cel Is Nothing Then

.Range("D41") = cel.Offset(0.2)

.Range("J41") = cel.Offset(0.2)

Bon la ou je sèche c'est dans la compréhension de ces lignes : Set cel = Range("B1:Z300").Find(what:=.Range("B31"), LookIn:=xlValues, lookat:=xlWhole et .Range("D41") = cel.Offset(0.2)

je ne comprend pas ce qu'elles font exactement?

Serais t'il possible de simplement faire une copie d'une cellule a l'autre ? genre " .Range("D41") = cel.offset ("D13") "??

comment cela s’écrirait t'il dans une macro ?

Dernier point, la macro ne marche pas si le fichier sources est ouvert, serait t'il possible de la faire fonctionner mm si le fichier et ouvert ? Si non, je sait comment afficher un message pour prévenir l’utilisateur dans une Msg box mais j'aimerais savoir si c'est possible de d’abord détecter si le fichier source est ouvert ou non pour ne pas faire bugger toute la macro ?

Merci d'avance pour ton aide.

Rapso

Bonjour

Rapsodys a écrit :

Set cel = Range("B1:Z300").Find(what:=.Range("B31"), LookIn:=xlValues, lookat:=xlWhole

Une simple recherche de la valeur de B31 dans la zone B1:Z300 du fichier recherche

Ce que tu ferais avec Ctrl F (menu Edition ---> Rechercher)

Ensuite dés que j'ai trouvé je me déplace ( Offset(0.2) ) au bon endroit pour récupérer la valeur

Rapsodys a écrit :

Serais t'il possible de simplement faire une copie d'une cellule a l'autre ?

Bien sur mais dans ton fichier tu fais une RECHERCHEV cela veut dire que tu ne connais pas son emplacement exact

Rapsodys a écrit :

comment cela s’écrirait t'il dans une macro ?

tout simplement (exemple)

.Range("D41") = Range("H25") 
Rapsodys a écrit :

Dernier point, la macro ne marche pas si le fichier sources est ouvert, serait t'il possible de la faire fonctionner mm si le fichier et ouvert ? Si non, je sait comment afficher un message pour prévenir l’utilisateur dans une Msg box mais j'aimerais savoir si c'est possible de d’abord détecter si le fichier source est ouvert ou non pour ne pas faire bugger toute la macro ?

Je n'ai pas ce problème (je ne suis pas en réseau)

Mais dans cette version, je fais une recherche si le fichier voulu est déjà ouvert

A voir (pas sur que cela soit la solution)

A voir https://forum.excel-pratique.com/excel/tirer-une-formule-pour-qu-elle-s-incremente-automatiquement-t27991.html

La solution passe peut-être par l'emploi de cette fonction INDIRECT.EXT

Rechercher des sujets similaires à "recherchev adresses variables need"