Copier valeur via champ de recherche
Bonjour,
Je cherche à faire un champ de recherche dans Excel qui, lorsqu'on écrit un nombre à 4 chiffre (+ d'éventuelles lettres), irait copier automatique les valeur associées à ce code, les faisant passer d'une feuille à une autre.
Contenu de mon document :
Mon document se comporte ainsi :
J'ai 2 premières feuilles dans lesquelles je copie-colle des informations :
- une liste de formulaires (une seule ligne avec des données fixes associées à un lieu).
- un document de saisie (autant de lignes qu'il y a de données ; les données sont des codes espèces).
La 3ème et 4ème feuilles traitent les informations et permettent d'obtenir un condensé des deux premières feuilles.
Chaque espèce est donc liée à son formulaire de saisie, les informations du formulaire sont répétées autant de fois qu'il y a de lignes.
La 5ème et 6ème feuilles contiennent les deux bases de données qui me permettent de traiter les codes (ceux saisis dais la feuille2)
La 7ème feuille traite les codes à l'aide des deux bases de données (feuilles 5 et 6). Elle permet également de corriger d'éventuelles erreurs de saisie, de normaliser les codes pour éviter les synonymes, etc.
Chaque code donne donc pour résultat un nom de genre et d'espèce.
[Le document que je met en pièce jointe affiche beaucoup d'erreurs, c'est normal car je n'ai utilisé que 200 données sur les 160 000 histoire d'alléger un peu]
Opération recherchée :
Pour réaliser mon champ de recherche j'ai besoin d'utiliser les feuilles suivantes :
- feuille 4 : "Données de travail"
- feuille 7 : 'Correspondances"
Et ce que je recherche à faire consiste à faire apparaître un champ de recherche dans la feuille 7 ; dans ce champ de recherche je voudrais pouvoir inscrire un code (en général 4 chiffre, mais il peut y avoir des lettres). Ce code correspondra aux codes inscrit dans la colonne C de la feuille 4 "Données de travail".
Si j'écris un code qui existe dans cette colonne, alors Excel va copier coller toutes les cellules des colonnes "B", "C", "D", "E","F" et "G" dans la feuille 7 "Correspondances".
La colonne B (feuille 4) irait dans la colonne A de la feuille 7, tandis que les autres colonnes C, D, E F et G iraient se coller dans les colonnes G, H, I, J et K.
[Il ne faut pas qu'elles se retrouvent dans les colonnes B à E car il y a des formules qui traitent les codes dans ces colonnes]
Eléments de réflexion :
Je me suis intéressé à un champ de recherche comme celui-ci :
https://www.excel-pratique.com/fr/astuces_vba/champ-de-recherche-vba.php
(Mais je n'ai pas réussi à le faire fonctionner pour le moment...)
Qui serait associé à une "RECHERCHEV" j'imagine ?
Avez-vous une idée de la démarche à suivre ? Je pense ne pas avoir d'autre solution que de passer par de la macro ; ce qui est assez problématique ne sachant pas du tout comment m'y prendre. :/
J'espère avoir été suffisamment clair, car ce n'est pas ce qu'il y a de plus évident à décrire.
Je peux donner plus d'informations ou explications si celles-ci manquent de clarté.
Merci de votre attention !
Téléchargement du document exemple :
J'ai joins une "petite" partie de mon document de base, qui fait 30Mo tout de même... accessible via ce lien cjoin :
https://www.cjoint.com/c/HIBpfEZ1Z2B
Edit :
Alors finalement il ne semble faire plus que 292ko donc je le joins au post en pièce jointe.
bonjour
quand on veut corriger une valeur :
- soit on saisit au clavier directement dans la cellule erronée
- soit, si on veut conserver la valeur d'origine (notamment si elle est automatique), on ajoute 2 colonnes B et C
C contient la formule = SI(B2=""; A2; B2 )
ensuite on utilise la colonne C comme étant la "bonne" colonne
à chaque modification automatique dans A, C reste "bonne";
note : la prochaine fois crée un fichier exemple d'un onglet, avec 6 lignes de données et le résultat attendu.
Bonjour,
Je n'ai pas bien compris quelle valeur est-ce que je dois corriger ? Tout fonctionne plutôt bien pour le moment.
En ce qui concerne le champ de recherche, je peux faire un document avec moins de données en effet. Je vais faire ça dès que j'ai un peu de temps.
Bonne journée !
Bonjour,
Finalement j'ai trouvé une parade à l'utilisation de VBA.
Je créé une zone de texte "contrôle active X" via l'onglet développeur.
J'attribue à cette zone de texte une cellule dans laquelle viendra s'inscrire la même chose que ce que je saisie dans la zone de texte.
J'utilise cette formule :
=ET($A$2<>"";ESTNUM(CHERCHE($A$2;Feuil1!B2:B252;1)))
Pour indiquer que si rien est inscrit il faut indiquer "FAUX" ; autrement indiquer "VRAI" lorsque la valeur est un numéro.
Ensuite :
=SI(N5;1;0)
Pour transformer les "VRAI" en "1"
Puis :
=SI(O5=1;Feuil1!B2;"0")
Si la cellule de la colonne O contient 1 alors indiquer dans la colonne P, son équivalent depuis la colonne B de la feuille 1 (là où se trouvent les données à traiter).
Autrement indiquer 0.
Là, à chaque fois que j'inscris un numéro d'étude qui existe dans ma base de donnée, il apparaîtra dans ma colonne P.
J'utilise alors cette formule :
=RECHERCHEV(P5;Feuil1!B2:C252;2;FAUX)
Pour rechercher les codes espèces correspondants à mes numéros d'étude.
Dès que j'écris le code voulu, j'ai automatiquement la liste des espèces associée qui apparaît.
Je joins un document Excel "Brouillon", dans lequel apparaît tout ce que j'ai indiqué dans ce post.
Bonne journée !