[Resolu] RechercheV par couleur de cellule

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Shindaraa

XLDnaute Nouveau
Bonjour a tous,
Comment allez vous?

Longtemps que je n'ai pas eu recours a ce forum puisque j'ai reussi a y trouver une reponse a chaque fois pour des sujet existants, mais malheureusement pas ce coup-ci.

Apres de nombreuses recherches ici et ailleurs, j'ai reussi a trouver un tutoriel Youtube pour créer une formule RechercheV par VBA (je suis novice absolu dans ce domaine) qui me renvoit une valeur en fonction de la couleur du fond de la cellule.
Comme vous pouvez le constater dans les colonnes K et L de la P1 , la formule semble bien fonctionner (si jamais vous avez le temps de jeter un coup d'oeil au code VBA pour le verifier et me dire si c'est "propre" ce serait genial aussi, j'ai eu quelques soucis avec le numero de colonne pour renvoyer la valeur qui ne fonctionnait pas toujours).
Cependant, j'aimerais combiner cette nouvelle formule avec une imbrication de RechercheV et Index que javais precedemment cree, que vous pouvez voir en cellule I4 -> I6 . Seulement quand j'essaye de les assembler (en I2 et I3) cela ne semble pas fonctionner.

Alors vu que je n'y connais rien en VBA, je me demandais si il y avait une ligne de code a rajouter pour que cette nouvelle formule fonctionne en imbrication, ou si c'etait autre chose qui clochait.

Un grand merci d'avance pour vos reponses, et n'hesitez pas a me demander si vous avez besoin de plus d'informations de ma part pour me repondre au mieux.

🙂
 

Pièces jointes

Bonjour

Déjà.; il faudrait expliquer ce que fait ta FONCTION colorvlookup, notamment les arguments passés..
ce que je comprend:
elle recherche dans une zone (arg2) LA cellule qui a la meme couleur que l'argument 1
et renvoie la valeur situé à Arg3 colonnes
à quoi sert l'argument 4 ??

ensuite.. ta FORMULE qu'est elle censée faire??
 
dans ton fichier tel quel avec ta formule en L6 telle quelle..
si tu tires vers le bas
ce qui va te donner =colorvlookup(K8;$D$2:$E$5;2;1)
K8 étant vide
le résultat sera: QWRRT ==> est ce le résultat attendu??

si la réponse est non....essai cette fonction
VB:
Function colorvlookup(r1 As Range, r2 As Range, n As Integer, b As Boolean) As Variant
Application.Volatile

Dim r3 As Range

For Each r3 In r2
    If r3.Interior.Color = r1.Interior.Color Then
        colorvlookup = r3.Offset(0, n - 1).Value
        If b = False Then Exit For 's'arrete au premier trouvé?
    End If
Next r3

If colorvlookup = "" Then colorvlookup = "#N/A"

End Function
et CETTE formule en L6
=colorvlookup(K5;$D$2:$D$4;2;1)
 
Salut vgendron,

Merci beaucoup pour ta reponse,

Du coup l'objectif que j'avais pour cette fonction colorvlookup; c'est d'avoir exactement exactement le meme fonctionnement qu'une fonction recherchev, sauf que au lieu de rechercher une valeur et de renvoyer la donnee correspondante sur une cellule d'une autre commande; je voudrais qu'elle cherche la couleur de fond de la cellule, et renvoi la donnee qui est sur la cellule adjacente.
Du coup pour repondre a ta question sur l'argument 4; si j'ai bien compris l'explication du gars sur le tutoriel que j'ai regarde (j'avoue que j'ai surtout recopie "betement" le code), cette partie de la fonction est l'equivalent du VRAI/FAUX qu'on entre sur la fin de la RechercheV.

J'ai essaye ton code du coup, j'ai effectivement l'impression que ca fonctionne deja mieux que celui que j'avais, qui renvoyait pas toujours la bonne valeur. Apres j'ai l'impression que ca ne fonctionne toujours pas comme une vrai rechercheV, ou l'on defini une zone de recherche entiere, et la colonne exact ou la valeur doit etre renvoye.

L'objectif final comme j'essayais d'expliquer dans mon premier ca, ce sera apres de combiner cette formule colorvlookup, avec celle qui existe deja en celulle I4-5-6. Le but ce sera que la formule puisse identifier la couleur qui se trouve dans le tableau de la P2 (colonne U->BJ) en fonction du code de projet (A,B,C en colone A) et de la date (ligne 2), et de renvoyer le code qui correspond a cette couleur (mini tableau en P2 U12:V13).

Peut etre qu'il y a un autre moyen plus simple de faire la meme chose mais j'avoue avoir un peu epuise mes pistes de reflexion la dessus.

Merci encore pour ton aide,
 
Bonjour le fil, le forum, Shindaraa, vgendron

@Shindaraa
Peut etre qu'il y a un autre moyen plus simple de faire la meme chose mais j'avoue avoir un peu epuise mes pistes de reflexion la dessus.
Pour info, sur les versions récentes d'Excel, on peut
1) Trier sur la couleur
2) Filtrer sur la couleur
01filtri.png


