Format conditionnel spécifique!besoin de macro ou pas?

  • Initiateur de la discussion Initiateur de la discussion idimpact
  • Date de début Date de début

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 !

I

idimpact

Guest
Salut le forum!

Voici mon soucis :

Aujourd'hui dans mon tableau j'utilise la mise en forme conditionnelle pour colorier ma ligne si la valeur de la colonne E correspond à "test".

Si la ligne 5 est coloriée et que A4=A5 alors je veux colorier la ligne 4 et ainsi de suite😎

Vous trouverez un exemple en piece jointe
 
Re : Format conditionnel spécifique!besoin de macro ou pas?

Rebonjour,

S'il y a plusieurs valeurs (conditions MFC) en colonne E, on peut utiliser :

Code:
Sub EtendreTest()
Dim plage As Range, d As Object, cel As Range, txt$
Application.ScreenUpdating = False
On Error Resume Next
Set plage = [E2:E65536].SpecialCells(xlCellTypeConstants, 2)
Set d = CreateObject("Scripting.Dictionary")
For Each cel In plage.Offset(, -4)
  If Not d.Exists(cel.Value) Then
    txt = cel
    d.Add txt, txt
    [A:A].Replace txt, 1, LookAt:=xlWhole
    Set plage = [A:A].SpecialCells(xlCellTypeConstants, 1)
    plage.Offset(, 4) = cel.Offset(, 4)
    plage = txt
  End If
Next
End Sub
Fichier (5).

Edit : si l'on veut plus de 3 conditions pour la MFC, il faut utiliser Excel 2007 ou suivantes.

A+
 

Pièces jointes

Dernière édition:
Re : Format conditionnel spécifique!besoin de macro ou pas?

merci job 75!

Pour le format conditionnel, je suis sous 2007 donc pas de problèmes sur le nombre de conditions.

J'ai un soucis avec la macro, par exemple si je tape des valeur en E2 et E4 et en E5 je rentre la valeur "test3". La macro ne me colorie pas pas les lignes E2 et E4, elle ajoute en colonne F la valeur E2 aux lignes concernées.

J'ai du mal a comprendre la macro, j'ai bien essayé de la modifier mais sans succès.🙁
 
Re : Format conditionnel spécifique!besoin de macro ou pas?

Re,

En colonne E il ne faut pas entrer n'importe quoi, mais les valeurs utilisées par la MFC.

Et pour une compagnie donnée, c'est la 1ère valeur trouvée en colonne E qui détermine ce qui est entré en colonne E - version (5) - ou en colonne F - version (6).

Autrement, s'il y a plusieurs valeurs pour une compagnie, laquelle choisir ???

A+
 
Re : Format conditionnel spécifique!besoin de macro ou pas?

Merci pour ces explications!

En effet dans la colonne E, j'ai des données qui ne sont pas sous MFC. Toutes mes MFC sont des statuts définitifs, autrement dit impossible d'avoir deux MFC différentes pour la meme compagnie.

En gros je demande a la macro lorsqu'elle rencontre une ligne coloriée, de me colorier toutes les lignes ayant la meme valeur en colonne A que la ligne coloriée

🙂
 
Re : Format conditionnel spécifique!besoin de macro ou pas?

Re,

Bon je vois. J'ai donc complété :

1) grâce à cette instruction, seules les valeurs utilisées par la MFC sont traitées :

tablo = Array("test1", "test2", "test3") 'conditions MFC à adapter

2) la colonne F est renseignée seulement quand la cellule en colonne E est vide.

Dites-moi si cela vous convient.

A+
 

Pièces jointes

Re : Format conditionnel spécifique!besoin de macro ou pas?

Désolé mais le problème est que si j'efface un code MFC (statut en colonne E) ou le modifie les cellules précédentes restent coloriées.

La macro vient colorier uniquement les lignes qui ont une cellule vide en colonne E.

En gros, la solution que tu m'as proposé par formule est parfaite exeptée le ralentissement d'excel qui est du à la mise en forme conditionnelle avec la formule
=DECALER(Sheet1!$A2;;;EQUIV("test";Sheet1!$E2:$E$1000;0))

Merci pour ton aide! je n'arrive définitivement pas à modifier ta macro, trop la langage inconnu!!

Set d = CreateObject("Scripting.Dictionary")
If IsNumeric(Application.Match(cel.Offset(, 4), tablo, 0)) Then
txt = cel
d.Add txt, txt
[A:A].Replace txt, 1, LookAt:=xlWhole
Set plage = [A:A].SpecialCells(xlCellTypeConstants, 1)
 
Re : Format conditionnel spécifique!besoin de macro ou pas?

Re,

Désolé mais le problème est que si j'efface un code MFC (statut en colonne E) ou le modifie les cellules précédentes restent coloriées.

Il faut réinitialiser tout, en effaçant la colonne F.

La macro vient colorier uniquement les lignes qui ont une cellule vide en colonne E.

Cela me paraissait logique, mais si vous voulez tout colorer, voyez le fichier (8).

Maintenant si vous voulez que VBA fasse exactement ce que faisaient mes formules, c'est possible mais lourd.

Faut-il que le tableau soit trié ?

A+
 

Pièces jointes

Re : Format conditionnel spécifique!besoin de macro ou pas?

Ok, je ne pensais pas que la démarche était si lourde, je vais utiliser la dernière macro (8) et informer mes collègues de faire attention lors du renseignement du statut de la compagnie!!

Je souhaite la faire fonctionner selon un évenement :

valeur test1, test2,test3 dans la colonne E.

Macro évènementielle dans le Private Module de la Feuille en Question :

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = '$E' Then
If Me.Range('E') = "test1" Or "test2" Or "test3" Then
End If
End If
End Sub

???
 
Re : Format conditionnel spécifique!besoin de macro ou pas?

Re,

Mettre dans le code de la feuille, à la place du bouton :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("A:A,E:E")) Is Nothing Then Exit Sub
Application.EnableEvents = False
EtendreTest
Application.EnableEvents = True
End Sub
Et au début de la macro j'ai mis :

[F:F].ClearContents

Fichier (9).

A+
 

Pièces jointes

Re : Format conditionnel spécifique!besoin de macro ou pas?

😎 Magnifique😎

un GRAND merci pour votre aide, tout fonctionne parfaitement et j'ai réussi à adapter la macro à mon véritable fichier (trop lourd pour etre partagé) le tout fonctionne parfaitement sans ralentir de trop la machine.

Merci pour votre patience et merci de ne pas m'avoir "abandonné en route"!

Bonne journée
 
Re : Format conditionnel spécifique!besoin de macro ou pas?

Bonjour idimpact, le fil, le forum,

VBA nous a montré l'utilité de la colonne F.

Alors voici 2 solutions par formules matricielles en F2.

Formule 1 :

Code:
=INDEX(E:E;MIN(SI((A$2:A$1000=A2)*ESTNUM(EQUIV(E$2:E$1000;{"test1";"test2";"test3"};0));LIGNE(E$2:E$1000))))
Formule 2 :

Code:
=INDEX(E:E;EQUIV(1;(A$1:A$1000=A2)*SIGNE(EQUIV(E$1:E$1000;{"test1";"test2";"test3"};0));0))
Chacune est à valider par Ctrl+Maj+Entrée et à tirer vers le bas.

Bien sûr adapter la limite 1000 au tableau réel.

J'ai pu vérifier que Formule 2 est un peu plus rapide que Formule 1.

Il faut les comparer avec VBA sur le fichier réel.

En effet les temps de calcul dépendent :

- du nombre de lignes du tableau (surtout pour les formules)

- du nombre de valeurs en colonne E (pour VBA)

A+
 

Pièces jointes

Re : Format conditionnel spécifique!besoin de macro ou pas?

Mon tableau est assez grand... Il peut arriver qu'il dépasse facilement les 1000 lignes. J'ai pu remarquer que les fonctions matricielles sont tres lentes et problematiques lors de l'ajout d'une nouvelle ligne. D'ailleurs avec la macro qui s'execute de maniere conditionnelle, Excel plante lors de l'ajout d'une ligne ou lors d'un copier/coller de plusieurs lignes.
 
Re : Format conditionnel spécifique!besoin de macro ou pas?

D'ailleurs avec la macro qui s'execute de maniere conditionnelle, Excel plante lors de l'ajout d'une ligne ou lors d'un copier/coller de plusieurs lignes.

Ce n'est pas vraiment un plantage, mais c'est bien fait pour moi 🙂

Voir le fichier(11), il faut en effet terminer la macro par :

Application.ScreenUpdating = True

Mais les 2 formules du post #28, combien de temps mettent-elles à s'exécuter sur vos 1000 lignes ? Et VBA ??

A+
 

Pièces jointes

Dernière édition:
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

M
Réponses
5
Affichages
1 K
marcenana
M
E
Réponses
12
Affichages
2 K
M
Réponses
3
Affichages
1 K
Retour