Automatiser une tâche

Bonjour à toutes et à tous,

J'ai un petit souci. Je vais essayer d'être le plus clair possible dans mon explication, mais ça n'est pas gagné . Alors voilà la situation, j'ai un classeur excel avec deux feuilles. Sur la première feuille des noms d'espèces en première colonne (les informations contenues dans les autres colonnes n'importent pas pour le présent sujet), sur la deuxième feuille une base de données comprenant en première colonne "les classes", et en deuxième colonne le nom des espèces correspondantes.

Voilà ce que je voudrai faire. Sur la première feuille créer une nouvelle colonne qui me donnerait automatiquement les classes des espèces présentes dans la colonne 1 en recherchant dans la base de donnée de la feuille2

Penser vous que cela soit possible? Une formule peut elle convenir ou est il nécessaire de réaliser une macro? Je ne connais pas du tout la programmation en VBA, avez vous des idées de code?

Je ne sais pas si j'ai été très clair, alors j'ai joint un exemple. Bien sur le fichier original contient des milliers de ligne, je ne peux donc pas le faire manuellement.

Merci par avance pour votre attention et votre expertise.

Guillaume.

50exemple.zip (5.20 Ko)

Bonjour,

Ci-joint ton tableau avec des formules.

Comme tu as joint seulement un exemple de ton tableau on se retrouve avec des #N/A si l'espèce n'existe pas dans la feuille Base de données.

=SI(ESTNA(RECHERCHEV(A2;'Base de données'!$B$2:$C$25;2;FAUX));"Inconnue";RECHERCHEV(A2;'Base de données'!$B$2:$C$25;2;FAUX))

Mais sur ton fichier complet tu peux te contenter de :

=RECHERCHEV(A2;'Base de données'!$B$2:$C$25;2;FAUX)

Cette formule recherche le nom écrit en A2 dans le tableau figurant sur la feuille Base de données (la taille sera à adpater à ton vrai tableau) et renvoie la classe qui est en 2ème colonne. FAUX permet de dire que ton tableau n'est pas trié ce qui est actuellement le cas. C'est d'ailleurs pour ça que tu verras que j'ai ajouté une colonne C dans la feuille Base de données qui reprend la colonne A. Si le tableau avait été trié on pouvait utiliser la fonction RECHERCHE sans intervertir les colonnes.

A+

38exemple.zip (6.78 Ko)

Bonjour,

Et tout d'abord merci beaucoup pour la rapidité et la qualité de la réponse. C'est exactement, ce que je voulais faire et cela marche très bien pour le fichier exemple. Cependant, lorsque j'essaie d'appliquer les formules dans mon fichier "original" il y a plusieurs problèmes. Afin de les résoudre j'aurais besoin de comprendre un peu mieux les formules.

Formule de recherche: =RECHERCHEV(A2;'Base de données'!$B$2:$C$25;2;FAUX)

Là si je comprends bien, excel va rechercher le contenu de la cellule A2 dans la feuille "base de données" et dans les cellules comprises entre la B2 et la C25. Faux permets "d'indiquer à la formule" que le tableau n'est pas classé. Le 2 situé avant Faux indique la colonne de la réponse à renvoyer. Ai-je bien compris?

Voilà le topo: Excel doit recherche le contenu de la cellule A2 dans la feuille base de donnée pour le tableau compris entre les cellules A2 à F3171, et la réponse se situe dans la colonne 1 du tableau base de donnée. J'ai tenté la formule suivante:

=RECHERCHEV(A2;'Base de données'!$A$2:$F$3171;1;FAUX)

Résultat:erreur due à une valeur non disponible.

J'ai donc tenté celle là:

=RECHERCHEV(A2;'Base de données'!$A$2:$F$3171;1)

Résultat: parfois il me donne le bon parfois il m'en donne un faux.

Aurais tu une idée sur l'erreur que j'ai commis?

Merci par avance !

Re,

