Application d'une MFC + plage nommée

arthurho

XLDnaute Junior
Bonjour,

Je cherche à colorier en bleu les cellules de la colonne 1 onglet Feuil1, lorsque la cellule étudiée de cette colonne possède la chaine de caractère présente dans l'onglet Feuil2 colonne 1.

La MFC fonctionne pour des lettres simples, avec le code suivant :
Code:
=NB.SI(MesValeurs;A1)>0
Mais en le compliquant un peu ..
Code:
=NB.SI(MesValeurs;STXT(A1; CHERCHE(MesValeurs; A1;1); NBCAR(MesValeurs)))>0

Celui ci ne fonctionne plus,

Avez vous une solution ?

Cdt,

Arthur HO.
 

Pièces jointes

  • Recherche(1)(1)-oui.xls
    41.5 KB · Affichages: 92
  • Recherche(1)(1)-oui.xls
    41.5 KB · Affichages: 99
  • Recherche(1)(1)-oui.xls
    41.5 KB · Affichages: 118

CISCO

XLDnaute Barbatruc
Re : Application d'une MFC + plage nommée

Bonjour

NB.SI n'accepte pas la plupart du temps les "calculs" comme argument. A partir de là, il faut faire autrement, avec une autre fonction, des formules nommées...

Pourrais tu nous dire ce que tu veux faire exactement avec la seconde formule que tu proposes pour la MFC ?

@ plus
 

arthurho

XLDnaute Junior
Re : Application d'une MFC + plage nommée

Bonjour,

Mon objectif est de :
Trouver la valeurs mise dans les 200 premieres cellules de la colonne 1 onglet Feuil1, à partir de la plage de recherche de l'onglet Feuil2 colonne 1 (60 premieres cellules)

Le code que j'ai mis avait pour objectif de chercher, dans la chaine de caractère de la feuil1, la chaine de caractère de la feuil2, sans me soucier de vecteur de recherche.

Peut être que la solution est d'utiliser la fonction RECHERCHE au lieu de CHERCHE , car il me faut ce vecteur

Si tu as toujours des incompréhensions, n'hésites pas .

Cdt,

Arthur HO.
 

CISCO

XLDnaute Barbatruc
Re : Application d'une MFC + plage nommée

Rebonjour

Ci-joint, un fichier mettant en évidence les textes de la colonne A de la feuille 1 contenant un des textes, au moins, de la colonne A de la feuille 2.

En colonne C et D, des formules matricielles montrant d'où vient la formule utilisée dans la mise en forme conditionelle.

Au passage, les textes de la colonne A de la feuille 2 contiennent, à la fin, de nombreux espaces blancs. J'ai dû les supprimer avec SUBSTITUE, mais je ne sais quel caractère correspond à ces espaces blancs : ce n'est pas la barre d'espace. J'ai dû faire avec un copier-coller pour que cela fonctionne.

Les calculs sont anormalement longs pour si peu de lignes. Une fois que tu auras compris le système, tu auras tout intérêt de supprimer les colonnes supplémentaires C et D.



@ plus
 

Pièces jointes

  • Recherche(1)(1)-oui.xls
    57.5 KB · Affichages: 87
  • Recherche(1)(1)-oui.xls
    57.5 KB · Affichages: 104
  • Recherche(1)(1)-oui.xls
    57.5 KB · Affichages: 101
Dernière édition:

arthurho

XLDnaute Junior
Re : Application d'une MFC + plage nommée

Bonjour,

Merci pour ton fichier, je me compliquais la vie alors que les "*" simplifient tout.
Malheureusement, certaines tables sont mises en rouge alors qu'elles ne sont pas présentes dans la liste des tables SQL Feuil2 colonne A.
Exemple : ligne 28 , Colonne A, onglet Feuil1 : "PS_FC_PARAM_TBL" non présent dans l'onglet Feuil2.

Jai du faire une erreur également dans le nommage de la plage

