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

6test.xlsm (32.63 Ko)

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

2p15.xlsm (31.61 Ko)

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.

7p15.xlsm (33.26 Ko)
Rechercher des sujets similaires à "marco activecell aujourd hui"