Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Appel à une fonction dans le formatage conditionnel

2 réponses
Avatar
Patrick
Bonjour,

En Excel 2003, j'ai remplacé l'expression du formatage conditionnel qui
devenait un peu complexe par l'appel à une fonction VBA plus simple à
maintenir et à documenter.

J'ai propagé ce formatage à l'ensemble des cellules de mon onglet.

Je me demande :
- d'une part si c'est une bonne idée,
- d'autre part, pourquoi l'événement "Worksheet_Change" semble devenir
inopérant dès que j'utilise une fonction dans le formatage conditionnel ?

D'avance merci.

--
Cordialement,
Patrick Even

2 réponses

Avatar
Patrick
> Aucun formatage n'élicite ce comportement dans une feuille de calcul
qu'il soit direct ou par mise en forme conditionnelle.



Je constate pourtant le contraire sur cet exemple simple :

- Je code dans Feuil1

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then
Cells(Target.Row, Target.Column + 2).Select
End If
End Sub

- Et lorsque je saisis une valeur en A1, le cuseur passe en C1.
C'est ce que je souhaite.

- Je place maintenant en B1 un formatage conditionnel
avec comme formule =Formatage1($A1)
- Je crée une fonction Formatage1 dont le code est :

Function Formatage1(Cellule As Range) As Boolean
If Cells(Cellule.Row, 1) = "Rouge" Then
Formatage1 = True
Else
Formatage1 = False
End If
End Function
- Je saisis "Rouge" dans en A1.
Et la cellule B1 devient rouge.
Mais le curseur reste en A1 !
Et je ne comprends pas pourquoi il ne va plus en C1.
--
Cordialement,
Patrick Even


"MichDenis" wrote:

Les fonctions natives d'excel sont plus "rapide" que les fonctions
personnalisées... cela dit, comme ceci est ton application et que
tu penses y gagner au change par la clarté de ce que tu fais...
ce n'est pas un mal de se faire plaisir !

| l'événement "Worksheet_Change" semble devenir inopérant

Cet événement se produit SEULEMENT si une cellule est passée
en mode édition. Cela se fait soit en tapant une nouvelle valeur
dans une cellule, en utilisant la touche F2 ou en double-cliquant
dans la cellule. Suite à la validation, l'événement est déclenché.

Aucun formatage n'élicite ce comportement dans une feuille de calcul
qu'il soit direct ou par mise en forme conditionnelle.

Ta fonction personnalisée de ta mise en forme conditionnelle peut être
rééavaluer ... mais ceci n'a d'incidence que sur le formatage et non sur
les événements de la feuille.



"Patrick" a écrit dans le message de news:
Bonjour,

En Excel 2003, j'ai remplacé l'expression du formatage conditionnel qui
devenait un peu complexe par l'appel à une fonction VBA plus simple à
maintenir et à documenter.

J'ai propagé ce formatage à l'ensemble des cellules de mon onglet.

Je me demande :
- d'une part si c'est une bonne idée,
- d'autre part, pourquoi l'événement "Worksheet_Change" semble devenir
inopérant dès que j'utilise une fonction dans le formatage conditionnel ?

D'avance merci.

--
Cordialement,
Patrick Even


Avatar
MichDenis
Ton problème émane de l'utilisation Select de ta procédure "Worksheet_Change"
La différence entre "Select" et "Activate" =>> ça marche ou pas ;-)))
'--------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row = 1 Then
Target.Offset(, 2).Activate
End If
End Sub