Merci de ton aide,

Cdt,
 

arthurho

XLDnaute Junior
Re : Application d'une MFC + plage nommée

Bonjour,

Tu as raison cest la cellule avec B qui posait problème.

Jai tenté de reproduire la meme chose en recherchant une valeur avec la fonction cherche :=CHERCHE(A1,D1:D60,A1) mais jobtiens une erreur #valeur! ou #ref!
Je voulais savoir si tu pouvais détailler ta demarche avec les formules matricielles sur les colonnes C et D pour obtenir ces valeurs.

Merci encore,

Arthur HO.
 

CISCO

XLDnaute Barbatruc
Re : Application d'une MFC + plage nommée

Bonjour

Alors, une "petite" explication :
Code:
SOMME(ESTNUM(CHERCHE("*"&SUBSTITUE(Feuil2!A$1:A$60;"*";"")&"*";Feuil1!A1))*1)

Code:
SUBSTITUE(Feuil2!A$1:A$60;" ";"")
remplace dans la colonne Feuil2!A$1:A$60 les " " par des "" (ces " " sont dans la colonne A de feuil2, mais pas dans la colonne A de Feuil1. Cela ne sert donc à rien de rechercher dans la colonne A de feuil1 les termes de la colonne A de feuil2 tels que, sans les modifier). Le fait d'utiliser une formule matricielle permet de faire la substitution sur tous les termes de la plage Feuil2!A$1:A$60 et pas uniquement sur Feuil2!A$1.
Code:
CHERCHE("*"&SUBSTITUE(Feuil2!A$1:A$60;" ";"")&"*";Feuil1!A1)
renvoie la position du premier caractère de toutes les chaines de caractères lues en Feuil2!a$1:a$60 contenue dans feuil1!A1 (si elle en trouve une). Cette partie renvoie donc un nombre si elle trouve un des textes de Feuil2!A$1:A$60 dans A1, et un message d'erreur dans le cas contraire.
On pourrait presque faire ici la SOMME directement, mais tous ces messages d'erreur posent problème. Pour résoudre ce problème, on fait
Code:
ESTNUM(CHERCHE("*"&SUBSTITUE(Feuil2!A$1:A$60;" ";"")&"*";Feuil1!A1))
qui renvoie :
* VRAI lorsque CHERCHE a trouvé un des textes de Feuil2!A$1:A$60 dans Feuil1!A1.
* FAUX lorsque les textes de Feuil2!As1:A$60 n'ont pas été trouvé dans Feuil1A1.

On a donc maintenant par exemple {VRAI;VRAI;FAUX;FAUX..........FAUX;FAUX;FAUX;VRAI}

En multipliant par 1, les VRAI sont transformés en 1 et les FAUX en 0.
On a donc maintenant par exemple {1;1;0;0..........0;0;0;1}.
On peut ensuite faire la somme de tous ces 0 et de ces 1.

@ plus

P.S : La formule matricielle permet de faire le calcul sur une plage avec une fonction plutot prévue initialement pour ne travailler que sur une cellule, comme SUBSTITUE ici. Cela ne fonctionne que si il y a dans la formule une autre fonction, qui, elle, est prévue pour travailler sur une plage, du style, SOMME, MIN, MAX...
 
Dernière édition:

arthurho

XLDnaute Junior
Re : Application d'une MFC + plage nommée

Bonjour,

Merci beaucoup les formules matricielles servent a appliquer les formules sur des ranges plutot que sur une cellule unique.

Je voulais savoir, au niveau de la présentation si je souhaite mettre toute la ligne en rouge au lieu de la cellule de la colonne A, que dois je changer dans la MFC ?

=$A$1:$A$143 en quoi ?

Merci une nouvelle fois,
 

CISCO

XLDnaute Barbatruc
Re : Application d'une MFC + plage nommée

Rebonjour

