Je génère des mises en forme conditionnelles à la volée.
Quand je veux mettre des paramètres plus complexes que des simples
égalités, cela pose un problème car il faut écrire la formule dans la
langue de l'application. Ce qui fait que je ne peux pas utiliser ma
fonction de génération dans un excel qui n'est pas dans la langue de
celui que j'ai utilisé pour écrire ma fonction.
Comment faire, sachant que je n'ai pas trop envie d'avoir un cas par
langue supporté par excel
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Daniel.C
Bonjour. Utilise une fonction perso afin d'évaluer ta formule. Si tu utilises dans ta condition: =ENT(A1), écris : Formula1:="=gene(""=INT(A1)=8"")" Avec la fonction :
Function gene(formule) Application.Volatile gene = Evaluate(formule) End Function
Cordialement. Daniel "bcar" a écrit dans le message de news: fjoqs2$h4r$
Bonjour,
Je génère des mises en forme conditionnelles à la volée. Quand je veux mettre des paramètres plus complexes que des simples égalités, cela pose un problème car il faut écrire la formule dans la langue de l'application. Ce qui fait que je ne peux pas utiliser ma fonction de génération dans un excel qui n'est pas dans la langue de celui que j'ai utilisé pour écrire ma fonction.
Comment faire, sachant que je n'ai pas trop envie d'avoir un cas par langue supporté par excel
Merci
Bonjour.
Utilise une fonction perso afin d'évaluer ta formule. Si tu utilises dans ta
condition:
=ENT(A1),
écris :
Formula1:="=gene(""=INT(A1)=8"")"
Avec la fonction :
Function gene(formule)
Application.Volatile
gene = Evaluate(formule)
End Function
Cordialement.
Daniel
"bcar" <bcar4@laposte.net> a écrit dans le message de news:
fjoqs2$h4r$1@reader1.imaginet.fr...
Bonjour,
Je génère des mises en forme conditionnelles à la volée.
Quand je veux mettre des paramètres plus complexes que des simples
égalités, cela pose un problème car il faut écrire la formule dans la
langue de l'application. Ce qui fait que je ne peux pas utiliser ma
fonction de génération dans un excel qui n'est pas dans la langue de
celui que j'ai utilisé pour écrire ma fonction.
Comment faire, sachant que je n'ai pas trop envie d'avoir un cas par
langue supporté par excel
Bonjour. Utilise une fonction perso afin d'évaluer ta formule. Si tu utilises dans ta condition: =ENT(A1), écris : Formula1:="=gene(""=INT(A1)=8"")" Avec la fonction :
Function gene(formule) Application.Volatile gene = Evaluate(formule) End Function
Cordialement. Daniel "bcar" a écrit dans le message de news: fjoqs2$h4r$
Bonjour,
Je génère des mises en forme conditionnelles à la volée. Quand je veux mettre des paramètres plus complexes que des simples égalités, cela pose un problème car il faut écrire la formule dans la langue de l'application. Ce qui fait que je ne peux pas utiliser ma fonction de génération dans un excel qui n'est pas dans la langue de celui que j'ai utilisé pour écrire ma fonction.
Comment faire, sachant que je n'ai pas trop envie d'avoir un cas par langue supporté par excel
Merci
bcar
C'est une bonne idée, merci.
Cependant, les formules que j'écris sont fonction de la cellule sur lesquelles elle s'appliquent (par exemple "=IsNA(RC)")
je suis par conséquent obligé de générer une mise en forme conditionnelle par ligne (peu agréable à manipuler !)
Les fonctions offset et compagnie ne m'aident pas car je ne sais pas comment faire référence à la cellule en cours dans mon expression qui est dans ma mise en forme conditionnelle en mode A1
grossoModo j'aimerais avoir : Call r.FormatConditions.Add(Type:=xlCellValue, Operator:=xlEqual, Formula1:="=IsNA(RC)")
cela n'est pas possible à cause de la langue donc : ...Formula1:="=myEval(""IsNA(RC)"")")
avec Public Function myEval(ByVal formula As String) Application.Volatile myEval= Evaluate(formula) End Function
mais cela n'est pas possible du fait qu'evaluate ne fonctionne qu'en mode A1
Et là je suis un peu bloqué
C'est une bonne idée, merci.
Cependant, les formules que j'écris sont fonction de la cellule sur
lesquelles elle s'appliquent (par exemple "=IsNA(RC)")
je suis par conséquent obligé de générer une mise en forme
conditionnelle par ligne (peu agréable à manipuler !)
Les fonctions offset et compagnie ne m'aident pas car je ne sais pas
comment faire référence à la cellule en cours dans mon expression qui
est dans ma mise en forme conditionnelle en mode A1
grossoModo j'aimerais avoir :
Call r.FormatConditions.Add(Type:=xlCellValue, Operator:=xlEqual,
Formula1:="=IsNA(RC)")
cela n'est pas possible à cause de la langue donc :
...Formula1:="=myEval(""IsNA(RC)"")")
avec
Public Function myEval(ByVal formula As String)
Application.Volatile
myEval= Evaluate(formula)
End Function
mais cela n'est pas possible du fait qu'evaluate ne fonctionne qu'en mode A1
Cependant, les formules que j'écris sont fonction de la cellule sur lesquelles elle s'appliquent (par exemple "=IsNA(RC)")
je suis par conséquent obligé de générer une mise en forme conditionnelle par ligne (peu agréable à manipuler !)
Les fonctions offset et compagnie ne m'aident pas car je ne sais pas comment faire référence à la cellule en cours dans mon expression qui est dans ma mise en forme conditionnelle en mode A1
grossoModo j'aimerais avoir : Call r.FormatConditions.Add(Type:=xlCellValue, Operator:=xlEqual, Formula1:="=IsNA(RC)")
cela n'est pas possible à cause de la langue donc : ...Formula1:="=myEval(""IsNA(RC)"")")
avec Public Function myEval(ByVal formula As String) Application.Volatile myEval= Evaluate(formula) End Function
mais cela n'est pas possible du fait qu'evaluate ne fonctionne qu'en mode A1
Et là je suis un peu bloqué
Daniel.C
Bonjour. Exemple pour une plage :
Sub test1() For Each c In Selection c.FormatConditions.Add Type:=xlExpression, _ Formula1:="=gene(""=isna(" & c.Address & ")"")" Selection.FormatConditions(c.FormatConditions.Count).SetFirstPriority With c.FormatConditions(1).Interior .PatternColorIndex = xlAutomatic .Color = 255 .TintAndShade = 0 End With c.FormatConditions(1).StopIfTrue = False Next c End Sub
Daniel Function gene(formule) Application.Volatile gene = Evaluate(formule) End Function
"bcar" a écrit dans le message de news: fjtqa4$e96$
C'est une bonne idée, merci.
Cependant, les formules que j'écris sont fonction de la cellule sur lesquelles elle s'appliquent (par exemple "=IsNA(RC)")
je suis par conséquent obligé de générer une mise en forme conditionnelle par ligne (peu agréable à manipuler !)
Les fonctions offset et compagnie ne m'aident pas car je ne sais pas comment faire référence à la cellule en cours dans mon expression qui est dans ma mise en forme conditionnelle en mode A1
grossoModo j'aimerais avoir : Call r.FormatConditions.Add(Type:=xlCellValue, Operator:=xlEqual, Formula1:="=IsNA(RC)")
cela n'est pas possible à cause de la langue donc : ...Formula1:="=myEval(""IsNA(RC)"")")
avec Public Function myEval(ByVal formula As String) Application.Volatile myEval= Evaluate(formula) End Function
mais cela n'est pas possible du fait qu'evaluate ne fonctionne qu'en mode A1
Et là je suis un peu bloqué
Bonjour.
Exemple pour une plage :
Sub test1()
For Each c In Selection
c.FormatConditions.Add Type:=xlExpression, _
Formula1:="=gene(""=isna(" & c.Address & ")"")"
Selection.FormatConditions(c.FormatConditions.Count).SetFirstPriority
With c.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 255
.TintAndShade = 0
End With
c.FormatConditions(1).StopIfTrue = False
Next c
End Sub
Daniel
Function gene(formule)
Application.Volatile
gene = Evaluate(formule)
End Function
"bcar" <bcar4@laposte.net> a écrit dans le message de news:
fjtqa4$e96$1@reader1.imaginet.fr...
C'est une bonne idée, merci.
Cependant, les formules que j'écris sont fonction de la cellule sur
lesquelles elle s'appliquent (par exemple "=IsNA(RC)")
je suis par conséquent obligé de générer une mise en forme
conditionnelle par ligne (peu agréable à manipuler !)
Les fonctions offset et compagnie ne m'aident pas car je ne sais pas
comment faire référence à la cellule en cours dans mon expression qui
est dans ma mise en forme conditionnelle en mode A1
grossoModo j'aimerais avoir :
Call r.FormatConditions.Add(Type:=xlCellValue, Operator:=xlEqual,
Formula1:="=IsNA(RC)")
cela n'est pas possible à cause de la langue donc :
...Formula1:="=myEval(""IsNA(RC)"")")
avec
Public Function myEval(ByVal formula As String)
Application.Volatile
myEval= Evaluate(formula)
End Function
mais cela n'est pas possible du fait qu'evaluate ne fonctionne qu'en mode
A1
Sub test1() For Each c In Selection c.FormatConditions.Add Type:=xlExpression, _ Formula1:="=gene(""=isna(" & c.Address & ")"")" Selection.FormatConditions(c.FormatConditions.Count).SetFirstPriority With c.FormatConditions(1).Interior .PatternColorIndex = xlAutomatic .Color = 255 .TintAndShade = 0 End With c.FormatConditions(1).StopIfTrue = False Next c End Sub
Daniel Function gene(formule) Application.Volatile gene = Evaluate(formule) End Function
"bcar" a écrit dans le message de news: fjtqa4$e96$
C'est une bonne idée, merci.
Cependant, les formules que j'écris sont fonction de la cellule sur lesquelles elle s'appliquent (par exemple "=IsNA(RC)")
je suis par conséquent obligé de générer une mise en forme conditionnelle par ligne (peu agréable à manipuler !)
Les fonctions offset et compagnie ne m'aident pas car je ne sais pas comment faire référence à la cellule en cours dans mon expression qui est dans ma mise en forme conditionnelle en mode A1
grossoModo j'aimerais avoir : Call r.FormatConditions.Add(Type:=xlCellValue, Operator:=xlEqual, Formula1:="=IsNA(RC)")
cela n'est pas possible à cause de la langue donc : ...Formula1:="=myEval(""IsNA(RC)"")")
avec Public Function myEval(ByVal formula As String) Application.Volatile myEval= Evaluate(formula) End Function
mais cela n'est pas possible du fait qu'evaluate ne fonctionne qu'en mode A1
Et là je suis un peu bloqué
bcar
Merci pour votre réponse. Je m'étais déjà intéressé à la solution de la boucle, mais celle-ci ne m'emballe pas trop car après cela oblige à manipuler les filtre 1 par 1 ce qui est assez pénible.
A la limite, je crois que je préférerais spécialiser la fonction en suivant la langue de l'application (il faudrait juste que je me rappelle comment connaître la langue) en me faisant une petite table de traduction des fonctions et en supprimant la fonctionnalité si la langue n'est pas connue.
Bonjour. Exemple pour une plage :
Sub test1() For Each c In Selection c.FormatConditions.Add Type:=xlExpression, _ Formula1:="=gene(""=isna(" & c.Address & ")"")" Selection.FormatConditions(c.FormatConditions.Count).SetFirstPriority With c.FormatConditions(1).Interior .PatternColorIndex = xlAutomatic .Color = 255 .TintAndShade = 0 End With c.FormatConditions(1).StopIfTrue = False Next c End Sub
Daniel Function gene(formule) Application.Volatile gene = Evaluate(formule) End Function
Merci pour votre réponse.
Je m'étais déjà intéressé à la solution de la boucle, mais celle-ci ne
m'emballe pas trop car après cela oblige à manipuler les filtre 1 par 1
ce qui est assez pénible.
A la limite, je crois que je préférerais spécialiser la fonction en
suivant la langue de l'application (il faudrait juste que je me rappelle
comment connaître la langue) en me faisant une petite table de
traduction des fonctions et en supprimant la fonctionnalité si la langue
n'est pas connue.
Bonjour.
Exemple pour une plage :
Sub test1()
For Each c In Selection
c.FormatConditions.Add Type:=xlExpression, _
Formula1:="=gene(""=isna(" & c.Address & ")"")"
Selection.FormatConditions(c.FormatConditions.Count).SetFirstPriority
With c.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 255
.TintAndShade = 0
End With
c.FormatConditions(1).StopIfTrue = False
Next c
End Sub
Daniel
Function gene(formule)
Application.Volatile
gene = Evaluate(formule)
End Function
Merci pour votre réponse. Je m'étais déjà intéressé à la solution de la boucle, mais celle-ci ne m'emballe pas trop car après cela oblige à manipuler les filtre 1 par 1 ce qui est assez pénible.
A la limite, je crois que je préférerais spécialiser la fonction en suivant la langue de l'application (il faudrait juste que je me rappelle comment connaître la langue) en me faisant une petite table de traduction des fonctions et en supprimant la fonctionnalité si la langue n'est pas connue.
Bonjour. Exemple pour une plage :
Sub test1() For Each c In Selection c.FormatConditions.Add Type:=xlExpression, _ Formula1:="=gene(""=isna(" & c.Address & ")"")" Selection.FormatConditions(c.FormatConditions.Count).SetFirstPriority With c.FormatConditions(1).Interior .PatternColorIndex = xlAutomatic .Color = 255 .TintAndShade = 0 End With c.FormatConditions(1).StopIfTrue = False Next c End Sub
Daniel Function gene(formule) Application.Volatile gene = Evaluate(formule) End Function
bcar
En fait je crois que je vais faire quelque chose avec les formulaLocal, je vous tiens au courant
Merci pour votre réponse. Je m'étais déjà intéressé à la solution de la boucle, mais celle-ci ne m'emballe pas trop car après cela oblige à manipuler les filtre 1 par 1 ce qui est assez pénible.
A la limite, je crois que je préférerais spécialiser la fonction en suivant la langue de l'application (il faudrait juste que je me rappelle comment connaître la langue) en me faisant une petite table de traduction des fonctions et en supprimant la fonctionnalité si la langue n'est pas connue.
En fait je crois que je vais faire quelque chose avec les formulaLocal,
je vous tiens au courant
Merci pour votre réponse.
Je m'étais déjà intéressé à la solution de la boucle, mais celle-ci ne
m'emballe pas trop car après cela oblige à manipuler les filtre 1 par 1
ce qui est assez pénible.
A la limite, je crois que je préférerais spécialiser la fonction en
suivant la langue de l'application (il faudrait juste que je me rappelle
comment connaître la langue) en me faisant une petite table de
traduction des fonctions et en supprimant la fonctionnalité si la langue
n'est pas connue.
En fait je crois que je vais faire quelque chose avec les formulaLocal, je vous tiens au courant
Merci pour votre réponse. Je m'étais déjà intéressé à la solution de la boucle, mais celle-ci ne m'emballe pas trop car après cela oblige à manipuler les filtre 1 par 1 ce qui est assez pénible.
A la limite, je crois que je préférerais spécialiser la fonction en suivant la langue de l'application (il faudrait juste que je me rappelle comment connaître la langue) en me faisant une petite table de traduction des fonctions et en supprimant la fonctionnalité si la langue n'est pas connue.
bcar
J'ai essayé de feinter excel en faisant ceci : shDest.Cells(5, 9) = "=IsError(I6)" ' formule en Anglais tmp = shDest.Cells(5, 9).FormulaLocal ' formule dans la langue d'Excel r.FormatConditions.Add(Type:=xlExpression, Formula1:=tmp)
Parfois ça marche, mais souvent ça ne marche pas. Je ne comprend pas pourquoi au lieu de retrouver systematiquement I6 dans ma formule de mise en forme conditionnelle je retrouve parfois des valeur aléatoires du genre I6854 ou G41789 ou encore J6
En fait je crois que je vais faire quelque chose avec les formulaLocal, je vous tiens au courant
Merci pour votre réponse. Je m'étais déjà intéressé à la solution de la boucle, mais celle-ci ne m'emballe pas trop car après cela oblige à manipuler les filtre 1 par 1 ce qui est assez pénible.
A la limite, je crois que je préférerais spécialiser la fonction en suivant la langue de l'application (il faudrait juste que je me rappelle comment connaître la langue) en me faisant une petite table de traduction des fonctions et en supprimant la fonctionnalité si la langue n'est pas connue.
J'ai essayé de feinter excel en faisant ceci :
shDest.Cells(5, 9) = "=IsError(I6)" ' formule en Anglais
tmp = shDest.Cells(5, 9).FormulaLocal ' formule dans la langue d'Excel
r.FormatConditions.Add(Type:=xlExpression, Formula1:=tmp)
Parfois ça marche, mais souvent ça ne marche pas.
Je ne comprend pas pourquoi au lieu de retrouver systematiquement I6
dans ma formule de mise en forme conditionnelle je retrouve parfois des
valeur aléatoires du genre I6854 ou G41789 ou encore J6
En fait je crois que je vais faire quelque chose avec les formulaLocal,
je vous tiens au courant
Merci pour votre réponse.
Je m'étais déjà intéressé à la solution de la boucle, mais celle-ci ne
m'emballe pas trop car après cela oblige à manipuler les filtre 1 par 1
ce qui est assez pénible.
A la limite, je crois que je préférerais spécialiser la fonction en
suivant la langue de l'application (il faudrait juste que je me rappelle
comment connaître la langue) en me faisant une petite table de
traduction des fonctions et en supprimant la fonctionnalité si la langue
n'est pas connue.
J'ai essayé de feinter excel en faisant ceci : shDest.Cells(5, 9) = "=IsError(I6)" ' formule en Anglais tmp = shDest.Cells(5, 9).FormulaLocal ' formule dans la langue d'Excel r.FormatConditions.Add(Type:=xlExpression, Formula1:=tmp)
Parfois ça marche, mais souvent ça ne marche pas. Je ne comprend pas pourquoi au lieu de retrouver systematiquement I6 dans ma formule de mise en forme conditionnelle je retrouve parfois des valeur aléatoires du genre I6854 ou G41789 ou encore J6
En fait je crois que je vais faire quelque chose avec les formulaLocal, je vous tiens au courant
Merci pour votre réponse. Je m'étais déjà intéressé à la solution de la boucle, mais celle-ci ne m'emballe pas trop car après cela oblige à manipuler les filtre 1 par 1 ce qui est assez pénible.
A la limite, je crois que je préférerais spécialiser la fonction en suivant la langue de l'application (il faudrait juste que je me rappelle comment connaître la langue) en me faisant une petite table de traduction des fonctions et en supprimant la fonctionnalité si la langue n'est pas connue.
Philippe.R
Bonjour, Si la référence à I6 doit être absolue pour toute la plage, il manque des $ dans "=IsError(I6)" "=IsError($I$6)" devrait mieux convenir -- Avec plaisir http://dj.joss.free.fr/trombine.htm Philippe.R Pour se connecter au forum : http://www.excelabo.net/mpfe/connexion.php News://news.microsoft.com/microsoft.public.fr.excel "bcar" a écrit dans le message de news:fk5gap$p5b$
J'ai essayé de feinter excel en faisant ceci : shDest.Cells(5, 9) = "=IsError(I6)" ' formule en Anglais tmp = shDest.Cells(5, 9).FormulaLocal ' formule dans la langue d'Excel r.FormatConditions.Add(Type:=xlExpression, Formula1:=tmp)
Parfois ça marche, mais souvent ça ne marche pas. Je ne comprend pas pourquoi au lieu de retrouver systematiquement I6 dans ma formule de mise en forme conditionnelle je retrouve parfois des valeur aléatoires du genre I6854 ou G41789 ou encore J6
En fait je crois que je vais faire quelque chose avec les formulaLocal, je vous tiens au courant
Merci pour votre réponse. Je m'étais déjà intéressé à la solution de la boucle, mais celle-ci ne m'emballe pas trop car après cela oblige à manipuler les filtre 1 par 1 ce qui est assez pénible.
A la limite, je crois que je préférerais spécialiser la fonction en suivant la langue de l'application (il faudrait juste que je me rappelle comment connaître la langue) en me faisant une petite table de traduction des fonctions et en supprimant la fonctionnalité si la langue n'est pas connue.
Bonjour,
Si la référence à I6 doit être absolue pour toute la plage, il manque des $
dans "=IsError(I6)"
"=IsError($I$6)" devrait mieux convenir
--
Avec plaisir
http://dj.joss.free.fr/trombine.htm
Philippe.R
Pour se connecter au forum :
http://www.excelabo.net/mpfe/connexion.php
News://news.microsoft.com/microsoft.public.fr.excel
"bcar" <bcar4@laposte.net> a écrit dans le message de
news:fk5gap$p5b$1@reader1.imaginet.fr...
J'ai essayé de feinter excel en faisant ceci :
shDest.Cells(5, 9) = "=IsError(I6)" ' formule en Anglais
tmp = shDest.Cells(5, 9).FormulaLocal ' formule dans la langue d'Excel
r.FormatConditions.Add(Type:=xlExpression, Formula1:=tmp)
Parfois ça marche, mais souvent ça ne marche pas.
Je ne comprend pas pourquoi au lieu de retrouver systematiquement I6
dans ma formule de mise en forme conditionnelle je retrouve parfois des
valeur aléatoires du genre I6854 ou G41789 ou encore J6
En fait je crois que je vais faire quelque chose avec les formulaLocal,
je vous tiens au courant
Merci pour votre réponse.
Je m'étais déjà intéressé à la solution de la boucle, mais celle-ci ne
m'emballe pas trop car après cela oblige à manipuler les filtre 1 par 1
ce qui est assez pénible.
A la limite, je crois que je préférerais spécialiser la fonction en
suivant la langue de l'application (il faudrait juste que je me rappelle
comment connaître la langue) en me faisant une petite table de
traduction des fonctions et en supprimant la fonctionnalité si la langue
n'est pas connue.
Bonjour, Si la référence à I6 doit être absolue pour toute la plage, il manque des $ dans "=IsError(I6)" "=IsError($I$6)" devrait mieux convenir -- Avec plaisir http://dj.joss.free.fr/trombine.htm Philippe.R Pour se connecter au forum : http://www.excelabo.net/mpfe/connexion.php News://news.microsoft.com/microsoft.public.fr.excel "bcar" a écrit dans le message de news:fk5gap$p5b$
J'ai essayé de feinter excel en faisant ceci : shDest.Cells(5, 9) = "=IsError(I6)" ' formule en Anglais tmp = shDest.Cells(5, 9).FormulaLocal ' formule dans la langue d'Excel r.FormatConditions.Add(Type:=xlExpression, Formula1:=tmp)
Parfois ça marche, mais souvent ça ne marche pas. Je ne comprend pas pourquoi au lieu de retrouver systematiquement I6 dans ma formule de mise en forme conditionnelle je retrouve parfois des valeur aléatoires du genre I6854 ou G41789 ou encore J6
En fait je crois que je vais faire quelque chose avec les formulaLocal, je vous tiens au courant
Merci pour votre réponse. Je m'étais déjà intéressé à la solution de la boucle, mais celle-ci ne m'emballe pas trop car après cela oblige à manipuler les filtre 1 par 1 ce qui est assez pénible.
A la limite, je crois que je préférerais spécialiser la fonction en suivant la langue de l'application (il faudrait juste que je me rappelle comment connaître la langue) en me faisant une petite table de traduction des fonctions et en supprimant la fonctionnalité si la langue n'est pas connue.
bcar
Non, ce serait trop facile ! La référence est une référence relative. I6 représente la première cellule du range a mettre en forme conditionnellement, c'est normalement comme cela que l'on fait lorsque l'on est en mode A1. Il est vrai que j'ai mis I6 sans préciser, toute mes excuses (cela dit en passant $I$6 fonctionne à tout les coups, mais ce n'est pas le résultat que je veux obtenir).
Bonjour, Si la référence à I6 doit être absolue pour toute la plage, il manque des $ dans "=IsError(I6)" "=IsError($I$6)" devrait mieux convenir
Non, ce serait trop facile !
La référence est une référence relative.
I6 représente la première cellule du range a mettre en forme
conditionnellement, c'est normalement comme cela que l'on fait lorsque
l'on est en mode A1. Il est vrai que j'ai mis I6 sans préciser, toute
mes excuses (cela dit en passant $I$6 fonctionne à tout les coups, mais
ce n'est pas le résultat que je veux obtenir).
Bonjour,
Si la référence à I6 doit être absolue pour toute la plage, il manque
des $ dans "=IsError(I6)"
"=IsError($I$6)" devrait mieux convenir
Non, ce serait trop facile ! La référence est une référence relative. I6 représente la première cellule du range a mettre en forme conditionnellement, c'est normalement comme cela que l'on fait lorsque l'on est en mode A1. Il est vrai que j'ai mis I6 sans préciser, toute mes excuses (cela dit en passant $I$6 fonctionne à tout les coups, mais ce n'est pas le résultat que je veux obtenir).
Bonjour, Si la référence à I6 doit être absolue pour toute la plage, il manque des $ dans "=IsError(I6)" "=IsError($I$6)" devrait mieux convenir
bcar
Précisons cependant que tmp contient toujours bien "=esterreur(I6)" (puisque mon excel est en Français) mais que quand je fait gérer les mise en forme conditionnelle à partir du tableur ma formule est tout autre, j'ai bien le "=esterreur" mais ce qui est entre parenthèse change suivant je ne sais quelle règle ("(J7)", "(D1048576)" pile le nombre de ligne d'excel par ailleurs, "XFC2", serait-ce le max de colonne d'excel 2007 ? ...)
J'ai essayé de feinter excel en faisant ceci : shDest.Cells(5, 9) = "=IsError(I6)" ' formule en Anglais tmp = shDest.Cells(5, 9).FormulaLocal ' formule dans la langue d'Excel r.FormatConditions.Add(Type:=xlExpression, Formula1:=tmp)
Parfois ça marche, mais souvent ça ne marche pas. Je ne comprend pas pourquoi au lieu de retrouver systematiquement I6 dans ma formule de mise en forme conditionnelle je retrouve parfois des valeur aléatoires du genre I6854 ou G41789 ou encore J6
Précisons cependant que tmp contient toujours bien "=esterreur(I6)"
(puisque mon excel est en Français) mais que quand je fait gérer les
mise en forme conditionnelle à partir du tableur ma formule est tout
autre, j'ai bien le "=esterreur" mais ce qui est entre parenthèse change
suivant je ne sais quelle règle ("(J7)", "(D1048576)" pile le nombre
de ligne d'excel par ailleurs, "XFC2", serait-ce le max de colonne
d'excel 2007 ? ...)
J'ai essayé de feinter excel en faisant ceci :
shDest.Cells(5, 9) = "=IsError(I6)" ' formule en Anglais
tmp = shDest.Cells(5, 9).FormulaLocal ' formule dans la langue d'Excel
r.FormatConditions.Add(Type:=xlExpression, Formula1:=tmp)
Parfois ça marche, mais souvent ça ne marche pas.
Je ne comprend pas pourquoi au lieu de retrouver systematiquement I6
dans ma formule de mise en forme conditionnelle je retrouve parfois des
valeur aléatoires du genre I6854 ou G41789 ou encore J6
Précisons cependant que tmp contient toujours bien "=esterreur(I6)" (puisque mon excel est en Français) mais que quand je fait gérer les mise en forme conditionnelle à partir du tableur ma formule est tout autre, j'ai bien le "=esterreur" mais ce qui est entre parenthèse change suivant je ne sais quelle règle ("(J7)", "(D1048576)" pile le nombre de ligne d'excel par ailleurs, "XFC2", serait-ce le max de colonne d'excel 2007 ? ...)
J'ai essayé de feinter excel en faisant ceci : shDest.Cells(5, 9) = "=IsError(I6)" ' formule en Anglais tmp = shDest.Cells(5, 9).FormulaLocal ' formule dans la langue d'Excel r.FormatConditions.Add(Type:=xlExpression, Formula1:=tmp)
Parfois ça marche, mais souvent ça ne marche pas. Je ne comprend pas pourquoi au lieu de retrouver systematiquement I6 dans ma formule de mise en forme conditionnelle je retrouve parfois des valeur aléatoires du genre I6854 ou G41789 ou encore J6
bcar
C'est bon, j'ai trouvé,
En fait pour la mise en forme conditionnelle, mieux vaut utiliser le style LC même si la feuille est en mode A1 (bizarre !), c'est peut être un Bug. Ce qui nous donne :
Je génère des mises en forme conditionnelles à la volée. Quand je veux mettre des paramètres plus complexes que des simples égalités, cela pose un problème car il faut écrire la formule dans la langue de l'application. Ce qui fait que je ne peux pas utiliser ma fonction de génération dans un excel qui n'est pas dans la langue de celui que j'ai utilisé pour écrire ma fonction.
Comment faire, sachant que je n'ai pas trop envie d'avoir un cas par langue supporté par excel
Merci
C'est bon, j'ai trouvé,
En fait pour la mise en forme conditionnelle, mieux vaut utiliser le
style LC même si la feuille est en mode A1 (bizarre !), c'est peut être
un Bug.
Ce qui nous donne :
Je génère des mises en forme conditionnelles à la volée.
Quand je veux mettre des paramètres plus complexes que des simples
égalités, cela pose un problème car il faut écrire la formule dans la
langue de l'application. Ce qui fait que je ne peux pas utiliser ma
fonction de génération dans un excel qui n'est pas dans la langue de
celui que j'ai utilisé pour écrire ma fonction.
Comment faire, sachant que je n'ai pas trop envie d'avoir un cas par
langue supporté par excel
En fait pour la mise en forme conditionnelle, mieux vaut utiliser le style LC même si la feuille est en mode A1 (bizarre !), c'est peut être un Bug. Ce qui nous donne :
Je génère des mises en forme conditionnelles à la volée. Quand je veux mettre des paramètres plus complexes que des simples égalités, cela pose un problème car il faut écrire la formule dans la langue de l'application. Ce qui fait que je ne peux pas utiliser ma fonction de génération dans un excel qui n'est pas dans la langue de celui que j'ai utilisé pour écrire ma fonction.
Comment faire, sachant que je n'ai pas trop envie d'avoir un cas par langue supporté par excel