PS: Le lien vers le tutoriel YT (à l'accent chantant) 😉
 
Dernière édition:
Salut Staple,

Merci pour cette fonction, que je connaissais deja et qui malheureusement ne va pas me permettre de faire le travail dont j'aurais besoin (automatiser le renvoi de valeur).
Et en effet c'est bien ce tuto youtube a l'accent chantant (c'est joliment dit!), avoir l'habitude de travailler avec des collegues pakistanais et indiens m'a pas mal aide a pas regarde la video 15 fois pour etre sur de comprendre hehe.
 
Re

@Shindaraa
Tu la connais mais pas forcément les autres membres du forum qui tomberont sur ton fil.

[l'instant humour "stapelien"]
Pour le reste, Excel est d'abord un tableur, pas un album de coloriage 😉
Pourquoi ne pas simplement se baser sur les valeurs dans les cellules pour un RECHERCHEV classique?
(tel qu'enseigné dans les ashrams dédiés à la Cellule Sacrée, à droite en sortant du couloir)
[/l'instant humour "stapelien"]
 
Bonjour Shindaraa, vgendron, JM,

Il faut bien comprendre pourquoi votre formule en I2 de la feuille P1 renvoie forcément une erreur.

Le 1er argument de la fonction colorvlookup doit être impérativment un Range.

Or vous y mettez une fonction RECHERCHEV qui ne renvoie pas un Range mais un scalaire.

Pour avoir un Range il faut utiliser la fonction INDEX avec cette nouvelle formule en I2 :
Code:
=colorvlookup(INDEX('P2'!$A$2:$AX$9;EQUIV(A2;'P2'!$A$2:$A$9;0);EQUIV(B2;'P2'!$A$2:$AX$2;0));'P2'!$U$12:$V$13;2;0)
Fichier joint.

A+
 

Pièces jointes

Re, salut Bernard,

Pour mieux comprendre mon post #8 précédent voyez le fichier joint et cette fonction VBA :
Code:
Function TypeRenvoiFormule(c As Range) As String
TypeRenvoiFormule = TypeName(Evaluate(c.Formula))
End Function
Le renvoi de la formule (RECHERCHEV) en E4 est de type Double.

Le renvoi de la formule (INDEX) en E5 est de type Range.

A+
 

Pièces jointes

Oui, oui, job75, je m'adressait à Shindaraa.
Je me demandais pourquoi elle imbriquait dans des arguments de la fonction des chose qui ne pouvaient pas marcher, et je répond à une hypothèse: chercherait elle une combinaison valeur + couleur ?
Je le re-joins, il y avait une erreur.
 

Pièces jointes

Bonjour a tous,

@job75
Un immense merci pour ta solution ça résout parfaitement mon soucis et je l'ai teste sur le fichier grandeur nature ça a l'air de plutôt bien fonctionner.

Petite question subsidiaire si jamais tu as le temps/la réponse :
Que faudrait-il changer dans le code VBA de la fonction colorvlookup pour qu'elle puisse marcher en association avec la recherche V? Juste changer le Dim r3 as Double plutôt que Range?

C'est plus pour ma compréhension personnelle que pour une réelle utilisation , mais sait-on jamais.

Encore un gros merci, et je peux mettre le sujet en Resolu 🙂
A bientot
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
131
Réponses
72
Affichages
1 K
Réponses
2
Affichages
140
Réponses
7
Affichages
116
Retour