Il faut faire deux petites modifications :
*mettre un $ devant A1 dans la formule mise dans la mise en forme conditionelle :
Code:
=SOMME(ESTNUM(CHERCHE("*"&SUBSTITUE(MesValeurs;"*";"")&"*";$A1))*1)>0
ainsi le test sera fait toujours par rapport à la colonne A : Pour la ligne 1, par rapport à A1, pour la ligne 2 par rapport à A2 et ainsi de suite.

*et modifier la plage sur laquelle s'applique cette formule, par exemple $A1:$E200, ou encore plus large si besoin est $A1:$Z200.

@ plus
 

CISCO

XLDnaute Barbatruc
Re : Application d'une MFC + plage nommée

Bonjour

Avec les MFC, je crois que oui. Par conséquent, il est peut être plus simple de garder une colonne intermédiaire, si cela ne te gêne pas, de la cacher si besoin est, et de faire la MFC par rapport à cette colonne intermédiaire. Cf. le fichier en pièce jointe.

@ plus
 

Pièces jointes

  • Recherche(1)(1)-oui suite.xls
    48.5 KB · Affichages: 72

arthurho

XLDnaute Junior
Re : Application d'une MFC + plage nommée

Bonjour CISCO, le forum

J'essaye d'ajouter une table pour voir si la requête SQL concernant cette table est ajoutée en rouge.

La table ajoutée est PS_FC_INSTCONTRACT pour colorier la derniere requête SQL présente dans le 1er onglet.

Cette ligne ne se colorie pas , malgré l'ajout de la table.

Le code utilisée pour la macro est
Code:
=SOMME(ESTNUM(CHERCHE("*"&SUBSTITUE(MesValeurs;"*";"")&"*";$A2))*1)>0

La code de la plage nommée MesValeurs est :
Code:
=DECALER('Big Tables'!$A$2;;;NBVAL('Big Tables'!$A2:$A200))

Je souhaite avoir une plage de 200 valeurs pour rajoutée des tables dans le deuxième onglet.

Pourquoi cette ligne ne se colorie pas en rouge ?

Merci de ton aide,

Arthur HO.
 

Pièces jointes

  • FC_G10R00C00_SQLRepV1.xls
    168 KB · Affichages: 125
  • FC_G10R00C00_SQLRepV1.xls
    168 KB · Affichages: 140
  • FC_G10R00C00_SQLRepV1.xls
    168 KB · Affichages: 127

CISCO

XLDnaute Barbatruc
Re : Application d'une MFC + plage nommée

Bonjour

Je ne vois pas le texte PS_FC_INSTCONTRACT dans la liste dans le second onglet... Ai-je besoin de nouvelles lunettes, ou as tu oublié de le rajouter ?

De plus, il semble qu'il y ai un problème lié à la définition de mesvaleurs. Sur les anciens fichiers, avec $A:$A, toutes les lignes ne sont pas coloriées. Avec ton dernier fichier, le A2:A200 semble poser problème. Si on rajoute des $, toutes les lignes sont coloriées... Je vais chercher d'où vient ce problème.

@ plus
 
Dernière édition:

arthurho

XLDnaute Junior
Re : Application d'une MFC + plage nommée

Bonjour CISCO,

Javais oublié de sauver le fichier lors du rajout, tu trouveras en pièce jointe le fichier avec l'ajout sur lequel je travaille (ajout d'une colonne intermédiaire pour diminuer le temps de réponse)

Merci,

Arthur HO.

modif sur le fichier envoyé : après avoir enfin compris les formules matricielles
 

Pièces jointes

  • FC_G10R00C00_SQLRepV1.xls
    174.5 KB · Affichages: 90
  • FC_G10R00C00_SQLRepV1.xls
    174.5 KB · Affichages: 75
  • FC_G10R00C00_SQLRepV1.xls
    174.5 KB · Affichages: 74
Dernière édition:

Statistiques des forums

Discussions
312 679
Messages
2 090 860
Membres
104 677
dernier inscrit
soufiane12