XL 2019 Mise en forme conditionnelle VBA

Kushi

XLDnaute Nouveau
Bonjour à tous !

J'espère que vous allez tous très bien ! J'ai un nouveau sujet pour vous aujourd'hui !

Sur un classeur j'ai une feuille "RESULTAT" & une feuille "KANBANS", dans RESULTAT j'ai une nomenclature de sortie sur la colonne "E", dans KANBANS j'ai une liste de références de kanbans colonne "C".
Mon problème est le suivant :
- Je souhaiterais que SI une référence de la colonne "E" de RESULTAT contient le même nom qu'une référence de la colonne "C" de KANBANS, alors mettre la référence de la colonne "E" de RESULTAT en fond vert SINON le mettre en fond rouge. Donc je souhaite pouvoir le traiter sur toute la nomenclature de la colonne "E".

Pour informations,
- la colonne "C" de KANBANS a forcément des références qu'il n'y a pas dans la colonne "E" de RESULTAT.
- le traitement de la colonne "C" de KANBANS commence à partir de la cellule C8
- le traitement de la colonne "E" de RESULTAT commence à partir de la cellule E2

Un exemple de tableau est fournis ci-joint.

Je vous remercie par avance de votre attention et votre aide.

Kushi.
 

Pièces jointes

  • exemple.xlsm
    299 KB · Affichages: 5
Solution
Le recalcul des formules en feuille KANBANS est indispensable.

Seulement comme il y a beaucoup de doublons en colonne C on peut les éviter avec cette formule en L7 :
Code:
=SI(C7="";"";SI(EQUIV(C7;C:C;0)<LIGNE();"";SIERREUR(EXP(LN(NB.SI(RESULTAT!E:E;"*"&C7&"*")));"")))
Avec les formules matricielles en colonnes M N O faisant référence à la colonne L.

Voyez le fichier joint, l'entrée d'une valeur en E113 s'effectue maintenant chez moi en 0,3 seconde.

job75

XLDnaute Barbatruc
En fait je ne vois vraiment pas pourquoi le nom du tableau en feuille RESULTAT changerait.

En effet quand on modifie ce tableau il ne faut importer que des valeurs.

Par contre il est essentiel de vérifier à chaque fois la feuille KANBANS.

La valeur maximum de la colonne L doit correspondre au nombre de colonnes M N O etc...

Si ce nombre est augmenté ajouter les formules et ajuster la formule de la MFC
 

Kushi

XLDnaute Nouveau
En fait je ne vois vraiment pas pourquoi le nom du tableau en feuille RESULTAT changerait.

En effet quand on modifie ce tableau il ne faut importer que des valeurs.

Par contre il est essentiel de vérifier à chaque fois la feuille KANBANS.

La valeur maximum de la colonne L doit correspondre au nombre de colonnes M N O etc...

Si ce nombre est augmenté ajouter les formules et ajuster la formule de la MFC
Le nom des tableaux changent car ce sont des nouveaux tableaux créés à chaque nouvelles manip.

En nommant le tableau ça fonctionne .

Cependant, j'ai une autre question j'ai voulu faire en sorte de pouvoir implanter la formule en VBA sauf que ça me met des "@" dans la formule ... sans ça fonctionne parfaitement, mais je ne sais pas comment les enlever ...

Exemple :

1) le code

1661499999925.png


2) Le résultat cellule M7

1661500051139.png


et donc les "@" m'empêche de faire le calcul.... Comment faire ?

Kushi.
 

job75

XLDnaute Barbatruc
Bonjour Kushi, le forum,

Je ne sais pas ce que vous faites avec le VBA mais si l'on veut ajuster automatiquement la plage des formules en feuille KANBANS voyez ce fichier (2) et la macro de la feuille RESULTAT :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim P As Range, ncol%, ncolpresent%
ListObjects(1).Range.Columns(1).Name = "TRI" 'nomme la 1ère colonne du tableau structuré
If Intersect(Target, [TRI].EntireColumn) Is Nothing Then Exit Sub
Set P = Sheets("KANBANS").[M5:M1819] 'dimension à adapter éventuellement
ncol = Application.Max(P.Offset(, -1)) 'maximum en colonne L
If ncol = 0 Then ncol = 1 'au moins 1 colonne
ncolpresent = Application.CountA(P(1).Resize(, Columns.Count - P.Column + 1))
If ncol > ncolpresent Then P.Columns(ncolpresent).AutoFill P.Columns(ncolpresent).Resize(, ncol - ncolpresent + 1) 'agrandissement
If ncol < ncolpresent Then P.Columns(ncol + 1).Resize(, ncolpresent - ncol).Clear 'effacement
With P.Parent.UsedRange: End With 'actualise la barre de défilement horizontale
P.Resize(, ncol).Name = "PlageMFC" 'plage nommée pour la MFC
End Sub
Elle se déclenche quand on modifie la colonne E.

Formule matricielle en M7 de la feuille KANBANS :
Code:
=SI($L7="";"";SIERREUR(PETITE.VALEUR(SI(ESTNUM(CHERCHE($C7;TRI));LIGNE(TRI));COLONNE()-12);""))
Pour tester copiez la plage E2:E112 de la feuille RESULTAT sur E113:E1000 et voyez la feuille KANBANS.

A+
 

Pièces jointes

  • exemple(2).xlsm
    479.1 KB · Affichages: 4

job75

XLDnaute Barbatruc
Bonjour Kushi, le forum,

J'ai regardé de plus près les correspondances ente les deux feuilles.

Voyez la cellule E70 de la feuille RESULTAT avec PS200050241/01-ECROU BAS M6 8 ISO4035 (View).

Elle correspond à C905 de la feuille KANBANS avec 20005024.

C'est le seul texte trouvé en feuille RESULTAT qui ne soit pas suivi par le caractère "/".

Et cela suffit pour enlever toute possibilité de s'appuyer sur "/".

A+
 

Discussions similaires