Bonjour.
Je dois rater quelque chose. Suite à la question de Chocho, j'ai monté la
moulinette suivante :
Sub test1()
Dim c As Range, Teste, Formule As String, Couleuyr As Integer
For Each c In Range("D22:O24")
Var = c.Address
With c.FormatConditions(1)
Teste = .Type
Formule = .Formula1
couleur = .Interior.ColorIndex
End With
Var = Evaluate(Formule)
If Evaluate(Formule) = True Then
MsgBox "toto"
End If
Next c
End Sub
Dans chaque cellule de la plage, la même MEFC : test si le contenu de la
cellule est différent de "".
Or le contenu de la variable Formule (et peut-être les autres variables)
n'évolue pas, sauf si, en exécution ligne à ligne, on visualise la MEFC de
la cellule traitée sans y faire de modif avant de récupérer la formule.
Ci-joint le classeur, pour une meilleure compréhension :
http://cjoint.com/?gCoWB1HB27
Merci d'avance.
Daniel
Bonjour.
Je dois rater quelque chose. Suite à la question de Chocho, j'ai monté la
moulinette suivante :
Sub test1()
Dim c As Range, Teste, Formule As String, Couleuyr As Integer
For Each c In Range("D22:O24")
Var = c.Address
With c.FormatConditions(1)
Teste = .Type
Formule = .Formula1
couleur = .Interior.ColorIndex
End With
Var = Evaluate(Formule)
If Evaluate(Formule) = True Then
MsgBox "toto"
End If
Next c
End Sub
Dans chaque cellule de la plage, la même MEFC : test si le contenu de la
cellule est différent de "".
Or le contenu de la variable Formule (et peut-être les autres variables)
n'évolue pas, sauf si, en exécution ligne à ligne, on visualise la MEFC de
la cellule traitée sans y faire de modif avant de récupérer la formule.
Ci-joint le classeur, pour une meilleure compréhension :
http://cjoint.com/?gCoWB1HB27
Merci d'avance.
Daniel
Bonjour.
Je dois rater quelque chose. Suite à la question de Chocho, j'ai monté la
moulinette suivante :
Sub test1()
Dim c As Range, Teste, Formule As String, Couleuyr As Integer
For Each c In Range("D22:O24")
Var = c.Address
With c.FormatConditions(1)
Teste = .Type
Formule = .Formula1
couleur = .Interior.ColorIndex
End With
Var = Evaluate(Formule)
If Evaluate(Formule) = True Then
MsgBox "toto"
End If
Next c
End Sub
Dans chaque cellule de la plage, la même MEFC : test si le contenu de la
cellule est différent de "".
Or le contenu de la variable Formule (et peut-être les autres variables)
n'évolue pas, sauf si, en exécution ligne à ligne, on visualise la MEFC de
la cellule traitée sans y faire de modif avant de récupérer la formule.
Ci-joint le classeur, pour une meilleure compréhension :
http://cjoint.com/?gCoWB1HB27
Merci d'avance.
Daniel
Salut Daniel,
Première constatation; si tu as mis Option explicit dans ta procédure, tu
vas buter sur "Var" qui n'est pas déclaré et sur "couleur" qui est déclaré
sous le nom de "Couleuyr". Si pas d'obligation de déclaration de variable,
pourquoi "Var" prend-elle l'adresse de la celulle puis ensuite cette
valeur >
Evaluate(Formule). En fait la valeur de la variable "Var" n'est utilisée
nulle part.
Pour le reste je cherche encore.
zOrg2net
7OuNetBonjour.
Je dois rater quelque chose. Suite à la question de Chocho, j'ai monté la
moulinette suivante :
Sub test1()
Dim c As Range, Teste, Formule As String, Couleuyr As Integer
For Each c In Range("D22:O24")
Var = c.Address
With c.FormatConditions(1)
Teste = .Type
Formule = .Formula1
couleur = .Interior.ColorIndex
End With
Var = Evaluate(Formule)
If Evaluate(Formule) = True Then
MsgBox "toto"
End If
Next c
End Sub
Dans chaque cellule de la plage, la même MEFC : test si le contenu de la
cellule est différent de "".
Or le contenu de la variable Formule (et peut-être les autres variables)
n'évolue pas, sauf si, en exécution ligne à ligne, on visualise la MEFC
de
la cellule traitée sans y faire de modif avant de récupérer la formule.
Ci-joint le classeur, pour une meilleure compréhension :
http://cjoint.com/?gCoWB1HB27
Merci d'avance.
Daniel
Salut Daniel,
Première constatation; si tu as mis Option explicit dans ta procédure, tu
vas buter sur "Var" qui n'est pas déclaré et sur "couleur" qui est déclaré
sous le nom de "Couleuyr". Si pas d'obligation de déclaration de variable,
pourquoi "Var" prend-elle l'adresse de la celulle puis ensuite cette
valeur >
Evaluate(Formule). En fait la valeur de la variable "Var" n'est utilisée
nulle part.
Pour le reste je cherche encore.
zOrg2net
7OuNet
Bonjour.
Je dois rater quelque chose. Suite à la question de Chocho, j'ai monté la
moulinette suivante :
Sub test1()
Dim c As Range, Teste, Formule As String, Couleuyr As Integer
For Each c In Range("D22:O24")
Var = c.Address
With c.FormatConditions(1)
Teste = .Type
Formule = .Formula1
couleur = .Interior.ColorIndex
End With
Var = Evaluate(Formule)
If Evaluate(Formule) = True Then
MsgBox "toto"
End If
Next c
End Sub
Dans chaque cellule de la plage, la même MEFC : test si le contenu de la
cellule est différent de "".
Or le contenu de la variable Formule (et peut-être les autres variables)
n'évolue pas, sauf si, en exécution ligne à ligne, on visualise la MEFC
de
la cellule traitée sans y faire de modif avant de récupérer la formule.
Ci-joint le classeur, pour une meilleure compréhension :
http://cjoint.com/?gCoWB1HB27
Merci d'avance.
Daniel
Salut Daniel,
Première constatation; si tu as mis Option explicit dans ta procédure, tu
vas buter sur "Var" qui n'est pas déclaré et sur "couleur" qui est déclaré
sous le nom de "Couleuyr". Si pas d'obligation de déclaration de variable,
pourquoi "Var" prend-elle l'adresse de la celulle puis ensuite cette
valeur >
Evaluate(Formule). En fait la valeur de la variable "Var" n'est utilisée
nulle part.
Pour le reste je cherche encore.
zOrg2net
7OuNetBonjour.
Je dois rater quelque chose. Suite à la question de Chocho, j'ai monté la
moulinette suivante :
Sub test1()
Dim c As Range, Teste, Formule As String, Couleuyr As Integer
For Each c In Range("D22:O24")
Var = c.Address
With c.FormatConditions(1)
Teste = .Type
Formule = .Formula1
couleur = .Interior.ColorIndex
End With
Var = Evaluate(Formule)
If Evaluate(Formule) = True Then
MsgBox "toto"
End If
Next c
End Sub
Dans chaque cellule de la plage, la même MEFC : test si le contenu de la
cellule est différent de "".
Or le contenu de la variable Formule (et peut-être les autres variables)
n'évolue pas, sauf si, en exécution ligne à ligne, on visualise la MEFC
de
la cellule traitée sans y faire de modif avant de récupérer la formule.
Ci-joint le classeur, pour une meilleure compréhension :
http://cjoint.com/?gCoWB1HB27
Merci d'avance.
Daniel
Bonjour.
Je dois rater quelque chose. Suite à la question de Chocho, j'ai monté la
moulinette suivante :
Sub test1()
Dim c As Range, Teste, Formule As String, Couleuyr As Integer
For Each c In Range("D22:O24")
Var = c.Address
With c.FormatConditions(1)
Teste = .Type
Formule = .Formula1
couleur = .Interior.ColorIndex
End With
Var = Evaluate(Formule)
If Evaluate(Formule) = True Then
MsgBox "toto"
End If
Next c
End Sub
Dans chaque cellule de la plage, la même MEFC : test si le contenu de la
cellule est différent de "".
Or le contenu de la variable Formule (et peut-être les autres variables)
n'évolue pas, sauf si, en exécution ligne à ligne, on visualise la MEFC de
la cellule traitée sans y faire de modif avant de récupérer la formule.
Ci-joint le classeur, pour une meilleure compréhension :
http://cjoint.com/?gCoWB1HB27
Merci d'avance.
Daniel
Bonjour.
Je dois rater quelque chose. Suite à la question de Chocho, j'ai monté la
moulinette suivante :
Sub test1()
Dim c As Range, Teste, Formule As String, Couleuyr As Integer
For Each c In Range("D22:O24")
Var = c.Address
With c.FormatConditions(1)
Teste = .Type
Formule = .Formula1
couleur = .Interior.ColorIndex
End With
Var = Evaluate(Formule)
If Evaluate(Formule) = True Then
MsgBox "toto"
End If
Next c
End Sub
Dans chaque cellule de la plage, la même MEFC : test si le contenu de la
cellule est différent de "".
Or le contenu de la variable Formule (et peut-être les autres variables)
n'évolue pas, sauf si, en exécution ligne à ligne, on visualise la MEFC de
la cellule traitée sans y faire de modif avant de récupérer la formule.
Ci-joint le classeur, pour une meilleure compréhension :
http://cjoint.com/?gCoWB1HB27
Merci d'avance.
Daniel
Bonjour.
Je dois rater quelque chose. Suite à la question de Chocho, j'ai monté la
moulinette suivante :
Sub test1()
Dim c As Range, Teste, Formule As String, Couleuyr As Integer
For Each c In Range("D22:O24")
Var = c.Address
With c.FormatConditions(1)
Teste = .Type
Formule = .Formula1
couleur = .Interior.ColorIndex
End With
Var = Evaluate(Formule)
If Evaluate(Formule) = True Then
MsgBox "toto"
End If
Next c
End Sub
Dans chaque cellule de la plage, la même MEFC : test si le contenu de la
cellule est différent de "".
Or le contenu de la variable Formule (et peut-être les autres variables)
n'évolue pas, sauf si, en exécution ligne à ligne, on visualise la MEFC de
la cellule traitée sans y faire de modif avant de récupérer la formule.
Ci-joint le classeur, pour une meilleure compréhension :
http://cjoint.com/?gCoWB1HB27
Merci d'avance.
Daniel
Rebonjour,
Fin des constatations:
Si tu sélectionnes la cellule Var avec Range(Var).Select,
Evaluate(Formule)
fait référence aux cellules suivantes de la plage, sinon, elle ne fait
référence qu'a la cellule D22 du départ.
zOrg2net
7OuNet
Sub test1()
Dim c As Range, Teste, Formule As String, Couleuyr As Integer
For Each c In Range("D22:O24")
Var = c.Address
Range(Var).Select
With c.FormatConditions(1)
Teste = .Type
Formule = .Formula1
couleur = .Interior.ColorIndex
End With
Var = Evaluate(Formule)
If Var = True Then
MsgBox "toto"
End If
Next c
End SubBonjour.
Je dois rater quelque chose. Suite à la question de Chocho, j'ai monté la
moulinette suivante :
Sub test1()
Dim c As Range, Teste, Formule As String, Couleuyr As Integer
For Each c In Range("D22:O24")
Var = c.Address
With c.FormatConditions(1)
Teste = .Type
Formule = .Formula1
couleur = .Interior.ColorIndex
End With
Var = Evaluate(Formule)
If Evaluate(Formule) = True Then
MsgBox "toto"
End If
Next c
End Sub
Dans chaque cellule de la plage, la même MEFC : test si le contenu de la
cellule est différent de "".
Or le contenu de la variable Formule (et peut-être les autres variables)
n'évolue pas, sauf si, en exécution ligne à ligne, on visualise la MEFC
de
la cellule traitée sans y faire de modif avant de récupérer la formule.
Ci-joint le classeur, pour une meilleure compréhension :
http://cjoint.com/?gCoWB1HB27
Merci d'avance.
Daniel
Rebonjour,
Fin des constatations:
Si tu sélectionnes la cellule Var avec Range(Var).Select,
Evaluate(Formule)
fait référence aux cellules suivantes de la plage, sinon, elle ne fait
référence qu'a la cellule D22 du départ.
zOrg2net
7OuNet
Sub test1()
Dim c As Range, Teste, Formule As String, Couleuyr As Integer
For Each c In Range("D22:O24")
Var = c.Address
Range(Var).Select
With c.FormatConditions(1)
Teste = .Type
Formule = .Formula1
couleur = .Interior.ColorIndex
End With
Var = Evaluate(Formule)
If Var = True Then
MsgBox "toto"
End If
Next c
End Sub
Bonjour.
Je dois rater quelque chose. Suite à la question de Chocho, j'ai monté la
moulinette suivante :
Sub test1()
Dim c As Range, Teste, Formule As String, Couleuyr As Integer
For Each c In Range("D22:O24")
Var = c.Address
With c.FormatConditions(1)
Teste = .Type
Formule = .Formula1
couleur = .Interior.ColorIndex
End With
Var = Evaluate(Formule)
If Evaluate(Formule) = True Then
MsgBox "toto"
End If
Next c
End Sub
Dans chaque cellule de la plage, la même MEFC : test si le contenu de la
cellule est différent de "".
Or le contenu de la variable Formule (et peut-être les autres variables)
n'évolue pas, sauf si, en exécution ligne à ligne, on visualise la MEFC
de
la cellule traitée sans y faire de modif avant de récupérer la formule.
Ci-joint le classeur, pour une meilleure compréhension :
http://cjoint.com/?gCoWB1HB27
Merci d'avance.
Daniel
Rebonjour,
Fin des constatations:
Si tu sélectionnes la cellule Var avec Range(Var).Select,
Evaluate(Formule)
fait référence aux cellules suivantes de la plage, sinon, elle ne fait
référence qu'a la cellule D22 du départ.
zOrg2net
7OuNet
Sub test1()
Dim c As Range, Teste, Formule As String, Couleuyr As Integer
For Each c In Range("D22:O24")
Var = c.Address
Range(Var).Select
With c.FormatConditions(1)
Teste = .Type
Formule = .Formula1
couleur = .Interior.ColorIndex
End With
Var = Evaluate(Formule)
If Var = True Then
MsgBox "toto"
End If
Next c
End SubBonjour.
Je dois rater quelque chose. Suite à la question de Chocho, j'ai monté la
moulinette suivante :
Sub test1()
Dim c As Range, Teste, Formule As String, Couleuyr As Integer
For Each c In Range("D22:O24")
Var = c.Address
With c.FormatConditions(1)
Teste = .Type
Formule = .Formula1
couleur = .Interior.ColorIndex
End With
Var = Evaluate(Formule)
If Evaluate(Formule) = True Then
MsgBox "toto"
End If
Next c
End Sub
Dans chaque cellule de la plage, la même MEFC : test si le contenu de la
cellule est différent de "".
Or le contenu de la variable Formule (et peut-être les autres variables)
n'évolue pas, sauf si, en exécution ligne à ligne, on visualise la MEFC
de
la cellule traitée sans y faire de modif avant de récupérer la formule.
Ci-joint le classeur, pour une meilleure compréhension :
http://cjoint.com/?gCoWB1HB27
Merci d'avance.
Daniel
Daccord, ça fonctionne. Mais l'explication ? Pourquoi faut-il sélectionner
la cellule ?
Daniel
"zOrg2net" a écrit dans le message de
news:Rebonjour,
Fin des constatations:
Si tu sélectionnes la cellule Var avec Range(Var).Select,
Evaluate(Formule)
fait référence aux cellules suivantes de la plage, sinon, elle ne fait
référence qu'a la cellule D22 du départ.
zOrg2net
7OuNet
Sub test1()
Dim c As Range, Teste, Formule As String, Couleuyr As Integer
For Each c In Range("D22:O24")
Var = c.Address
Range(Var).Select
With c.FormatConditions(1)
Teste = .Type
Formule = .Formula1
couleur = .Interior.ColorIndex
End With
Var = Evaluate(Formule)
If Var = True Then
MsgBox "toto"
End If
Next c
End SubBonjour.
Je dois rater quelque chose. Suite à la question de Chocho, j'ai monté la
moulinette suivante :
Sub test1()
Dim c As Range, Teste, Formule As String, Couleuyr As Integer
For Each c In Range("D22:O24")
Var = c.Address
With c.FormatConditions(1)
Teste = .Type
Formule = .Formula1
couleur = .Interior.ColorIndex
End With
Var = Evaluate(Formule)
If Evaluate(Formule) = True Then
MsgBox "toto"
End If
Next c
End Sub
Dans chaque cellule de la plage, la même MEFC : test si le contenu de la
cellule est différent de "".
Or le contenu de la variable Formule (et peut-être les autres variables)
n'évolue pas, sauf si, en exécution ligne à ligne, on visualise la MEFC
de
la cellule traitée sans y faire de modif avant de récupérer la formule.
Ci-joint le classeur, pour une meilleure compréhension :
http://cjoint.com/?gCoWB1HB27
Merci d'avance.
Daniel
Daccord, ça fonctionne. Mais l'explication ? Pourquoi faut-il sélectionner
la cellule ?
Daniel
"zOrg2net" <zOrg2net@discussions.microsoft.com> a écrit dans le message de
news: 05834C6E-9661-419A-9218-3126118DCF73@microsoft.com...
Rebonjour,
Fin des constatations:
Si tu sélectionnes la cellule Var avec Range(Var).Select,
Evaluate(Formule)
fait référence aux cellules suivantes de la plage, sinon, elle ne fait
référence qu'a la cellule D22 du départ.
zOrg2net
7OuNet
Sub test1()
Dim c As Range, Teste, Formule As String, Couleuyr As Integer
For Each c In Range("D22:O24")
Var = c.Address
Range(Var).Select
With c.FormatConditions(1)
Teste = .Type
Formule = .Formula1
couleur = .Interior.ColorIndex
End With
Var = Evaluate(Formule)
If Var = True Then
MsgBox "toto"
End If
Next c
End Sub
Bonjour.
Je dois rater quelque chose. Suite à la question de Chocho, j'ai monté la
moulinette suivante :
Sub test1()
Dim c As Range, Teste, Formule As String, Couleuyr As Integer
For Each c In Range("D22:O24")
Var = c.Address
With c.FormatConditions(1)
Teste = .Type
Formule = .Formula1
couleur = .Interior.ColorIndex
End With
Var = Evaluate(Formule)
If Evaluate(Formule) = True Then
MsgBox "toto"
End If
Next c
End Sub
Dans chaque cellule de la plage, la même MEFC : test si le contenu de la
cellule est différent de "".
Or le contenu de la variable Formule (et peut-être les autres variables)
n'évolue pas, sauf si, en exécution ligne à ligne, on visualise la MEFC
de
la cellule traitée sans y faire de modif avant de récupérer la formule.
Ci-joint le classeur, pour une meilleure compréhension :
http://cjoint.com/?gCoWB1HB27
Merci d'avance.
Daniel
Daccord, ça fonctionne. Mais l'explication ? Pourquoi faut-il sélectionner
la cellule ?
Daniel
"zOrg2net" a écrit dans le message de
news:Rebonjour,
Fin des constatations:
Si tu sélectionnes la cellule Var avec Range(Var).Select,
Evaluate(Formule)
fait référence aux cellules suivantes de la plage, sinon, elle ne fait
référence qu'a la cellule D22 du départ.
zOrg2net
7OuNet
Sub test1()
Dim c As Range, Teste, Formule As String, Couleuyr As Integer
For Each c In Range("D22:O24")
Var = c.Address
Range(Var).Select
With c.FormatConditions(1)
Teste = .Type
Formule = .Formula1
couleur = .Interior.ColorIndex
End With
Var = Evaluate(Formule)
If Var = True Then
MsgBox "toto"
End If
Next c
End SubBonjour.
Je dois rater quelque chose. Suite à la question de Chocho, j'ai monté la
moulinette suivante :
Sub test1()
Dim c As Range, Teste, Formule As String, Couleuyr As Integer
For Each c In Range("D22:O24")
Var = c.Address
With c.FormatConditions(1)
Teste = .Type
Formule = .Formula1
couleur = .Interior.ColorIndex
End With
Var = Evaluate(Formule)
If Evaluate(Formule) = True Then
MsgBox "toto"
End If
Next c
End Sub
Dans chaque cellule de la plage, la même MEFC : test si le contenu de la
cellule est différent de "".
Or le contenu de la variable Formule (et peut-être les autres variables)
n'évolue pas, sauf si, en exécution ligne à ligne, on visualise la MEFC
de
la cellule traitée sans y faire de modif avant de récupérer la formule.
Ci-joint le classeur, pour une meilleure compréhension :
http://cjoint.com/?gCoWB1HB27
Merci d'avance.
Daniel
Rebonjour,
Fin des constatations:
Si tu sélectionnes la cellule Var avec Range(Var).Select,
Evaluate(Formule)
fait référence aux cellules suivantes de la plage, sinon, elle ne fait
référence qu'a la cellule D22 du départ.
zOrg2net
7OuNet
Sub test1()
Dim c As Range, Teste, Formule As String, Couleuyr As Integer
For Each c In Range("D22:O24")
Var = c.Address
Range(Var).Select
With c.FormatConditions(1)
Teste = .Type
Formule = .Formula1
couleur = .Interior.ColorIndex
End With
Var = Evaluate(Formule)
If Var = True Then
MsgBox "toto"
End If
Next c
End SubBonjour.
Je dois rater quelque chose. Suite à la question de Chocho, j'ai monté la
moulinette suivante :
Sub test1()
Dim c As Range, Teste, Formule As String, Couleuyr As Integer
For Each c In Range("D22:O24")
Var = c.Address
With c.FormatConditions(1)
Teste = .Type
Formule = .Formula1
couleur = .Interior.ColorIndex
End With
Var = Evaluate(Formule)
If Evaluate(Formule) = True Then
MsgBox "toto"
End If
Next c
End Sub
Dans chaque cellule de la plage, la même MEFC : test si le contenu de la
cellule est différent de "".
Or le contenu de la variable Formule (et peut-être les autres variables)
n'évolue pas, sauf si, en exécution ligne à ligne, on visualise la MEFC
de
la cellule traitée sans y faire de modif avant de récupérer la formule.
Ci-joint le classeur, pour une meilleure compréhension :
http://cjoint.com/?gCoWB1HB27
Merci d'avance.
Daniel
Rebonjour,
Fin des constatations:
Si tu sélectionnes la cellule Var avec Range(Var).Select,
Evaluate(Formule)
fait référence aux cellules suivantes de la plage, sinon, elle ne fait
référence qu'a la cellule D22 du départ.
zOrg2net
7OuNet
Sub test1()
Dim c As Range, Teste, Formule As String, Couleuyr As Integer
For Each c In Range("D22:O24")
Var = c.Address
Range(Var).Select
With c.FormatConditions(1)
Teste = .Type
Formule = .Formula1
couleur = .Interior.ColorIndex
End With
Var = Evaluate(Formule)
If Var = True Then
MsgBox "toto"
End If
Next c
End Sub
Bonjour.
Je dois rater quelque chose. Suite à la question de Chocho, j'ai monté la
moulinette suivante :
Sub test1()
Dim c As Range, Teste, Formule As String, Couleuyr As Integer
For Each c In Range("D22:O24")
Var = c.Address
With c.FormatConditions(1)
Teste = .Type
Formule = .Formula1
couleur = .Interior.ColorIndex
End With
Var = Evaluate(Formule)
If Evaluate(Formule) = True Then
MsgBox "toto"
End If
Next c
End Sub
Dans chaque cellule de la plage, la même MEFC : test si le contenu de la
cellule est différent de "".
Or le contenu de la variable Formule (et peut-être les autres variables)
n'évolue pas, sauf si, en exécution ligne à ligne, on visualise la MEFC
de
la cellule traitée sans y faire de modif avant de récupérer la formule.
Ci-joint le classeur, pour une meilleure compréhension :
http://cjoint.com/?gCoWB1HB27
Merci d'avance.
Daniel
Rebonjour,
Fin des constatations:
Si tu sélectionnes la cellule Var avec Range(Var).Select,
Evaluate(Formule)
fait référence aux cellules suivantes de la plage, sinon, elle ne fait
référence qu'a la cellule D22 du départ.
zOrg2net
7OuNet
Sub test1()
Dim c As Range, Teste, Formule As String, Couleuyr As Integer
For Each c In Range("D22:O24")
Var = c.Address
Range(Var).Select
With c.FormatConditions(1)
Teste = .Type
Formule = .Formula1
couleur = .Interior.ColorIndex
End With
Var = Evaluate(Formule)
If Var = True Then
MsgBox "toto"
End If
Next c
End SubBonjour.
Je dois rater quelque chose. Suite à la question de Chocho, j'ai monté la
moulinette suivante :
Sub test1()
Dim c As Range, Teste, Formule As String, Couleuyr As Integer
For Each c In Range("D22:O24")
Var = c.Address
With c.FormatConditions(1)
Teste = .Type
Formule = .Formula1
couleur = .Interior.ColorIndex
End With
Var = Evaluate(Formule)
If Evaluate(Formule) = True Then
MsgBox "toto"
End If
Next c
End Sub
Dans chaque cellule de la plage, la même MEFC : test si le contenu de la
cellule est différent de "".
Or le contenu de la variable Formule (et peut-être les autres variables)
n'évolue pas, sauf si, en exécution ligne à ligne, on visualise la MEFC
de
la cellule traitée sans y faire de modif avant de récupérer la formule.
Ci-joint le classeur, pour une meilleure compréhension :
http://cjoint.com/?gCoWB1HB27
Merci d'avance.
Daniel
On peut utiliser ceci pour sélectionner une plage de cellules
ayant reçu la même mise en forme particulière
'--------------------------------
Sub test()
Dim X As Range
Set X = Range("C22:Q24").SpecialCells(xlCellTypeSameFormatConditions)
MsgBox X.Address
End Sub
'--------------------------------
Sauf que cette syntaxe pour qu'elle fonctionne a une particularité
importante à cerner
Ce n'est pas une question de compréhension.... c'est de même que les
programmeurs
de Microsoft ont développé le concept ...!
Pour que cette syntaxe soit valide, la première cellule de la plage doit
avoir reçu la
mise en forme conditionnelle dont on recherche la globalité de la plage
que l'on désire
cerner :
Exemple : Si tu utilises la plage suivante :
Set X = Range("H22:Q30").SpecialCells(xlCellTypeSameFormatConditions)
X.Address retourne C22:Q24
Si tu utilises la plage suivante :
Set X = Range("H21:Q30").SpecialCells(xlCellTypeSameFormatConditions)
Tu auras un message d'erreur t'indiquant qu'il n'y a pas de cellules
correspondantes
En fait, parce que la première cellule H21 (la référence) n'a pas un
format conditionnelle,
la méthode SpecialCells ne peut pas trouver les autres cellules
évidemment.
De même lorsque tu crées via l'interface de la feuille de calcul, une mise
en forme
conditionnelle, tu sélectionnes la cellule la plus à gauche et la plus
près de la lignie1
pour établir la plage de cellules sur laquelle s'appliquera la mise en
forme conditionnelle.
Si tu as suivi et si j'ai bien compris, c'est la "cellule active" qui
renvoie "la formule de
référence"
à une mise en forme conditionnelle....c'est pour cette raison que tu dois
sélectionner
chacune des cellules de la plage !
"Daniel" a écrit dans le message de news:
Daccord, ça fonctionne. Mais l'explication ? Pourquoi faut-il sélectionner
la cellule ?
Daniel
"zOrg2net" a écrit dans le message de
news:Rebonjour,
Fin des constatations:
Si tu sélectionnes la cellule Var avec Range(Var).Select,
Evaluate(Formule)
fait référence aux cellules suivantes de la plage, sinon, elle ne fait
référence qu'a la cellule D22 du départ.
zOrg2net
7OuNet
Sub test1()
Dim c As Range, Teste, Formule As String, Couleuyr As Integer
For Each c In Range("D22:O24")
Var = c.Address
Range(Var).Select
With c.FormatConditions(1)
Teste = .Type
Formule = .Formula1
couleur = .Interior.ColorIndex
End With
Var = Evaluate(Formule)
If Var = True Then
MsgBox "toto"
End If
Next c
End SubBonjour.
Je dois rater quelque chose. Suite à la question de Chocho, j'ai monté
la
moulinette suivante :
Sub test1()
Dim c As Range, Teste, Formule As String, Couleuyr As Integer
For Each c In Range("D22:O24")
Var = c.Address
With c.FormatConditions(1)
Teste = .Type
Formule = .Formula1
couleur = .Interior.ColorIndex
End With
Var = Evaluate(Formule)
If Evaluate(Formule) = True Then
MsgBox "toto"
End If
Next c
End Sub
Dans chaque cellule de la plage, la même MEFC : test si le contenu de la
cellule est différent de "".
Or le contenu de la variable Formule (et peut-être les autres variables)
n'évolue pas, sauf si, en exécution ligne à ligne, on visualise la MEFC
de
la cellule traitée sans y faire de modif avant de récupérer la formule.
Ci-joint le classeur, pour une meilleure compréhension :
http://cjoint.com/?gCoWB1HB27
Merci d'avance.
Daniel
On peut utiliser ceci pour sélectionner une plage de cellules
ayant reçu la même mise en forme particulière
'--------------------------------
Sub test()
Dim X As Range
Set X = Range("C22:Q24").SpecialCells(xlCellTypeSameFormatConditions)
MsgBox X.Address
End Sub
'--------------------------------
Sauf que cette syntaxe pour qu'elle fonctionne a une particularité
importante à cerner
Ce n'est pas une question de compréhension.... c'est de même que les
programmeurs
de Microsoft ont développé le concept ...!
Pour que cette syntaxe soit valide, la première cellule de la plage doit
avoir reçu la
mise en forme conditionnelle dont on recherche la globalité de la plage
que l'on désire
cerner :
Exemple : Si tu utilises la plage suivante :
Set X = Range("H22:Q30").SpecialCells(xlCellTypeSameFormatConditions)
X.Address retourne C22:Q24
Si tu utilises la plage suivante :
Set X = Range("H21:Q30").SpecialCells(xlCellTypeSameFormatConditions)
Tu auras un message d'erreur t'indiquant qu'il n'y a pas de cellules
correspondantes
En fait, parce que la première cellule H21 (la référence) n'a pas un
format conditionnelle,
la méthode SpecialCells ne peut pas trouver les autres cellules
évidemment.
De même lorsque tu crées via l'interface de la feuille de calcul, une mise
en forme
conditionnelle, tu sélectionnes la cellule la plus à gauche et la plus
près de la lignie1
pour établir la plage de cellules sur laquelle s'appliquera la mise en
forme conditionnelle.
Si tu as suivi et si j'ai bien compris, c'est la "cellule active" qui
renvoie "la formule de
référence"
à une mise en forme conditionnelle....c'est pour cette raison que tu dois
sélectionner
chacune des cellules de la plage !
"Daniel" <dZZZcolardelle@free.fr> a écrit dans le message de news:
uj3DO9YuHHA.4512@TK2MSFTNGP04.phx.gbl...
Daccord, ça fonctionne. Mais l'explication ? Pourquoi faut-il sélectionner
la cellule ?
Daniel
"zOrg2net" <zOrg2net@discussions.microsoft.com> a écrit dans le message de
news: 05834C6E-9661-419A-9218-3126118DCF73@microsoft.com...
Rebonjour,
Fin des constatations:
Si tu sélectionnes la cellule Var avec Range(Var).Select,
Evaluate(Formule)
fait référence aux cellules suivantes de la plage, sinon, elle ne fait
référence qu'a la cellule D22 du départ.
zOrg2net
7OuNet
Sub test1()
Dim c As Range, Teste, Formule As String, Couleuyr As Integer
For Each c In Range("D22:O24")
Var = c.Address
Range(Var).Select
With c.FormatConditions(1)
Teste = .Type
Formule = .Formula1
couleur = .Interior.ColorIndex
End With
Var = Evaluate(Formule)
If Var = True Then
MsgBox "toto"
End If
Next c
End Sub
Bonjour.
Je dois rater quelque chose. Suite à la question de Chocho, j'ai monté
la
moulinette suivante :
Sub test1()
Dim c As Range, Teste, Formule As String, Couleuyr As Integer
For Each c In Range("D22:O24")
Var = c.Address
With c.FormatConditions(1)
Teste = .Type
Formule = .Formula1
couleur = .Interior.ColorIndex
End With
Var = Evaluate(Formule)
If Evaluate(Formule) = True Then
MsgBox "toto"
End If
Next c
End Sub
Dans chaque cellule de la plage, la même MEFC : test si le contenu de la
cellule est différent de "".
Or le contenu de la variable Formule (et peut-être les autres variables)
n'évolue pas, sauf si, en exécution ligne à ligne, on visualise la MEFC
de
la cellule traitée sans y faire de modif avant de récupérer la formule.
Ci-joint le classeur, pour une meilleure compréhension :
http://cjoint.com/?gCoWB1HB27
Merci d'avance.
Daniel
On peut utiliser ceci pour sélectionner une plage de cellules
ayant reçu la même mise en forme particulière
'--------------------------------
Sub test()
Dim X As Range
Set X = Range("C22:Q24").SpecialCells(xlCellTypeSameFormatConditions)
MsgBox X.Address
End Sub
'--------------------------------
Sauf que cette syntaxe pour qu'elle fonctionne a une particularité
importante à cerner
Ce n'est pas une question de compréhension.... c'est de même que les
programmeurs
de Microsoft ont développé le concept ...!
Pour que cette syntaxe soit valide, la première cellule de la plage doit
avoir reçu la
mise en forme conditionnelle dont on recherche la globalité de la plage
que l'on désire
cerner :
Exemple : Si tu utilises la plage suivante :
Set X = Range("H22:Q30").SpecialCells(xlCellTypeSameFormatConditions)
X.Address retourne C22:Q24
Si tu utilises la plage suivante :
Set X = Range("H21:Q30").SpecialCells(xlCellTypeSameFormatConditions)
Tu auras un message d'erreur t'indiquant qu'il n'y a pas de cellules
correspondantes
En fait, parce que la première cellule H21 (la référence) n'a pas un
format conditionnelle,
la méthode SpecialCells ne peut pas trouver les autres cellules
évidemment.
De même lorsque tu crées via l'interface de la feuille de calcul, une mise
en forme
conditionnelle, tu sélectionnes la cellule la plus à gauche et la plus
près de la lignie1
pour établir la plage de cellules sur laquelle s'appliquera la mise en
forme conditionnelle.
Si tu as suivi et si j'ai bien compris, c'est la "cellule active" qui
renvoie "la formule de
référence"
à une mise en forme conditionnelle....c'est pour cette raison que tu dois
sélectionner
chacune des cellules de la plage !
"Daniel" a écrit dans le message de news:
Daccord, ça fonctionne. Mais l'explication ? Pourquoi faut-il sélectionner
la cellule ?
Daniel
"zOrg2net" a écrit dans le message de
news:Rebonjour,
Fin des constatations:
Si tu sélectionnes la cellule Var avec Range(Var).Select,
Evaluate(Formule)
fait référence aux cellules suivantes de la plage, sinon, elle ne fait
référence qu'a la cellule D22 du départ.
zOrg2net
7OuNet
Sub test1()
Dim c As Range, Teste, Formule As String, Couleuyr As Integer
For Each c In Range("D22:O24")
Var = c.Address
Range(Var).Select
With c.FormatConditions(1)
Teste = .Type
Formule = .Formula1
couleur = .Interior.ColorIndex
End With
Var = Evaluate(Formule)
If Var = True Then
MsgBox "toto"
End If
Next c
End SubBonjour.
Je dois rater quelque chose. Suite à la question de Chocho, j'ai monté
la
moulinette suivante :
Sub test1()
Dim c As Range, Teste, Formule As String, Couleuyr As Integer
For Each c In Range("D22:O24")
Var = c.Address
With c.FormatConditions(1)
Teste = .Type
Formule = .Formula1
couleur = .Interior.ColorIndex
End With
Var = Evaluate(Formule)
If Evaluate(Formule) = True Then
MsgBox "toto"
End If
Next c
End Sub
Dans chaque cellule de la plage, la même MEFC : test si le contenu de la
cellule est différent de "".
Or le contenu de la variable Formule (et peut-être les autres variables)
n'évolue pas, sauf si, en exécution ligne à ligne, on visualise la MEFC
de
la cellule traitée sans y faire de modif avant de récupérer la formule.
Ci-joint le classeur, pour une meilleure compréhension :
http://cjoint.com/?gCoWB1HB27
Merci d'avance.
Daniel
On peut utiliser ceci pour sélectionner une plage de cellules
ayant reçu la même mise en forme particulière
'--------------------------------
Sub test()
Dim X As Range
Set X = Range("C22:Q24").SpecialCells(xlCellTypeSameFormatConditions)
MsgBox X.Address
End Sub
'--------------------------------
Sauf que cette syntaxe pour qu'elle fonctionne a une particularité
importante à cerner
Ce n'est pas une question de compréhension.... c'est de même que les
programmeurs
de Microsoft ont développé le concept ...!
Pour que cette syntaxe soit valide, la première cellule de la plage doit
avoir reçu la
mise en forme conditionnelle dont on recherche la globalité de la plage
que l'on désire
cerner :
Exemple : Si tu utilises la plage suivante :
Set X = Range("H22:Q30").SpecialCells(xlCellTypeSameFormatConditions)
X.Address retourne C22:Q24
Si tu utilises la plage suivante :
Set X = Range("H21:Q30").SpecialCells(xlCellTypeSameFormatConditions)
Tu auras un message d'erreur t'indiquant qu'il n'y a pas de cellules
correspondantes
En fait, parce que la première cellule H21 (la référence) n'a pas un
format conditionnelle,
la méthode SpecialCells ne peut pas trouver les autres cellules
évidemment.
De même lorsque tu crées via l'interface de la feuille de calcul, une mise
en forme
conditionnelle, tu sélectionnes la cellule la plus à gauche et la plus
près de la lignie1
pour établir la plage de cellules sur laquelle s'appliquera la mise en
forme conditionnelle.
Si tu as suivi et si j'ai bien compris, c'est la "cellule active" qui
renvoie "la formule de
référence"
à une mise en forme conditionnelle....c'est pour cette raison que tu dois
sélectionner
chacune des cellules de la plage !
"Daniel" a écrit dans le message de news:
Daccord, ça fonctionne. Mais l'explication ? Pourquoi faut-il sélectionner
la cellule ?
Daniel
"zOrg2net" a écrit dans le message de
news:Rebonjour,
Fin des constatations:
Si tu sélectionnes la cellule Var avec Range(Var).Select,
Evaluate(Formule)
fait référence aux cellules suivantes de la plage, sinon, elle ne fait
référence qu'a la cellule D22 du départ.
zOrg2net
7OuNet
Sub test1()
Dim c As Range, Teste, Formule As String, Couleuyr As Integer
For Each c In Range("D22:O24")
Var = c.Address
Range(Var).Select
With c.FormatConditions(1)
Teste = .Type
Formule = .Formula1
couleur = .Interior.ColorIndex
End With
Var = Evaluate(Formule)
If Var = True Then
MsgBox "toto"
End If
Next c
End SubBonjour.
Je dois rater quelque chose. Suite à la question de Chocho, j'ai monté
la
moulinette suivante :
Sub test1()
Dim c As Range, Teste, Formule As String, Couleuyr As Integer
For Each c In Range("D22:O24")
Var = c.Address
With c.FormatConditions(1)
Teste = .Type
Formule = .Formula1
couleur = .Interior.ColorIndex
End With
Var = Evaluate(Formule)
If Evaluate(Formule) = True Then
MsgBox "toto"
End If
Next c
End Sub
Dans chaque cellule de la plage, la même MEFC : test si le contenu de la
cellule est différent de "".
Or le contenu de la variable Formule (et peut-être les autres variables)
n'évolue pas, sauf si, en exécution ligne à ligne, on visualise la MEFC
de
la cellule traitée sans y faire de modif avant de récupérer la formule.
Ci-joint le classeur, pour une meilleure compréhension :
http://cjoint.com/?gCoWB1HB27
Merci d'avance.
Daniel
On peut utiliser ceci pour sélectionner une plage de cellules
ayant reçu la même mise en forme particulière
'--------------------------------
Sub test()
Dim X As Range
Set X = Range("C22:Q24").SpecialCells(xlCellTypeSameFormatConditions)
MsgBox X.Address
End Sub
'--------------------------------
Sauf que cette syntaxe pour qu'elle fonctionne a une particularité
importante à cerner
Ce n'est pas une question de compréhension.... c'est de même que les
programmeurs
de Microsoft ont développé le concept ...!
Pour que cette syntaxe soit valide, la première cellule de la plage doit
avoir reçu la
mise en forme conditionnelle dont on recherche la globalité de la plage
que l'on désire
cerner :
Exemple : Si tu utilises la plage suivante :
Set X = Range("H22:Q30").SpecialCells(xlCellTypeSameFormatConditions)
X.Address retourne C22:Q24
Si tu utilises la plage suivante :
Set X = Range("H21:Q30").SpecialCells(xlCellTypeSameFormatConditions)
Tu auras un message d'erreur t'indiquant qu'il n'y a pas de cellules
correspondantes
En fait, parce que la première cellule H21 (la référence) n'a pas un
format conditionnelle,
la méthode SpecialCells ne peut pas trouver les autres cellules
évidemment.
De même lorsque tu crées via l'interface de la feuille de calcul, une mise
en forme
conditionnelle, tu sélectionnes la cellule la plus à gauche et la plus
près de la lignie1
pour établir la plage de cellules sur laquelle s'appliquera la mise en
forme conditionnelle.
Si tu as suivi et si j'ai bien compris, c'est la "cellule active" qui
renvoie "la formule de
référence"
à une mise en forme conditionnelle....c'est pour cette raison que tu dois
sélectionner
chacune des cellules de la plage !
"Daniel" <dZZZcolardelle@free.fr> a écrit dans le message de news:
uj3DO9YuHHA.4512@TK2MSFTNGP04.phx.gbl...
Daccord, ça fonctionne. Mais l'explication ? Pourquoi faut-il sélectionner
la cellule ?
Daniel
"zOrg2net" <zOrg2net@discussions.microsoft.com> a écrit dans le message de
news: 05834C6E-9661-419A-9218-3126118DCF73@microsoft.com...
Rebonjour,
Fin des constatations:
Si tu sélectionnes la cellule Var avec Range(Var).Select,
Evaluate(Formule)
fait référence aux cellules suivantes de la plage, sinon, elle ne fait
référence qu'a la cellule D22 du départ.
zOrg2net
7OuNet
Sub test1()
Dim c As Range, Teste, Formule As String, Couleuyr As Integer
For Each c In Range("D22:O24")
Var = c.Address
Range(Var).Select
With c.FormatConditions(1)
Teste = .Type
Formule = .Formula1
couleur = .Interior.ColorIndex
End With
Var = Evaluate(Formule)
If Var = True Then
MsgBox "toto"
End If
Next c
End Sub
Bonjour.
Je dois rater quelque chose. Suite à la question de Chocho, j'ai monté
la
moulinette suivante :
Sub test1()
Dim c As Range, Teste, Formule As String, Couleuyr As Integer
For Each c In Range("D22:O24")
Var = c.Address
With c.FormatConditions(1)
Teste = .Type
Formule = .Formula1
couleur = .Interior.ColorIndex
End With
Var = Evaluate(Formule)
If Evaluate(Formule) = True Then
MsgBox "toto"
End If
Next c
End Sub
Dans chaque cellule de la plage, la même MEFC : test si le contenu de la
cellule est différent de "".
Or le contenu de la variable Formule (et peut-être les autres variables)
n'évolue pas, sauf si, en exécution ligne à ligne, on visualise la MEFC
de
la cellule traitée sans y faire de modif avant de récupérer la formule.
Ci-joint le classeur, pour une meilleure compréhension :
http://cjoint.com/?gCoWB1HB27
Merci d'avance.
Daniel
On peut utiliser ceci pour sélectionner une plage de cellules
ayant reçu la même mise en forme particulière
'--------------------------------
Sub test()
Dim X As Range
Set X = Range("C22:Q24").SpecialCells(xlCellTypeSameFormatConditions)
MsgBox X.Address
End Sub
'--------------------------------
Sauf que cette syntaxe pour qu'elle fonctionne a une particularité
importante à cerner
Ce n'est pas une question de compréhension.... c'est de même que les
programmeurs
de Microsoft ont développé le concept ...!
Pour que cette syntaxe soit valide, la première cellule de la plage doit
avoir reçu la
mise en forme conditionnelle dont on recherche la globalité de la plage
que l'on désire
cerner :
Exemple : Si tu utilises la plage suivante :
Set X = Range("H22:Q30").SpecialCells(xlCellTypeSameFormatConditions)
X.Address retourne C22:Q24
Si tu utilises la plage suivante :
Set X = Range("H21:Q30").SpecialCells(xlCellTypeSameFormatConditions)
Tu auras un message d'erreur t'indiquant qu'il n'y a pas de cellules
correspondantes
En fait, parce que la première cellule H21 (la référence) n'a pas un
format conditionnelle,
la méthode SpecialCells ne peut pas trouver les autres cellules
évidemment.
De même lorsque tu crées via l'interface de la feuille de calcul, une mise
en forme
conditionnelle, tu sélectionnes la cellule la plus à gauche et la plus
près de la lignie1
pour établir la plage de cellules sur laquelle s'appliquera la mise en
forme conditionnelle.
Si tu as suivi et si j'ai bien compris, c'est la "cellule active" qui
renvoie "la formule de
référence"
à une mise en forme conditionnelle....c'est pour cette raison que tu dois
sélectionner
chacune des cellules de la plage !
"Daniel" a écrit dans le message de news:
Daccord, ça fonctionne. Mais l'explication ? Pourquoi faut-il sélectionner
la cellule ?
Daniel
"zOrg2net" a écrit dans le message de
news:Rebonjour,
Fin des constatations:
Si tu sélectionnes la cellule Var avec Range(Var).Select,
Evaluate(Formule)
fait référence aux cellules suivantes de la plage, sinon, elle ne fait
référence qu'a la cellule D22 du départ.
zOrg2net
7OuNet
Sub test1()
Dim c As Range, Teste, Formule As String, Couleuyr As Integer
For Each c In Range("D22:O24")
Var = c.Address
Range(Var).Select
With c.FormatConditions(1)
Teste = .Type
Formule = .Formula1
couleur = .Interior.ColorIndex
End With
Var = Evaluate(Formule)
If Var = True Then
MsgBox "toto"
End If
Next c
End SubBonjour.
Je dois rater quelque chose. Suite à la question de Chocho, j'ai monté
la
moulinette suivante :
Sub test1()
Dim c As Range, Teste, Formule As String, Couleuyr As Integer
For Each c In Range("D22:O24")
Var = c.Address
With c.FormatConditions(1)
Teste = .Type
Formule = .Formula1
couleur = .Interior.ColorIndex
End With
Var = Evaluate(Formule)
If Evaluate(Formule) = True Then
MsgBox "toto"
End If
Next c
End Sub
Dans chaque cellule de la plage, la même MEFC : test si le contenu de la
cellule est différent de "".
Or le contenu de la variable Formule (et peut-être les autres variables)
n'évolue pas, sauf si, en exécution ligne à ligne, on visualise la MEFC
de
la cellule traitée sans y faire de modif avant de récupérer la formule.
Ci-joint le classeur, pour une meilleure compréhension :
http://cjoint.com/?gCoWB1HB27
Merci d'avance.
Daniel
Un autre qui ne veut pas comprendre ...;-))
Suppose que tu veux qu'une mise en forme conditionnelle s'applique
sur la plage A1:D10. Dans la formule que tu vas utiliser tu vas
RETENIR LA CELLULE A1 COMME RÉFÉRENCE ET
excel va reproduire la mise en forme en adaptant l'adresse
pour chacune des cellules de la plage.
Quand tu fais ceci :
Exemple : Si tu utilises la plage suivante :
Set X = Range("H22:Q30").SpecialCells(xlCellTypeSameFormatConditions)
X.Address retourne C22:Q24
Tu peux même aller plus loin :
Set x = Range("H22").SpecialCells(xlCellTypeSameFormatConditions)
Msgbox x.Address
A partir d'une cellule qui a une mise en forme condtionnelle, tu peux
définir
l'adresse de toutes les cellules de la feuille qui ont une même mise en
forme
conditionnelle.
La procédure RETIENT LA PREMIÈRE CELLULE DE LA PLAGE H22
comme cellule de RÉFÉRENCE pour évaluer si les autres cellules contient
la même mise en forme conditionnelle.
Quand tu boucles sur une plage de cellules comme dans ton exemple
'---------------------------------:
Sub test1()
Dim c As Range, Teste, Formule As String, Couleuyr As Integer
For Each c In Range("D22:O24")
Var = c.Address
With c.FormatConditions(1)
Formule = .Formula1
couleur = .Interior.ColorIndex
End With
Var = Evaluate(Formule)
If Evaluate(Formule) = True Then
MsgBox "toto"
End If
Next c
End Sub
'---------------------------------
Si la cellule active était D15, il prendra comme cellule de
référence D22 (première cellule de la plage définie)
pour établir la formule de la mise en forme condtionnelle
pour la totalité de la plage. IL PREND LA PREMIÈRE CELLULE
DE LA PLAGE MENTIONNÉE COMME CELLULE DE
RÉFÉRENCE.... Si la première cellule de la plage n'a pas
une mise en forme conditionnelle, la procédure se plante.
Dans ton dernier exemple :
Range("A1").FormatConditions(1).Formula1
renvoie :=I4<>"" si I4 est la cellule active....
Il ne fait pas de vérification si la cellule I4
a une mise en forme condtionnelle il ne fait
QU'ADAPTER l' adresse de la cellule de
la formule de la cellule de référence...
si tu veux savoir si I4 a une mise en forme condtionnelle
x=Range("I4").FormatConditions(1).Formula1
qui se plantera si I4 n'a pas de mise en forme cond.
La seule alternative c'est de rendre la cellule active lorsque tu veux
savoir si oui ou non la cellule a une mise en forme conditionnellle
en dans un second temps, évaluer la formule, le cas échéant.
Est-ce logique ? Faut poser la question à Microsoft....mais cette de
cette manière que cela fonctionne.
"Daniel" a écrit dans le message de news:
Merci pour tes explications.
Mettons que je sois particulièrement dur à la détente.
Si je résume ton raisonne, qu'il faille que la "première" cellule de la
plage ait une MEFC pour définir X peut se comprendre (sinon la plage peut
comprendre n sous ensembles de MEFC similaires. Je comprends également le
processus de définition manuelle d'une plage de MEFC.
Mais explique-moi le comportement suivant :
contexte : - la cellule A1 contient la MEFC suivante ¡<>""
- la cellule active est I4 (aucune MEFC)
Range("A1").FormatConditions(1).Formula1
renvoie :
=I4<>""
Le résultat est le même si I4 contient une MEFC
Donc XL récupère la formule de la MEFC de A1 et substitue l'adresse de la
plage active à celle de A1.
Daniel
"MichDenis" a écrit dans le message de news:
%23$On peut utiliser ceci pour sélectionner une plage de cellules
ayant reçu la même mise en forme particulière
'--------------------------------
Sub test()
Dim X As Range
Set X = Range("C22:Q24").SpecialCells(xlCellTypeSameFormatConditions)
MsgBox X.Address
End Sub
'--------------------------------
Sauf que cette syntaxe pour qu'elle fonctionne a une particularité
importante à cerner
Ce n'est pas une question de compréhension.... c'est de même que les
programmeurs
de Microsoft ont développé le concept ...!
Pour que cette syntaxe soit valide, la première cellule de la plage doit
avoir reçu la
mise en forme conditionnelle dont on recherche la globalité de la plage
que l'on désire
cerner :
Exemple : Si tu utilises la plage suivante :
Set X = Range("H22:Q30").SpecialCells(xlCellTypeSameFormatConditions)
X.Address retourne C22:Q24
Si tu utilises la plage suivante :
Set X = Range("H21:Q30").SpecialCells(xlCellTypeSameFormatConditions)
Tu auras un message d'erreur t'indiquant qu'il n'y a pas de cellules
correspondantes
En fait, parce que la première cellule H21 (la référence) n'a pas un
format conditionnelle,
la méthode SpecialCells ne peut pas trouver les autres cellules
évidemment.
De même lorsque tu crées via l'interface de la feuille de calcul, une
mise
en forme
conditionnelle, tu sélectionnes la cellule la plus à gauche et la plus
près de la lignie1
pour établir la plage de cellules sur laquelle s'appliquera la mise en
forme conditionnelle.
Si tu as suivi et si j'ai bien compris, c'est la "cellule active" qui
renvoie "la formule de
référence"
à une mise en forme conditionnelle....c'est pour cette raison que tu dois
sélectionner
chacune des cellules de la plage !
"Daniel" a écrit dans le message de news:
Daccord, ça fonctionne. Mais l'explication ? Pourquoi faut-il
sélectionner
la cellule ?
Daniel
"zOrg2net" a écrit dans le message
de
news:Rebonjour,
Fin des constatations:
Si tu sélectionnes la cellule Var avec Range(Var).Select,
Evaluate(Formule)
fait référence aux cellules suivantes de la plage, sinon, elle ne fait
référence qu'a la cellule D22 du départ.
zOrg2net
7OuNet
Sub test1()
Dim c As Range, Teste, Formule As String, Couleuyr As Integer
For Each c In Range("D22:O24")
Var = c.Address
Range(Var).Select
With c.FormatConditions(1)
Teste = .Type
Formule = .Formula1
couleur = .Interior.ColorIndex
End With
Var = Evaluate(Formule)
If Var = True Then
MsgBox "toto"
End If
Next c
End SubBonjour.
Je dois rater quelque chose. Suite à la question de Chocho, j'ai monté
la
moulinette suivante :
Sub test1()
Dim c As Range, Teste, Formule As String, Couleuyr As Integer
For Each c In Range("D22:O24")
Var = c.Address
With c.FormatConditions(1)
Teste = .Type
Formule = .Formula1
couleur = .Interior.ColorIndex
End With
Var = Evaluate(Formule)
If Evaluate(Formule) = True Then
MsgBox "toto"
End If
Next c
End Sub
Dans chaque cellule de la plage, la même MEFC : test si le contenu de
la
cellule est différent de "".
Or le contenu de la variable Formule (et peut-être les autres
variables)
n'évolue pas, sauf si, en exécution ligne à ligne, on visualise la MEFC
de
la cellule traitée sans y faire de modif avant de récupérer la formule.
Ci-joint le classeur, pour une meilleure compréhension :
http://cjoint.com/?gCoWB1HB27
Merci d'avance.
Daniel
Un autre qui ne veut pas comprendre ...;-))
Suppose que tu veux qu'une mise en forme conditionnelle s'applique
sur la plage A1:D10. Dans la formule que tu vas utiliser tu vas
RETENIR LA CELLULE A1 COMME RÉFÉRENCE ET
excel va reproduire la mise en forme en adaptant l'adresse
pour chacune des cellules de la plage.
Quand tu fais ceci :
Exemple : Si tu utilises la plage suivante :
Set X = Range("H22:Q30").SpecialCells(xlCellTypeSameFormatConditions)
X.Address retourne C22:Q24
Tu peux même aller plus loin :
Set x = Range("H22").SpecialCells(xlCellTypeSameFormatConditions)
Msgbox x.Address
A partir d'une cellule qui a une mise en forme condtionnelle, tu peux
définir
l'adresse de toutes les cellules de la feuille qui ont une même mise en
forme
conditionnelle.
La procédure RETIENT LA PREMIÈRE CELLULE DE LA PLAGE H22
comme cellule de RÉFÉRENCE pour évaluer si les autres cellules contient
la même mise en forme conditionnelle.
Quand tu boucles sur une plage de cellules comme dans ton exemple
'---------------------------------:
Sub test1()
Dim c As Range, Teste, Formule As String, Couleuyr As Integer
For Each c In Range("D22:O24")
Var = c.Address
With c.FormatConditions(1)
Formule = .Formula1
couleur = .Interior.ColorIndex
End With
Var = Evaluate(Formule)
If Evaluate(Formule) = True Then
MsgBox "toto"
End If
Next c
End Sub
'---------------------------------
Si la cellule active était D15, il prendra comme cellule de
référence D22 (première cellule de la plage définie)
pour établir la formule de la mise en forme condtionnelle
pour la totalité de la plage. IL PREND LA PREMIÈRE CELLULE
DE LA PLAGE MENTIONNÉE COMME CELLULE DE
RÉFÉRENCE.... Si la première cellule de la plage n'a pas
une mise en forme conditionnelle, la procédure se plante.
Dans ton dernier exemple :
Range("A1").FormatConditions(1).Formula1
renvoie :=I4<>"" si I4 est la cellule active....
Il ne fait pas de vérification si la cellule I4
a une mise en forme condtionnelle il ne fait
QU'ADAPTER l' adresse de la cellule de
la formule de la cellule de référence...
si tu veux savoir si I4 a une mise en forme condtionnelle
x=Range("I4").FormatConditions(1).Formula1
qui se plantera si I4 n'a pas de mise en forme cond.
La seule alternative c'est de rendre la cellule active lorsque tu veux
savoir si oui ou non la cellule a une mise en forme conditionnellle
en dans un second temps, évaluer la formule, le cas échéant.
Est-ce logique ? Faut poser la question à Microsoft....mais cette de
cette manière que cela fonctionne.
"Daniel" <dZZZcolardelle@free.fr> a écrit dans le message de news:
OCvrrGbuHHA.4476@TK2MSFTNGP03.phx.gbl...
Merci pour tes explications.
Mettons que je sois particulièrement dur à la détente.
Si je résume ton raisonne, qu'il faille que la "première" cellule de la
plage ait une MEFC pour définir X peut se comprendre (sinon la plage peut
comprendre n sous ensembles de MEFC similaires. Je comprends également le
processus de définition manuelle d'une plage de MEFC.
Mais explique-moi le comportement suivant :
contexte : - la cellule A1 contient la MEFC suivante ¡<>""
- la cellule active est I4 (aucune MEFC)
Range("A1").FormatConditions(1).Formula1
renvoie :
=I4<>""
Le résultat est le même si I4 contient une MEFC
Donc XL récupère la formule de la MEFC de A1 et substitue l'adresse de la
plage active à celle de A1.
Daniel
"MichDenis" <michdenis@hotmail.com> a écrit dans le message de news:
%23$eL1fZuHHA.1496@TK2MSFTNGP06.phx.gbl...
On peut utiliser ceci pour sélectionner une plage de cellules
ayant reçu la même mise en forme particulière
'--------------------------------
Sub test()
Dim X As Range
Set X = Range("C22:Q24").SpecialCells(xlCellTypeSameFormatConditions)
MsgBox X.Address
End Sub
'--------------------------------
Sauf que cette syntaxe pour qu'elle fonctionne a une particularité
importante à cerner
Ce n'est pas une question de compréhension.... c'est de même que les
programmeurs
de Microsoft ont développé le concept ...!
Pour que cette syntaxe soit valide, la première cellule de la plage doit
avoir reçu la
mise en forme conditionnelle dont on recherche la globalité de la plage
que l'on désire
cerner :
Exemple : Si tu utilises la plage suivante :
Set X = Range("H22:Q30").SpecialCells(xlCellTypeSameFormatConditions)
X.Address retourne C22:Q24
Si tu utilises la plage suivante :
Set X = Range("H21:Q30").SpecialCells(xlCellTypeSameFormatConditions)
Tu auras un message d'erreur t'indiquant qu'il n'y a pas de cellules
correspondantes
En fait, parce que la première cellule H21 (la référence) n'a pas un
format conditionnelle,
la méthode SpecialCells ne peut pas trouver les autres cellules
évidemment.
De même lorsque tu crées via l'interface de la feuille de calcul, une
mise
en forme
conditionnelle, tu sélectionnes la cellule la plus à gauche et la plus
près de la lignie1
pour établir la plage de cellules sur laquelle s'appliquera la mise en
forme conditionnelle.
Si tu as suivi et si j'ai bien compris, c'est la "cellule active" qui
renvoie "la formule de
référence"
à une mise en forme conditionnelle....c'est pour cette raison que tu dois
sélectionner
chacune des cellules de la plage !
"Daniel" <dZZZcolardelle@free.fr> a écrit dans le message de news:
uj3DO9YuHHA.4512@TK2MSFTNGP04.phx.gbl...
Daccord, ça fonctionne. Mais l'explication ? Pourquoi faut-il
sélectionner
la cellule ?
Daniel
"zOrg2net" <zOrg2net@discussions.microsoft.com> a écrit dans le message
de
news: 05834C6E-9661-419A-9218-3126118DCF73@microsoft.com...
Rebonjour,
Fin des constatations:
Si tu sélectionnes la cellule Var avec Range(Var).Select,
Evaluate(Formule)
fait référence aux cellules suivantes de la plage, sinon, elle ne fait
référence qu'a la cellule D22 du départ.
zOrg2net
7OuNet
Sub test1()
Dim c As Range, Teste, Formule As String, Couleuyr As Integer
For Each c In Range("D22:O24")
Var = c.Address
Range(Var).Select
With c.FormatConditions(1)
Teste = .Type
Formule = .Formula1
couleur = .Interior.ColorIndex
End With
Var = Evaluate(Formule)
If Var = True Then
MsgBox "toto"
End If
Next c
End Sub
Bonjour.
Je dois rater quelque chose. Suite à la question de Chocho, j'ai monté
la
moulinette suivante :
Sub test1()
Dim c As Range, Teste, Formule As String, Couleuyr As Integer
For Each c In Range("D22:O24")
Var = c.Address
With c.FormatConditions(1)
Teste = .Type
Formule = .Formula1
couleur = .Interior.ColorIndex
End With
Var = Evaluate(Formule)
If Evaluate(Formule) = True Then
MsgBox "toto"
End If
Next c
End Sub
Dans chaque cellule de la plage, la même MEFC : test si le contenu de
la
cellule est différent de "".
Or le contenu de la variable Formule (et peut-être les autres
variables)
n'évolue pas, sauf si, en exécution ligne à ligne, on visualise la MEFC
de
la cellule traitée sans y faire de modif avant de récupérer la formule.
Ci-joint le classeur, pour une meilleure compréhension :
http://cjoint.com/?gCoWB1HB27
Merci d'avance.
Daniel
Un autre qui ne veut pas comprendre ...;-))
Suppose que tu veux qu'une mise en forme conditionnelle s'applique
sur la plage A1:D10. Dans la formule que tu vas utiliser tu vas
RETENIR LA CELLULE A1 COMME RÉFÉRENCE ET
excel va reproduire la mise en forme en adaptant l'adresse
pour chacune des cellules de la plage.
Quand tu fais ceci :
Exemple : Si tu utilises la plage suivante :
Set X = Range("H22:Q30").SpecialCells(xlCellTypeSameFormatConditions)
X.Address retourne C22:Q24
Tu peux même aller plus loin :
Set x = Range("H22").SpecialCells(xlCellTypeSameFormatConditions)
Msgbox x.Address
A partir d'une cellule qui a une mise en forme condtionnelle, tu peux
définir
l'adresse de toutes les cellules de la feuille qui ont une même mise en
forme
conditionnelle.
La procédure RETIENT LA PREMIÈRE CELLULE DE LA PLAGE H22
comme cellule de RÉFÉRENCE pour évaluer si les autres cellules contient
la même mise en forme conditionnelle.
Quand tu boucles sur une plage de cellules comme dans ton exemple
'---------------------------------:
Sub test1()
Dim c As Range, Teste, Formule As String, Couleuyr As Integer
For Each c In Range("D22:O24")
Var = c.Address
With c.FormatConditions(1)
Formule = .Formula1
couleur = .Interior.ColorIndex
End With
Var = Evaluate(Formule)
If Evaluate(Formule) = True Then
MsgBox "toto"
End If
Next c
End Sub
'---------------------------------
Si la cellule active était D15, il prendra comme cellule de
référence D22 (première cellule de la plage définie)
pour établir la formule de la mise en forme condtionnelle
pour la totalité de la plage. IL PREND LA PREMIÈRE CELLULE
DE LA PLAGE MENTIONNÉE COMME CELLULE DE
RÉFÉRENCE.... Si la première cellule de la plage n'a pas
une mise en forme conditionnelle, la procédure se plante.
Dans ton dernier exemple :
Range("A1").FormatConditions(1).Formula1
renvoie :=I4<>"" si I4 est la cellule active....
Il ne fait pas de vérification si la cellule I4
a une mise en forme condtionnelle il ne fait
QU'ADAPTER l' adresse de la cellule de
la formule de la cellule de référence...
si tu veux savoir si I4 a une mise en forme condtionnelle
x=Range("I4").FormatConditions(1).Formula1
qui se plantera si I4 n'a pas de mise en forme cond.
La seule alternative c'est de rendre la cellule active lorsque tu veux
savoir si oui ou non la cellule a une mise en forme conditionnellle
en dans un second temps, évaluer la formule, le cas échéant.
Est-ce logique ? Faut poser la question à Microsoft....mais cette de
cette manière que cela fonctionne.
"Daniel" a écrit dans le message de news:
Merci pour tes explications.
Mettons que je sois particulièrement dur à la détente.
Si je résume ton raisonne, qu'il faille que la "première" cellule de la
plage ait une MEFC pour définir X peut se comprendre (sinon la plage peut
comprendre n sous ensembles de MEFC similaires. Je comprends également le
processus de définition manuelle d'une plage de MEFC.
Mais explique-moi le comportement suivant :
contexte : - la cellule A1 contient la MEFC suivante ¡<>""
- la cellule active est I4 (aucune MEFC)
Range("A1").FormatConditions(1).Formula1
renvoie :
=I4<>""
Le résultat est le même si I4 contient une MEFC
Donc XL récupère la formule de la MEFC de A1 et substitue l'adresse de la
plage active à celle de A1.
Daniel
"MichDenis" a écrit dans le message de news:
%23$On peut utiliser ceci pour sélectionner une plage de cellules
ayant reçu la même mise en forme particulière
'--------------------------------
Sub test()
Dim X As Range
Set X = Range("C22:Q24").SpecialCells(xlCellTypeSameFormatConditions)
MsgBox X.Address
End Sub
'--------------------------------
Sauf que cette syntaxe pour qu'elle fonctionne a une particularité
importante à cerner
Ce n'est pas une question de compréhension.... c'est de même que les
programmeurs
de Microsoft ont développé le concept ...!
Pour que cette syntaxe soit valide, la première cellule de la plage doit
avoir reçu la
mise en forme conditionnelle dont on recherche la globalité de la plage
que l'on désire
cerner :
Exemple : Si tu utilises la plage suivante :
Set X = Range("H22:Q30").SpecialCells(xlCellTypeSameFormatConditions)
X.Address retourne C22:Q24
Si tu utilises la plage suivante :
Set X = Range("H21:Q30").SpecialCells(xlCellTypeSameFormatConditions)
Tu auras un message d'erreur t'indiquant qu'il n'y a pas de cellules
correspondantes
En fait, parce que la première cellule H21 (la référence) n'a pas un
format conditionnelle,
la méthode SpecialCells ne peut pas trouver les autres cellules
évidemment.
De même lorsque tu crées via l'interface de la feuille de calcul, une
mise
en forme
conditionnelle, tu sélectionnes la cellule la plus à gauche et la plus
près de la lignie1
pour établir la plage de cellules sur laquelle s'appliquera la mise en
forme conditionnelle.
Si tu as suivi et si j'ai bien compris, c'est la "cellule active" qui
renvoie "la formule de
référence"
à une mise en forme conditionnelle....c'est pour cette raison que tu dois
sélectionner
chacune des cellules de la plage !
"Daniel" a écrit dans le message de news:
Daccord, ça fonctionne. Mais l'explication ? Pourquoi faut-il
sélectionner
la cellule ?
Daniel
"zOrg2net" a écrit dans le message
de
news:Rebonjour,
Fin des constatations:
Si tu sélectionnes la cellule Var avec Range(Var).Select,
Evaluate(Formule)
fait référence aux cellules suivantes de la plage, sinon, elle ne fait
référence qu'a la cellule D22 du départ.
zOrg2net
7OuNet
Sub test1()
Dim c As Range, Teste, Formule As String, Couleuyr As Integer
For Each c In Range("D22:O24")
Var = c.Address
Range(Var).Select
With c.FormatConditions(1)
Teste = .Type
Formule = .Formula1
couleur = .Interior.ColorIndex
End With
Var = Evaluate(Formule)
If Var = True Then
MsgBox "toto"
End If
Next c
End SubBonjour.
Je dois rater quelque chose. Suite à la question de Chocho, j'ai monté
la
moulinette suivante :
Sub test1()
Dim c As Range, Teste, Formule As String, Couleuyr As Integer
For Each c In Range("D22:O24")
Var = c.Address
With c.FormatConditions(1)
Teste = .Type
Formule = .Formula1
couleur = .Interior.ColorIndex
End With
Var = Evaluate(Formule)
If Evaluate(Formule) = True Then
MsgBox "toto"
End If
Next c
End Sub
Dans chaque cellule de la plage, la même MEFC : test si le contenu de
la
cellule est différent de "".
Or le contenu de la variable Formule (et peut-être les autres
variables)
n'évolue pas, sauf si, en exécution ligne à ligne, on visualise la MEFC
de
la cellule traitée sans y faire de modif avant de récupérer la formule.
Ci-joint le classeur, pour une meilleure compréhension :
http://cjoint.com/?gCoWB1HB27
Merci d'avance.
Daniel
Un autre qui ne veut pas comprendre ...;-))
Suppose que tu veux qu'une mise en forme conditionnelle s'applique
sur la plage A1:D10. Dans la formule que tu vas utiliser tu vas
RETENIR LA CELLULE A1 COMME RÉFÉRENCE ET
excel va reproduire la mise en forme en adaptant l'adresse
pour chacune des cellules de la plage.
Quand tu fais ceci :
Exemple : Si tu utilises la plage suivante :
Set X = Range("H22:Q30").SpecialCells(xlCellTypeSameFormatConditions)
X.Address retourne C22:Q24
Tu peux même aller plus loin :
Set x = Range("H22").SpecialCells(xlCellTypeSameFormatConditions)
Msgbox x.Address
A partir d'une cellule qui a une mise en forme condtionnelle, tu peux définir
l'adresse de toutes les cellules de la feuille qui ont une même mise en forme
conditionnelle.
La procédure RETIENT LA PREMIÈRE CELLULE DE LA PLAGE H22
comme cellule de RÉFÉRENCE pour évaluer si les autres cellules contient
la même mise en forme conditionnelle.
Quand tu boucles sur une plage de cellules comme dans ton exemple
'---------------------------------:
Sub test1()
Dim c As Range, Teste, Formule As String, Couleuyr As Integer
For Each c In Range("D22:O24")
Var = c.Address
With c.FormatConditions(1)
Formule = .Formula1
couleur = .Interior.ColorIndex
End With
Var = Evaluate(Formule)
If Evaluate(Formule) = True Then
MsgBox "toto"
End If
Next c
End Sub
'---------------------------------
Si la cellule active était D15, il prendra comme cellule de
référence D22 (première cellule de la plage définie)
pour établir la formule de la mise en forme condtionnelle
pour la totalité de la plage. IL PREND LA PREMIÈRE CELLULE
DE LA PLAGE MENTIONNÉE COMME CELLULE DE
RÉFÉRENCE.... Si la première cellule de la plage n'a pas
une mise en forme conditionnelle, la procédure se plante.
Dans ton dernier exemple :
Range("A1").FormatConditions(1).Formula1
renvoie :=I4<>"" si I4 est la cellule active....
Il ne fait pas de vérification si la cellule I4
a une mise en forme condtionnelle il ne fait
QU'ADAPTER l' adresse de la cellule de
la formule de la cellule de référence...
si tu veux savoir si I4 a une mise en forme condtionnelle
x=Range("I4").FormatConditions(1).Formula1
qui se plantera si I4 n'a pas de mise en forme cond.
La seule alternative c'est de rendre la cellule active lorsque tu veux
savoir si oui ou non la cellule a une mise en forme conditionnellle
en dans un second temps, évaluer la formule, le cas échéant.
Est-ce logique ? Faut poser la question à Microsoft....mais cette de
cette manière que cela fonctionne.
"Daniel" a écrit dans le message de news:
Merci pour tes explications.
Mettons que je sois particulièrement dur à la détente.
Si je résume ton raisonne, qu'il faille que la "première" cellule de la
plage ait une MEFC pour définir X peut se comprendre (sinon la plage peut
comprendre n sous ensembles de MEFC similaires. Je comprends également le
processus de définition manuelle d'une plage de MEFC.
Mais explique-moi le comportement suivant :
contexte : - la cellule A1 contient la MEFC suivante ¡<>""
- la cellule active est I4 (aucune MEFC)
Range("A1").FormatConditions(1).Formula1
renvoie :
=I4<>""
Le résultat est le même si I4 contient une MEFC
Donc XL récupère la formule de la MEFC de A1 et substitue l'adresse de la
plage active à celle de A1.
Daniel
"MichDenis" a écrit dans le message de news:
%23$On peut utiliser ceci pour sélectionner une plage de cellules
ayant reçu la même mise en forme particulière
'--------------------------------
Sub test()
Dim X As Range
Set X = Range("C22:Q24").SpecialCells(xlCellTypeSameFormatConditions)
MsgBox X.Address
End Sub
'--------------------------------
Sauf que cette syntaxe pour qu'elle fonctionne a une particularité
importante à cerner
Ce n'est pas une question de compréhension.... c'est de même que les
programmeurs
de Microsoft ont développé le concept ...!
Pour que cette syntaxe soit valide, la première cellule de la plage doit
avoir reçu la
mise en forme conditionnelle dont on recherche la globalité de la plage
que l'on désire
cerner :
Exemple : Si tu utilises la plage suivante :
Set X = Range("H22:Q30").SpecialCells(xlCellTypeSameFormatConditions)
X.Address retourne C22:Q24
Si tu utilises la plage suivante :
Set X = Range("H21:Q30").SpecialCells(xlCellTypeSameFormatConditions)
Tu auras un message d'erreur t'indiquant qu'il n'y a pas de cellules
correspondantes
En fait, parce que la première cellule H21 (la référence) n'a pas un
format conditionnelle,
la méthode SpecialCells ne peut pas trouver les autres cellules
évidemment.
De même lorsque tu crées via l'interface de la feuille de calcul, une mise
en forme
conditionnelle, tu sélectionnes la cellule la plus à gauche et la plus
près de la lignie1
pour établir la plage de cellules sur laquelle s'appliquera la mise en
forme conditionnelle.
Si tu as suivi et si j'ai bien compris, c'est la "cellule active" qui
renvoie "la formule de
référence"
à une mise en forme conditionnelle....c'est pour cette raison que tu dois
sélectionner
chacune des cellules de la plage !
"Daniel" a écrit dans le message de news:
Daccord, ça fonctionne. Mais l'explication ? Pourquoi faut-il sélectionner
la cellule ?
Daniel
"zOrg2net" a écrit dans le message de
news:Rebonjour,
Fin des constatations:
Si tu sélectionnes la cellule Var avec Range(Var).Select,
Evaluate(Formule)
fait référence aux cellules suivantes de la plage, sinon, elle ne fait
référence qu'a la cellule D22 du départ.
zOrg2net
7OuNet
Sub test1()
Dim c As Range, Teste, Formule As String, Couleuyr As Integer
For Each c In Range("D22:O24")
Var = c.Address
Range(Var).Select
With c.FormatConditions(1)
Teste = .Type
Formule = .Formula1
couleur = .Interior.ColorIndex
End With
Var = Evaluate(Formule)
If Var = True Then
MsgBox "toto"
End If
Next c
End SubBonjour.
Je dois rater quelque chose. Suite à la question de Chocho, j'ai monté
la
moulinette suivante :
Sub test1()
Dim c As Range, Teste, Formule As String, Couleuyr As Integer
For Each c In Range("D22:O24")
Var = c.Address
With c.FormatConditions(1)
Teste = .Type
Formule = .Formula1
couleur = .Interior.ColorIndex
End With
Var = Evaluate(Formule)
If Evaluate(Formule) = True Then
MsgBox "toto"
End If
Next c
End Sub
Dans chaque cellule de la plage, la même MEFC : test si le contenu de la
cellule est différent de "".
Or le contenu de la variable Formule (et peut-être les autres variables)
n'évolue pas, sauf si, en exécution ligne à ligne, on visualise la MEFC
de
la cellule traitée sans y faire de modif avant de récupérer la formule.
Ci-joint le classeur, pour une meilleure compréhension :
http://cjoint.com/?gCoWB1HB27
Merci d'avance.
Daniel
Un autre qui ne veut pas comprendre ...;-))
Suppose que tu veux qu'une mise en forme conditionnelle s'applique
sur la plage A1:D10. Dans la formule que tu vas utiliser tu vas
RETENIR LA CELLULE A1 COMME RÉFÉRENCE ET
excel va reproduire la mise en forme en adaptant l'adresse
pour chacune des cellules de la plage.
Quand tu fais ceci :
Exemple : Si tu utilises la plage suivante :
Set X = Range("H22:Q30").SpecialCells(xlCellTypeSameFormatConditions)
X.Address retourne C22:Q24
Tu peux même aller plus loin :
Set x = Range("H22").SpecialCells(xlCellTypeSameFormatConditions)
Msgbox x.Address
A partir d'une cellule qui a une mise en forme condtionnelle, tu peux définir
l'adresse de toutes les cellules de la feuille qui ont une même mise en forme
conditionnelle.
La procédure RETIENT LA PREMIÈRE CELLULE DE LA PLAGE H22
comme cellule de RÉFÉRENCE pour évaluer si les autres cellules contient
la même mise en forme conditionnelle.
Quand tu boucles sur une plage de cellules comme dans ton exemple
'---------------------------------:
Sub test1()
Dim c As Range, Teste, Formule As String, Couleuyr As Integer
For Each c In Range("D22:O24")
Var = c.Address
With c.FormatConditions(1)
Formule = .Formula1
couleur = .Interior.ColorIndex
End With
Var = Evaluate(Formule)
If Evaluate(Formule) = True Then
MsgBox "toto"
End If
Next c
End Sub
'---------------------------------
Si la cellule active était D15, il prendra comme cellule de
référence D22 (première cellule de la plage définie)
pour établir la formule de la mise en forme condtionnelle
pour la totalité de la plage. IL PREND LA PREMIÈRE CELLULE
DE LA PLAGE MENTIONNÉE COMME CELLULE DE
RÉFÉRENCE.... Si la première cellule de la plage n'a pas
une mise en forme conditionnelle, la procédure se plante.
Dans ton dernier exemple :
Range("A1").FormatConditions(1).Formula1
renvoie :=I4<>"" si I4 est la cellule active....
Il ne fait pas de vérification si la cellule I4
a une mise en forme condtionnelle il ne fait
QU'ADAPTER l' adresse de la cellule de
la formule de la cellule de référence...
si tu veux savoir si I4 a une mise en forme condtionnelle
x=Range("I4").FormatConditions(1).Formula1
qui se plantera si I4 n'a pas de mise en forme cond.
La seule alternative c'est de rendre la cellule active lorsque tu veux
savoir si oui ou non la cellule a une mise en forme conditionnellle
en dans un second temps, évaluer la formule, le cas échéant.
Est-ce logique ? Faut poser la question à Microsoft....mais cette de
cette manière que cela fonctionne.
"Daniel" <dZZZcolardelle@free.fr> a écrit dans le message de news:
OCvrrGbuHHA.4476@TK2MSFTNGP03.phx.gbl...
Merci pour tes explications.
Mettons que je sois particulièrement dur à la détente.
Si je résume ton raisonne, qu'il faille que la "première" cellule de la
plage ait une MEFC pour définir X peut se comprendre (sinon la plage peut
comprendre n sous ensembles de MEFC similaires. Je comprends également le
processus de définition manuelle d'une plage de MEFC.
Mais explique-moi le comportement suivant :
contexte : - la cellule A1 contient la MEFC suivante ¡<>""
- la cellule active est I4 (aucune MEFC)
Range("A1").FormatConditions(1).Formula1
renvoie :
=I4<>""
Le résultat est le même si I4 contient une MEFC
Donc XL récupère la formule de la MEFC de A1 et substitue l'adresse de la
plage active à celle de A1.
Daniel
"MichDenis" <michdenis@hotmail.com> a écrit dans le message de news:
%23$eL1fZuHHA.1496@TK2MSFTNGP06.phx.gbl...
On peut utiliser ceci pour sélectionner une plage de cellules
ayant reçu la même mise en forme particulière
'--------------------------------
Sub test()
Dim X As Range
Set X = Range("C22:Q24").SpecialCells(xlCellTypeSameFormatConditions)
MsgBox X.Address
End Sub
'--------------------------------
Sauf que cette syntaxe pour qu'elle fonctionne a une particularité
importante à cerner
Ce n'est pas une question de compréhension.... c'est de même que les
programmeurs
de Microsoft ont développé le concept ...!
Pour que cette syntaxe soit valide, la première cellule de la plage doit
avoir reçu la
mise en forme conditionnelle dont on recherche la globalité de la plage
que l'on désire
cerner :
Exemple : Si tu utilises la plage suivante :
Set X = Range("H22:Q30").SpecialCells(xlCellTypeSameFormatConditions)
X.Address retourne C22:Q24
Si tu utilises la plage suivante :
Set X = Range("H21:Q30").SpecialCells(xlCellTypeSameFormatConditions)
Tu auras un message d'erreur t'indiquant qu'il n'y a pas de cellules
correspondantes
En fait, parce que la première cellule H21 (la référence) n'a pas un
format conditionnelle,
la méthode SpecialCells ne peut pas trouver les autres cellules
évidemment.
De même lorsque tu crées via l'interface de la feuille de calcul, une mise
en forme
conditionnelle, tu sélectionnes la cellule la plus à gauche et la plus
près de la lignie1
pour établir la plage de cellules sur laquelle s'appliquera la mise en
forme conditionnelle.
Si tu as suivi et si j'ai bien compris, c'est la "cellule active" qui
renvoie "la formule de
référence"
à une mise en forme conditionnelle....c'est pour cette raison que tu dois
sélectionner
chacune des cellules de la plage !
"Daniel" <dZZZcolardelle@free.fr> a écrit dans le message de news:
uj3DO9YuHHA.4512@TK2MSFTNGP04.phx.gbl...
Daccord, ça fonctionne. Mais l'explication ? Pourquoi faut-il sélectionner
la cellule ?
Daniel
"zOrg2net" <zOrg2net@discussions.microsoft.com> a écrit dans le message de
news: 05834C6E-9661-419A-9218-3126118DCF73@microsoft.com...
Rebonjour,
Fin des constatations:
Si tu sélectionnes la cellule Var avec Range(Var).Select,
Evaluate(Formule)
fait référence aux cellules suivantes de la plage, sinon, elle ne fait
référence qu'a la cellule D22 du départ.
zOrg2net
7OuNet
Sub test1()
Dim c As Range, Teste, Formule As String, Couleuyr As Integer
For Each c In Range("D22:O24")
Var = c.Address
Range(Var).Select
With c.FormatConditions(1)
Teste = .Type
Formule = .Formula1
couleur = .Interior.ColorIndex
End With
Var = Evaluate(Formule)
If Var = True Then
MsgBox "toto"
End If
Next c
End Sub
Bonjour.
Je dois rater quelque chose. Suite à la question de Chocho, j'ai monté
la
moulinette suivante :
Sub test1()
Dim c As Range, Teste, Formule As String, Couleuyr As Integer
For Each c In Range("D22:O24")
Var = c.Address
With c.FormatConditions(1)
Teste = .Type
Formule = .Formula1
couleur = .Interior.ColorIndex
End With
Var = Evaluate(Formule)
If Evaluate(Formule) = True Then
MsgBox "toto"
End If
Next c
End Sub
Dans chaque cellule de la plage, la même MEFC : test si le contenu de la
cellule est différent de "".
Or le contenu de la variable Formule (et peut-être les autres variables)
n'évolue pas, sauf si, en exécution ligne à ligne, on visualise la MEFC
de
la cellule traitée sans y faire de modif avant de récupérer la formule.
Ci-joint le classeur, pour une meilleure compréhension :
http://cjoint.com/?gCoWB1HB27
Merci d'avance.
Daniel
Un autre qui ne veut pas comprendre ...;-))
Suppose que tu veux qu'une mise en forme conditionnelle s'applique
sur la plage A1:D10. Dans la formule que tu vas utiliser tu vas
RETENIR LA CELLULE A1 COMME RÉFÉRENCE ET
excel va reproduire la mise en forme en adaptant l'adresse
pour chacune des cellules de la plage.
Quand tu fais ceci :
Exemple : Si tu utilises la plage suivante :
Set X = Range("H22:Q30").SpecialCells(xlCellTypeSameFormatConditions)
X.Address retourne C22:Q24
Tu peux même aller plus loin :
Set x = Range("H22").SpecialCells(xlCellTypeSameFormatConditions)
Msgbox x.Address
A partir d'une cellule qui a une mise en forme condtionnelle, tu peux définir
l'adresse de toutes les cellules de la feuille qui ont une même mise en forme
conditionnelle.
La procédure RETIENT LA PREMIÈRE CELLULE DE LA PLAGE H22
comme cellule de RÉFÉRENCE pour évaluer si les autres cellules contient
la même mise en forme conditionnelle.
Quand tu boucles sur une plage de cellules comme dans ton exemple
'---------------------------------:
Sub test1()
Dim c As Range, Teste, Formule As String, Couleuyr As Integer
For Each c In Range("D22:O24")
Var = c.Address
With c.FormatConditions(1)
Formule = .Formula1
couleur = .Interior.ColorIndex
End With
Var = Evaluate(Formule)
If Evaluate(Formule) = True Then
MsgBox "toto"
End If
Next c
End Sub
'---------------------------------
Si la cellule active était D15, il prendra comme cellule de
référence D22 (première cellule de la plage définie)
pour établir la formule de la mise en forme condtionnelle
pour la totalité de la plage. IL PREND LA PREMIÈRE CELLULE
DE LA PLAGE MENTIONNÉE COMME CELLULE DE
RÉFÉRENCE.... Si la première cellule de la plage n'a pas
une mise en forme conditionnelle, la procédure se plante.
Dans ton dernier exemple :
Range("A1").FormatConditions(1).Formula1
renvoie :=I4<>"" si I4 est la cellule active....
Il ne fait pas de vérification si la cellule I4
a une mise en forme condtionnelle il ne fait
QU'ADAPTER l' adresse de la cellule de
la formule de la cellule de référence...
si tu veux savoir si I4 a une mise en forme condtionnelle
x=Range("I4").FormatConditions(1).Formula1
qui se plantera si I4 n'a pas de mise en forme cond.
La seule alternative c'est de rendre la cellule active lorsque tu veux
savoir si oui ou non la cellule a une mise en forme conditionnellle
en dans un second temps, évaluer la formule, le cas échéant.
Est-ce logique ? Faut poser la question à Microsoft....mais cette de
cette manière que cela fonctionne.
"Daniel" a écrit dans le message de news:
Merci pour tes explications.
Mettons que je sois particulièrement dur à la détente.
Si je résume ton raisonne, qu'il faille que la "première" cellule de la
plage ait une MEFC pour définir X peut se comprendre (sinon la plage peut
comprendre n sous ensembles de MEFC similaires. Je comprends également le
processus de définition manuelle d'une plage de MEFC.
Mais explique-moi le comportement suivant :
contexte : - la cellule A1 contient la MEFC suivante ¡<>""
- la cellule active est I4 (aucune MEFC)
Range("A1").FormatConditions(1).Formula1
renvoie :
=I4<>""
Le résultat est le même si I4 contient une MEFC
Donc XL récupère la formule de la MEFC de A1 et substitue l'adresse de la
plage active à celle de A1.
Daniel
"MichDenis" a écrit dans le message de news:
%23$On peut utiliser ceci pour sélectionner une plage de cellules
ayant reçu la même mise en forme particulière
'--------------------------------
Sub test()
Dim X As Range
Set X = Range("C22:Q24").SpecialCells(xlCellTypeSameFormatConditions)
MsgBox X.Address
End Sub
'--------------------------------
Sauf que cette syntaxe pour qu'elle fonctionne a une particularité
importante à cerner
Ce n'est pas une question de compréhension.... c'est de même que les
programmeurs
de Microsoft ont développé le concept ...!
Pour que cette syntaxe soit valide, la première cellule de la plage doit
avoir reçu la
mise en forme conditionnelle dont on recherche la globalité de la plage
que l'on désire
cerner :
Exemple : Si tu utilises la plage suivante :
Set X = Range("H22:Q30").SpecialCells(xlCellTypeSameFormatConditions)
X.Address retourne C22:Q24
Si tu utilises la plage suivante :
Set X = Range("H21:Q30").SpecialCells(xlCellTypeSameFormatConditions)
Tu auras un message d'erreur t'indiquant qu'il n'y a pas de cellules
correspondantes
En fait, parce que la première cellule H21 (la référence) n'a pas un
format conditionnelle,
la méthode SpecialCells ne peut pas trouver les autres cellules
évidemment.
De même lorsque tu crées via l'interface de la feuille de calcul, une mise
en forme
conditionnelle, tu sélectionnes la cellule la plus à gauche et la plus
près de la lignie1
pour établir la plage de cellules sur laquelle s'appliquera la mise en
forme conditionnelle.
Si tu as suivi et si j'ai bien compris, c'est la "cellule active" qui
renvoie "la formule de
référence"
à une mise en forme conditionnelle....c'est pour cette raison que tu dois
sélectionner
chacune des cellules de la plage !
"Daniel" a écrit dans le message de news:
Daccord, ça fonctionne. Mais l'explication ? Pourquoi faut-il sélectionner
la cellule ?
Daniel
"zOrg2net" a écrit dans le message de
news:Rebonjour,
Fin des constatations:
Si tu sélectionnes la cellule Var avec Range(Var).Select,
Evaluate(Formule)
fait référence aux cellules suivantes de la plage, sinon, elle ne fait
référence qu'a la cellule D22 du départ.
zOrg2net
7OuNet
Sub test1()
Dim c As Range, Teste, Formule As String, Couleuyr As Integer
For Each c In Range("D22:O24")
Var = c.Address
Range(Var).Select
With c.FormatConditions(1)
Teste = .Type
Formule = .Formula1
couleur = .Interior.ColorIndex
End With
Var = Evaluate(Formule)
If Var = True Then
MsgBox "toto"
End If
Next c
End SubBonjour.
Je dois rater quelque chose. Suite à la question de Chocho, j'ai monté
la
moulinette suivante :
Sub test1()
Dim c As Range, Teste, Formule As String, Couleuyr As Integer
For Each c In Range("D22:O24")
Var = c.Address
With c.FormatConditions(1)
Teste = .Type
Formule = .Formula1
couleur = .Interior.ColorIndex
End With
Var = Evaluate(Formule)
If Evaluate(Formule) = True Then
MsgBox "toto"
End If
Next c
End Sub
Dans chaque cellule de la plage, la même MEFC : test si le contenu de la
cellule est différent de "".
Or le contenu de la variable Formule (et peut-être les autres variables)
n'évolue pas, sauf si, en exécution ligne à ligne, on visualise la MEFC
de
la cellule traitée sans y faire de modif avant de récupérer la formule.
Ci-joint le classeur, pour une meilleure compréhension :
http://cjoint.com/?gCoWB1HB27
Merci d'avance.
Daniel