Marco activecell > aujourd'hui ???
Bonjour
Ci-dessous une partie de code qui fonctionne mais j'aimerais à la place de I2 de pouvoir mettre la cellule active !!! Car j'aimerais modifier la mise en forme si la cellule active est plus petite que la date du jour... Donc j'aimerais remplacer le texte I2 par cellule active, ce qui me permettra de faire des copier coller dans excel et ma macro fonctionnera toujours....
ActiveCell.Offset(-1, 7).Select
Selection.FormatConditions.Delete
ActiveCell.FormulaR1C1 = "=DATE(YEAR(RC[-7]),MONTH(RC[-7])-3,DAY(RC[-7])-0)"
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=I2<AUJOURDHUI()"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Font
.Color = -16776961
.TintAndShade = 0
End With
D'avance un grand merci pour votre aide
Pascal
Bonjour,
A tester.
Cdlt.
Public Sub Demo()
Dim rCell As Range
Set rCell = ActiveCell
With rCell.Offset(-1, 7)
.FormatConditions.Delete
.FormulaR1C1 = "=DATE(YEAR(RC[-7]),MONTH(RC[-7])-3,DAY(RC[-7]))"
.FormatConditions.Add Type:=xlExpression, Formula1:=rCell < Date
With .FormatConditions(1)
With .Font
.Color = -16776961
.TintAndShade = 0
End With
End With
End With
Set rCell = Nothing
End Sub
Un grand merci pour cette réponse rapide mais ça ne marche pas...
Je vais joindre mon fichier
Bonjour
Voici le fichier...
Lorsque je choisis "nouveau" en B3, les dates de C2:I2 se modifie! J'arrive à mettre une mise en forme conditionnelle afin que si une de ces dates est < aujourd'hui, la poilce devienne rouge. J'arrive aussi à le mettre dans la macro!
Mais dans la macro , il sera écrit par exemple I2>aujourd'hui ... et moi j'aimerais travailler avec Activecell à la place de I2 car ensuite je devrais faire des copier coller des lignes 1 à 20...
D'avance merci
Pascal
Je me permet de faire un petit appel un peu urgent car j'aurai besoin de ce fichier demain pour une présentation...
D'avance un grand merci
Bonjour,
Ta demande manque de logique.
et moi j'aimerais travailler avec Activecell à la place de I2
mais à cet endroit du code Activecell ne peut pas être autre chose que I2 puisque tu l'imposes dans le code (???)
Changer la cellule active pour remplir cette cellule n'est pas une bonne façon de travailler en vba. On ne sélectionne une cellule ou plage que lorsque c'est vraiment nécessaire, c'est à dire très rarement.
Ceci dit j'ai l'impression que beaucoup de choses que tu fais par macro pourrait être fait par formule.
Pourquoi tu ne cherches pas à mettre directement ta MFC sur la feuille ? Je n'ai pas trop approfondi, quelle est la difficulté ?
Expose toutes les conditions et la plage d'action de ta MFC.
Il vaut mieux maîtriser d'abord excel et utiliser vba en dernier lieu.
eric
Justement dans le code j'aimerais remplacer le I2 par activecell car les lignes 1 à 20 du fichier excel,c e'st un planning d'un projet. Et que lors d'un nouveau projet, je copie mes lignes 1 à 20 que j'insère au-dessus. Alors effectivement je peux le faire avec des MFC mais dans mes macros à un moment, je dois effacer mes MFC et j'aimerais que la mise en forme Activecell > aujourd'hui puisse être mise par macro...
Je conçois qu'il n'est pas évident de comprendre pourquoi je veux ça.... Mais il n'est pas facile d'expliquer le tout...
Je ré-explique autrement.
Ta macro est lancée si B3 devient "Nouveau", donc ActiveCell est B3 et ne peut pas être autre chose.
Tu démarres avec
ActiveCell.Offset(-1, 7).Select
D'ailleurs pourquoi pas directement [I2].select qui est plus clair et strictement équivalent ?
A ce moment ActiveCell est I2 et ne peut pas être autre chose, remplacer l'un par l'autre ne changera strictement rien.
Es-tu d'accord ?
On voit bien que tu débutes mais là non seulement les bases te manquent, mais également la logique.
Alors sûrement que ton programme ne fait pas ce que tu veux mais plutôt que d'expliquer la MFC comme demandé tu réponds je dois l'effacer. Ca c'est toi qui le dit, si elle est complète avec toutes les conditions pas de raison de l'effacer. Maintenant si au final ça donne une formule ingérable de 300 caractères, alors là oui peut-être. Et encore, tu peux utiliser des cellules intermédiaire masquées pour préparer, simplifier et alléger ta MFC
Il faut que tu donnes toutes les explications si tu veux de l'aide. On ne va pas essayer de deviner à l'aide de ton code plein de lignes inutiles et manquant de logique.
eric
Oui effectivement je débute et je pense que ça se voit...
En fait j'enregistre des macros et ensuite, j'essaie de comprendre un peu le code et tente de le modifier... Je suis assez content pour l'instant de ce que j'ai réussi à faire mais effectivement, il me manque les bases...
En fait j'arrive à faire fonctionner exactement comme je le veux avec des MFC et tout marche super.
Effectivement, j'essaie peut-être de faire des choses avec des macros alors que c'est réalisable autrement...
J'essaie d'être clair
- D'abord B2 j'entre une date
- En B3. je choisis entre nouveau, modification, evolution, ce que fait varier mes dates dans les cellules C2:I2
- Dans ces cellules C2:I2, je mets une mise en forme qui dit que si la date est plus petite que la date du jour, le texte de la cellule devient rouge
Jusque là, j'arrrive sans problème à faire fonctionner mes macros et la MFC fonctionne même si je créé un nouveau projet, c'est à dire que je copie, les lignes 1 à 20 et que je les insère en haut, tout fonctionne!
Ensuite le but est de :
- En C3, avoir une macro qui met la date du jour et qui la fixe, Et que si cette date est plus petite que C2, les cases C2 et C3 deviennent vertes et si elle est plus grande, les 2 cases deviennent rouge ET LE TEXTE DE C2 NOIR....!
Et pour mettre le texte de C2 en noir, ben j'efface la MFC... , et ça marche mais lorsqu'ensuite j'ai besoin de créer un nouveau projet, ben les cellules C2, n'ont plus de mise en forme pour le texte rouge car cette MFC a été supprimer avec mes macros....
C'est pourquoi j'aimerais mettre la MFC des cellules B2:I2 avec mes macros et avec des fonctions comme cellules active ou offset. Ainsi lorsque je crée un nouveau projet, tout part en fait lorsque je modifie le menu déroulant "nouveau, modif, evolution.
D'avance merci
Pascal
Voici un fichier qui fonctionne mais auquel, je ne modifie pas la couleur des polices C2:I2 au moment de mettre la macro valider en C3:I3!
Et celà me gèene car lorsque je valide en C3 par exemple, je n'aimerais plus avoir du texte rouge en C2 mais du noir....
Merci
Désolé mais c'est encore ambigu et incomplet.
Dans ces cellules C2:I2, je mets une mise en forme qui dit que si la date est plus petite que la date du jour, le texte de la cellule devient rouge...
et :
En C3, avoir une macro qui met la date du jour et qui la fixe, Et que si cette date est plus petite que C2, les cases C2 et C3 deviennent vertes et si elle est plus grande, les 2 cases deviennent rouge ET LE TEXTE DE C2 NOIR....!
D'abord tu dis que tu compare à la date du jour, ensuite que tu compares à C3 qui est devenue une date fixe.
Si tu l'ouvres dans 3 jours tu ne compareras plus à la date du jour. Quelle version faut-il comprendre ?
Et si C2=C3 ?
Dans quels cas texte rouge et fond blanc ?
Tu devrais faire une table complète des cas (en étant précis si tu veux comparer avec aujourdhui() ou avec C3) et ce que tu veux en couleur de texte et de fond, sous cette forme :
C2 C3
Texte Fond Texte Fond
C3 vide ? ?
C2>=C3 ? vert ? vert
C2<C3 noir rouge noir rouge
Autres conditions ?
eric
edit: le tableau n'a rien donné, regarde et complète de façon exhaustive le fichier joint. C'est un exemple, ajoute des lignes et des conditions s'il en manque.