Effectivement Excel va rechercher A2 (puis A3, A4 en recopiant) dans la feuille Base de données dans la plage $B$2:$B$25 (avec des $ car en A2, A3, A4 on va toujours chercher en B2:B25 donc la plage doit être figée à l'aide de ces $).

Le 2 veut dire que dans ma plage B2:C25 c'est la 2ème colonne qui contient la valeur que je veux afficher, donc la colonne C puisque c'est la 2ème dans la plage B:C.

Ton erreur vient du fait que $F$2:$F$3171 ne contient qu'une colonne donc tu ne peux pas récupérer ce qui est dans la 2ème car il n'y a pas de 2ème. Ta plage doit être, par exemple, $F$2:$J$3171 et 2 te permet de récupérer ce qui est en G (la deuxième de F à J).

A+

Ah ok!!

J'ai édité mon précédent message certainement pendant que tu me répondais, aurais tu une idée sur mon autre problème parce que là j'avoue que je suis perdu

Merci beaucoup !

Cette formule =RECHERCHEV(A2;'Base de données'!$A$2:$F$3171;1) part du principe que ton tableau est par ordre croissant sinon il prend la valeur inférieure la plus proche.

Par exemple si ta colonne 1 contient 1 - 2 - 3 (l'un sous l'autre) et que tu cherches 2 donc pas de problème c'est trié Excel va trouver. Mais si tu as 1 - 3 - 2 Excel va te renvoyer en cherchant 2 la valeur de 1 car 2 est compris entre 1 et 3 il n'ira pas voir plus loin car il estime que le tableau est trié.

Je pense que l'erreur dans ton cas est due au fait que A2 contient un nom d'espèce (feuille Espèces ) et la feuille Base de données contient les classes en 1ère colonne, Excel commence toujours sa recherche par celle-là. C'est pour ça que j'ai recopié cette colonne (Diatomées, Dinoflagellés...) dans le fichier que je t'ai envoyé et que ma formule cherche dans les colonnes B et C (B contient la valeur égale à A2 - l'espèce et C contient la réponse que je cherche - la classe).

A+

Ok, j'ai donc recopié la colonne contenant la classe après le nom de l'espèce mais ça ne marche toujours pas...Alors soit je suis stupide, soit c'est pas évident, dans les deux cas, je suis un peu perdu

Là le problème c'est que ça marche pour certains et pas d'autres. Je ne comprends pas pourquoi pour certains il manque une référence alors qu'ils sont dans la base de données. (ex: Dinophysis acuminata, Dinophysis caudata, Dinophysis fortii, Gonyaulax spinifera etc...)

Je pense que la meilleure solution et que je te poste une version allégée de mon fichier original, parce que là la solution ne m'apparaît malheureusement pas (désolé pour la taille du fichier). Si tu as encore un peu de temps à m'accorder pour regarder ce qui ne va pas ça serait génial.

Merci beaucoup !

Bonjour.

tu peux essayer par cette formule qui ne t'oblige pas à trier tes valeurs:

=INDEX('Base de données'!$C$2:$C$866;EQUIV(A2;'Base de données'!$B$2:$B$866;0))

Par contre, attention, quand tu cherche un mot. Par exemple:

Phalacroma rotundatum

Il est normal de ne pas le trouver étant donné qu'il y a dans l'autre feuille ce mot:

Phalacroma cf. rotundatum (ne pas oublier l'espace entre le point et le dernier mot)

Idem si tu rajoute des commentaires comme sur tes 4 dernières lignes. Je te conseille de mettre une autre colonne pour les mettre.

Si tu cherche la valeur exacte, il faut être certain que les valeurs de recherche soient identiques au contenu de ton tableau.

49dino.zip (28.85 Ko)

Bonjour pass-pass,

Je viens d'essayer et ça marche nickel !! Ça m'enlève une sacrée épine du pied.

Je ne connaissais pas cette formule mais je crois qu'elle va beaucoup me servir.

Merci infiniment et bonne journée !!

Merci aussi à dachevid !

Rechercher des sujets similaires à "automatiser tache"