Référence relative dans une mise en forme conditionnelle

Fermé
Pullok - 13 août 2015 à 16:53
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 - 20 août 2015 à 03:32
Bonjour à tous,

Pour une macro Excel je cherche à faire un format conditionel sur une cellule. Elle doit afficher la date du jour et, en fonction de 2 autres dates issues de 2 autres cellules, afficher une barre d'avancement.
Le problème c'est que j'ai besoin que la référence à ces deux autres cellules soit relative. Et c'est là que je bloque, je n'arrive pas à trouver comment faire cette référence.

Selection.Formula = "=TODAY()"
    Selection.FormatConditions.AddDatabar
    Selection.FormatConditions(Selection.FormatConditions.Count).ShowValue = True
    Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
    With Selection.FormatConditions(1)
'Je bloque sur ces deux instructions :
        .MinPoint.Modify newtype:=xlConditionValueFormula, newvalue:= _
        "=RC[-11]"
        .MinPoint.Modify newtype:=xlConditionValueFormula, newvalue:= _
        "=RC[-2]"
    End With
'Blablabla, ça continue


J'ai obtenu le code en enregistrant une macro puis en le modifiant, d'où le "xlConditionValueFormula", qui malgré tout ne me parait pas complètement idiot vu que je souhaite mettre une formule, pas juste une valeur.

Merci de votre aide !

4 réponses

Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 338
14 août 2015 à 03:22
Bonjour
Pour pouvoir vous aider, il faudrait en dire un peu plus.
-Les dates dans les autres cellules sont-elles antérieures ou postérieures à la date de la cellule où doit s'appliquer le format conditionnel?
-Afficher une barre d'avancement, mais quel avancement? de quoi par rapport à quoi?
-Le contenu de la cellule où doit s'appliquer le format conditionnel est-ce le résultat d'une formule ou bien c'est une valeur rentrée à la main?
Sans ces quelques précisions, impossible de vous répondre dans l'immédiat.
Cdlt
0
Bonjour,
Pour répondre à vos questions :
-une date a priori inférieure correspondant au début du projet et une date supérieure correspondant à la fin théorique ;
-l'idée est de représenter l'avancement temporaire entre ces deux dates (min au début, max à la fin) ;
-les deux : la première est entrée à la main, la seconde est calculée en ajoutant 5 jours ouvrables à la première, mais elle peut aussi être entrée à la main.

Concernant la dernière question, pouvez-vous m'expliquiez en quoi cette information est utile ?

Merci beaucoup de votre aide
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 338
Modifié par Frenchie83 le 15/08/2015 à 11:02
Bonjour
Après plusieurs tests, impossible d'y arriver.
voici le message que délivre excel si on force les références relatives.
"Vous ne pouvez pas utiliser de références relatives dans les critères Mise en forme conditionnelle pour des nuances de couleurs, des barres de données et des jeux d'icônes".
Désolé

Par contre, pourquoi ne pas utiliser un système de bargraph à l'aide d'une répétition d'un caractère comme l'exemple ci-dessous
https://www.cjoint.com/c/EHpjaKLczrw

Cdlt
0
Bonjour,

Je sais bien qu'on ne peut pas en passant par Excel, c'est pour ça que je passe par l'éditeur VBA.
En fait, j'aimerais pouvoir récupérer la position des 2 cellules de date qui sont toujours au même endroit par rapport à la cellule que je veux mettre en forme. Pour ça soit j'utilise un RC soit un Cells(,). Le premier va m'introduire ma référence relative dans la mise en forme conditionnelle, le second non mais c'est pas grave. Le soucis c'est que je n'ai aucune idée de la syntaxe à adopter.

Aussi, c'était possible de faire ça directement dans Excel jusqu'à Office 2007, donc je pense que c'est contournable.
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 338
15 août 2015 à 22:45
Bonsoir
Je sais bien qu'on ne peut pas en passant par Excel, c'est pour ça que je passe par l'éditeur VBA. . A mon avis, si avec Excel ça ne passe pas, je ne pense pas que le VBA puisse faire mieux.
J'ai essayé pas mal de choses, et chaque fois il me mettait la formule entre guillemets, ce qui était interprété comme du texte, donc inexploitable.

Aussi, c'était possible de faire ça directement dans Excel jusqu'à Office 2007. C'est curieux, parce que j'utilise Excel 2007, Si vous l'avez fait directement dans Excel 2007, il vous marque par exemple =$A$2 ça c'est une référence absolue, supprimez les $ pour obtenir une référence relative et il vous jette avec le message d'erreur que je vous ai mis plus haut.
Alors, si vous dites que ça marché chez vous, pourquoi ne pas utiliser l'enregistreur de macro? et copiez le code ici que je puisse comprendre.
Peut-être aussi que je ne sélectionne pas le bon format conditionnel (j'ai pris "mettre en forme toutes les cellules d'après leur valeur", puis dans le type, je sélectionne "formule" avec minimum et maximum").
La proposition que je vous ai faite concernant l'utilisation d'une répétition d'un caractère simulant une barre proportionnelle à l'écart entre 2 dates ne vous convient pas?
A mon humble niveau, je ne pense pas pouvoir vous aider davantage sur ce problème, quelqu'un d'autre de plus compétent pourra peut-être vous aider.
Désolé de ne pas pouvoir faire mieux.
Cdlt
0
C'est bon, j'ai trouvé une solution. Comme ce que je cherchais à faire, je récupère l'adresse des cellules qui m'intéresse à chaque fois (ce qui contourne bien le problème) :

Selection.Formula = "=TODAY()"
    Selection.FormatConditions.AddDatabar
    Selection.FormatConditions(Selection.FormatConditions.Count).ShowValue = True
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
    With Selection.FormatConditions(1)
        .MinPoint.Modify newtype:=xlConditionValueFormula, newvalue:= _
        "=" & Cells(la_ligne_qui_m'intéresse, 3).Address
        .MaxPoint.Modify newtype:=xlConditionValueFormula, newvalue:= _
        "=" & Cells(la_ligne_qui_m'intéresse, 12).Address
    End With
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 338
20 août 2015 à 03:32
Bonjour
Oui, mais nous sommes bien d'accord que ce n'est pas ce que vous aviez demandé au départ, dans le cas présent, il s'agit bien de références absolues et non pas de références relatives puisque les adresses sont figées.
Bonne journée
Cdlt
0