IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Changer couleur de police selon proximité d'une date date butoire


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 26
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2018
    Messages : 6
    Par défaut Changer couleur de police selon proximité d'une date date butoire
    Bonjour,

    J'ai vu que des questions assez similaires à la mienne avaient été posées, mais elles ne répondaient pas exactement à ma question, et je ne suis pas assez douée pour comprendre comment utiliser ces éléments de réponse pour les adapter à mon problème...
    Je suis toute nouvelle sur Excel et dans l'univers magique qu'est VBA : une minorante de mon cursus universitaire a le code VBA au programme, je n'ai donc vu que des choses extrêmement simple, et je me suis imaginée pouvoir faire quelque chose de plus compliqué avec mes maigres connaissances ! Après moult recherches, j'appelle à l'aide :

    J'ai un tableau avec plusieurs évènements en colonne B, la date correspondant à l'évènement en C, et le nombre de jours restant avant l'évènement (ou le nombre de jours écoulés depuis) calculés grâce à une fonction VBA en D.
    Je voudrais "simplement" que si la date de l'évènement est dans 10 jours ou moins, ou que si la date est déjà passée, alors la police d'écriture de toute la ligne passe en rouge. Si la date est dans plus de 10 jours, tout reste en noir, et si possible, mais j'en demande peut-être trop, si la date de l'évènement est aujourd'hui, alors que la ligne passe en vert.

    J'ai tenté plusieurs méthodes différentes, mais à chaque fois soit toute la colonne changeait de couleur, soit seule la cellule dans laquelle je faisais "Entrée" changeait de couleur, etc.

    Bien évidemment, je voudrais pouvoir étendre cette fonction, et donc qu'à chaque fois elle ne concerne que la ligne où est la cellule qui calcule (je ne connaissais pas le système de "Range", et même en tentant une boucle for avec des i et des j au niveau des paramètres de la cellule, Excel a rigolé et m'a brusquement tout mis en rouge).

    Est-ce qu'il est possible d'intégrer ça à ma fonction qui me calcule mon nombre de jours restant/passés ?

    Je tente de vous mettre ce que j'ai déjà fait dans ma fonction (et qui donc est problématique à cause de mon Selection, que je ne sais pas par quoi remplacer) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    Function Nb_jours(D)
     
    If Date = D Then
        Nb_jours = "Aujourd'hui !"
        Selection.Font.ColorIndex = 10
    Else
        If Date - D > 0 Then
            Nb_jours = "Il y a " & Date - D & " jours"
            Selection.Font.ColorIndex = 3
        Else
            Nb_jours = "Dans " & -(Date - D) & " jours"
            If D - Date < 10 Then
                Selection.Font.ColorIndex = 3
            Else
                Selection.Font.ColorIndex = 1
            End If
        End If
    End If
     
    End Function
    Pour être sûre que ce soit clair, Date est la date du jour, qui se calcule automatiquement, et D est la date de l'évènement, que j'ai rentré dans la colonne C.

    Un grand merci par avance pour votre aide !
    Felinora

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par felinora Voir le message
    J'ai un tableau avec plusieurs évènements en colonne B, la date correspondant à l'évènement en C, et le nombre de jours restant avant l'évènement (ou le nombre de jours écoulés depuis) calculés grâce à une fonction VBA en D.
    Je ne comprends pas trop pourquoi tu as utilisé une fonction personnalisée en VBA pour faire une opération qui peut se résoudre avec deux SI() (s'il n'y avait pas de texte, ça pourrait même se limiter à une simple soustraction).
    En supposant que tes donnés commencent en ligne 2, il suffit de mettre en D2 la formule :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(C2=AUJOURDHUI())<1;"Aujourd'hui !";SI(C2<AUJOURDHUI();"Il y a "&(AUJOURDHUI()-C2)&" jours";"Dans "&(C2-AUJOURDHUI()-C2)&" jours"))
    Je voudrais "simplement" que si la date de l'évènement est dans 10 jours ou moins, ou que si la date est déjà passée, alors la police d'écriture de toute la ligne passe en rouge. Si la date est dans plus de 10 jours, tout reste en noir, et si possible, mais j'en demande peut-être trop, si la date de l'évènement est aujourd'hui, alors que la ligne passe en vert.
    Là encore, pas besoin de VBA. Les mises en forme conditionnelles font ça plus facilement (même si ça aurait été plus simple en mettant en colonne D une simple valeur plutôt que des textes).
    Tu sélectionnes toute ta colonne D > Ruban Accueil > Icone mise en forme conditionnelle > Nouvelle règle > Utiliser une formule...
    Dans le champs Formule, tu écris =C1>AUJOURDHUI()-10.
    Cliques sur le bouton Format > Onglet Police > Couleur = Rouge > Ok > Ok

    Et le tour est joué.

  3. #3
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 26
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2018
    Messages : 6
    Par défaut
    Merci pour la rapidité de ta réponse !

    Je voulais m'entraîner à utiliser des VBA, et en comprendre vraiment le mécanisme, c'est pour ça que je voulais passer par ça, et passer par des SI ou par ma fonction VBA (sans le problème des couleurs) ne change rien ;-)

    Pour la mise en forme conditionnelle, c'est déjà les réponses que j'avais vu, le problème est que ça ne met en rouge que la cellule où il y a le "Dans X jours", et en appliquant exactement ce que tu viens de me proposer, toute ma colonne se met en rouge...

    Encore merci pour avoir pris le temps de m'écrire une réponse aussi détaillée !

  4. #4
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    bonsoir
    as tu essayez avec la MFC (Mise en Forme Conditionnelle) ?? surtout que tes connaissances en VBA sont limitées !!

  5. #5
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 26
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2018
    Messages : 6
    Par défaut
    Oui, j'ai déjà tenté de plusieurs manières avec la mise en forme conditionnelle, sans succès. Et j'aimerais vraiment comprendre la solution pour l'inclure dans la VBA...

  6. #6
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Il te faut savoir qu’une fonction retourne une valeur ou un tableau de valeurs (dans ce cas, elle est dites matricielle) mais elle n’effectue pas d’action donc, pas de coloration de fonte ou tout autre truc dans le genre !
    Si tu veux exécuter des actions, il te faut utiliser des procédures (Sub) et si tu veux que cela se fasse automatiquement, tu as les procédures événementielles dans les modules feuilles et classeur !

  7. #7
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 26
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2018
    Messages : 6
    Par défaut
    Merci pour ton explication, mais pourtant ma fonction change bien ma couleur, dans la bonne ligne, actuellement ?, le problème étant qu'elle ne la change que dans la cellule où il y a la date de l'évènement, et uniquement lorsque je fais "Entrée" dans cette cellule, et non pas dans la cellule où il y a ma fonction (comme je l'aurais pensé), ni de manière automatique.

    Je peux parfaitement faire une Sub que j'appelle ensuite dans ma fonction si ça fonctionnera mieux, ce n'est qu'une question d'écriture, mais dans tous les cas, ma question est : Par quoi dois-je remplacer "Selection" pour que ce soit "Cellule où la formule est entrée + les deux cellules à sa gauche", et que tout se fasse bien ligne par ligne ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Changer couleur de fond selon 2 criteres
    Par benzot dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 14/12/2013, 00h44
  2. Changer la couleur de police en cliquant sur une cellule
    Par jacfld49 dans le forum Macros et VBA Excel
    Réponses: 22
    Dernier message: 30/01/2010, 16h40
  3. Changer couleur de police d'un Border
    Par ArnaudDev dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 12/05/2009, 10h59
  4. Changer la couleur de police selon critere
    Par guidzit dans le forum Access
    Réponses: 5
    Dernier message: 01/09/2006, 11h09
  5. Réponses: 3
    Dernier message: 21/06/2005, 08h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo