VBA et mise en forme conditionnelle

D

Damos 25

Guest
Dans un classeur, je désire modifier le format conditionnel d'une sélection de cellules.
J'utilise pour cela les lignes de code suivantes:

'Format conditionnel
Selection.FormatConditions.Delete
Var_inter = Cells(Lig, Col).Address(False, False)
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=OU(" & Var_inter & "=Rappel_Zone1)"
With Selection.FormatConditions(1).Font
.Bold = True
.Italic = False
.ColorIndex = 3
End With

où:
"Rappel_Zone1" renvoi aux cellules "$D$1:$E$7" de la feuille.

Le format conditionnel est appliqué aux cellules mais n'est pas actif. Pour l'activer, il faut que dans excel, je choisisse l'option mise en forme conditionnelle et que je clique dans la formule écrite ci dessus avant de valider pour que le format conditionnel soit pris en compte.

Est ce que quelqu'un a déjà rencontré ce problème ou en connait la solution?

A+
 
D

Damos 25

Guest
Précisions sur VBA et mise en forme conditionnelle

Bonjour à Tous,

Je ne suis pas sûr d'avoir été assez clair dans l'explication de mon problème hier,..

C'est pourquoi je joins un le fichier "Mise_en_evidence.zip" qui permet:
- De mettre en forme la zone sans macro (Feuille: Résultat à Obtenir), pour information et préciser ce que je cherche à atteindre.
- De mettre en évidence les problèmes rencontrés lors de la mise en forme conditionnelle à l'aide de la macro (Feuille: Mise en évidence Problème), suivre les étapes pas à pas.

De plus, peut être est-ce lié au problème (j'avoue que je ne sais plus dans quelle voie chercher pour le résoudre...) j'utilise actuellement Excel 2000, sous Windows98 SE.

Je pense avoir été plus précis.

D'avance merci de prendre quelques minutes pour étudier ce cas troublant...

A+ Damos.
 

Pièces jointes

  • Mise_en_evidence.zip
    12.3 KB · Affichages: 20
T

Ti

Guest
Re: Précisions sur VBA et mise en forme conditionnelle

je pense que c'est ta formule avec le OU qui est en cause (ne me demande pas pourquoi). Je l'ai modifiée avec un NB.SI et ça marche bien. Voici la nouvelle procédure telle que je l'ai adaptée :

Sub Applique_Format_Conditionnel()
Dim Var_Inter As String
With Range("Résultat2")
.Select
'Suppression des formats conditionnels
.FormatConditions.Delete

'Adresse de la première cellule de "Résultat2"
Var_Inter = .Cells(1, 1).Address(False, False)

'Application du format conditionnel
.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=NB.SI(Rappel_Zone2;" & Var_Inter & ")>0"
'"=OU(" & Var_Inter & "=Rappel_Zone2)"
With .FormatConditions(1).Font
.Bold = True
.Italic = False
.ColorIndex = 3
End With
End With

Range("j6").Select

End Sub
 
D

Damos 25

Guest
Ti, merci pour ton aide, ta solution marche à merveille !

Cependant, je ne pense pas que ce soit le OU qui soit en cause mais plutôt le premier test d’égalité dans le OU.

En effet, dans la version finale j’utilise maintenant la ligne suivante :
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=OU(NB.SI(Rappel_Zone2;" & var_inter & ")>0;NB.SI(Resultat2;" & var_inter &")>1)"

en lieu et place de ce que j’utilisais auparavant et qui ne fonctionnait pas :
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=OU(" & var_inter & "=" & Range("Rappel_Zone2").Address & ";NB.SI(Resultat2;" & var_inter &")>1)"

Quant aux raisons de ce disfonctionnement, je n’en ai aucune idée moi non plus..
A+
Damos
 

Discussions similaires

Statistiques des forums

Discussions
312 970
Messages
2 094 044
Membres
105 926
dernier inscrit
Odyssea