Mise en forme conditionnelle

Claughis Messages postés 77 Date d'inscription   Statut Membre Dernière intervention   -  
 Sangor -
Bonjour à tous

Sous Excel, j'ai dans la cellule E60 une date (exp: 25-juin-05); et de E48 à E57 des valeurs.
Je veux faire une mise en forme conditionnelle de tel que si la valeur de E60 est différent de AUJOURDUI(), alors les cellules E48:E57 auront pour couleur de police "le blanc". Le blanc en faite parce que on ne dois pas pouvoir les lire (c'est en faite un masquage des valeurs).
A la place d' écrire AUJOURDHUI(), j'ai une cellule (B4) dans ma feuille qui contient la date du jour.

merci,

claughis

16 réponses

  1. Armojax Messages postés 1863 Date d'inscription   Statut Membre Dernière intervention   1 529
     
    Bonjour Claughis,

    A mon avis, la mise en forme conditionnelle ne va pas résoudre ton problème. Elle fonctionne à partir de critères de la cellule elle-même, mais pas en fonction de propriétés d'autres cellules.
    Par contre, une petite macro VBA peut te faire ça.
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
      If Range("E60").Value = Range("B4").Value Then
        Range("E48:E57").Font.ColorIndex = 2
      Else
        Range("E48:E57").Font.ColorIndex = 0
      End If
    End Sub
    à rajouter dans le code VBA de la feuille concernée.
    0
  2. Claughis Messages postés 77 Date d'inscription   Statut Membre Dernière intervention  
     
    salut Armojax,

    Dans le même ordre d'idées, comment faire du code VBA pour obtenir une macro qui RECHERCHE la date du jour moins 2 (c'est-à-dire "Avant-hier"), puis remplace cette dernière par celle du jour moins 1 (donc "hier).
    J'entends par jour, AUJOURDHUI. {AUJOURDUI()-2= avant-hier et AUJOURDUI()-1= hier}

    merci d'avance

    claughis
    0
    1. Armojax Messages postés 1863 Date d'inscription   Statut Membre Dernière intervention   1 529
       
      Re,

      En VBA, l'équivalent de AUJOURDHUI() est : Date.
      Date - 1 donne la veille, etc.

      Si tu veux remplacer dans une plage ("A1:E10" dans mon exemple) l'avant-veille par la veille, tu peux faire un truc de ce genre. Il y a d'autres solutions...
      Sub OnChange()
      
        Dim I As Long
        Dim Cellule As Range
        For Each Cellule In Range("A1:E10")
          If Cellule.Value = Date - 2 Then
            Cellule.Value = Date - 1
          End If
        Next
          
      End Sub
      0
  3. Claughis Messages postés 77 Date d'inscription   Statut Membre Dernière intervention  
     
    salut,

    En fait quand je parlais de date, j'avais oublié de signaler que ces dates se presentent sous la forme MR050626.
    Alors ce que je fais manuellement chaque matin et que je veux voir se faire automatiquement, c'est que je lance la fenêtre "remplacer"( ctrl+H), puis je saisi 050626 dans "Remplacer"(ce qui correspond à Date-2), et 050627 dans "Remplacer par:" (ce qui correspond à Date-1), et je click en suite sur "Remplacer tout".
    Excel recherche toutes les dates 050626 et actualise les données par rapport à la date 050627.

    Normalement les valeurs de chacune de mes cellules, sont dependantes d'un autre fichier, et je me base sur les dates pour extraire ces valeurs.

    merci, et désolé du message trop long.

    claughis
    0
    1. Armojax Messages postés 1863 Date d'inscription   Statut Membre Dernière intervention   1 529
       
      OK.

      Donc, tu peux mettre en place cette macro, dans le code du classeur (ThisWorkbook), qui s'exécutera automatiquement à l'ouverture de ton classeur.
      Remplace Feuil1 par la feuille concernée, et essaie si ça te convient.
      Private Sub Workbook_Open()
      
        Dim AvVeil As String
        Dim Veille As String
        
        AvVeil = Format(Year(Date - 2) - 2000, "00") _
               & Format(Month(Date - 2), "00") _
               & Format(Day(Date - 2), "00")
               
        Veille = Format(Year(Date - 1) - 2000, "00") _
               & Format(Month(Date - 1), "00") _
               & Format(Day(Date - 1), "00")
          
        ThisWorkbook.Sheets("Feuil1").Cells.Replace What:=AvVeil, _
                                                    Replacement:=Veille, _
                                                    LookAt:=xlPart
              
      End Sub
      0
  4. Claughis Messages postés 77 Date d'inscription   Statut Membre Dernière intervention  
     
    Re-salut Armojax,

    tu es un géni, merci encore. je m'apperçois à présent que lorsque j'ouvre mon fichier, les données sont à jour pour le MR.
    J'ai procédé par étape, la dernière question sinon peut-être, c'est que d'autres cellules de ma feuille se mettent elles aussi à jour en allant non pas chercher des MRaammjj, mais plutôt des DR 05-06-26 (date-2). je procède de la même façon que pour les MR (Morning Report) pour mettre à jour les DR (Daily Report).
    {je travaille dans la Production}

    Peut-on jumeler les deux méthodes? comment faire stp?

    merci

    claughis
    0
    1. Armojax Messages postés 1863 Date d'inscription   Statut Membre Dernière intervention   1 529
       
      No PB.
      Private Sub Workbook_Open()
      
        Dim AvVeil As String
        Dim Veille As String
        
        AvVeil = Format(Year(Date - 2) - 2000, "00") _
               & Format(Month(Date - 2), "00") _
               & Format(Day(Date - 2), "00")
               
        Veille = Format(Year(Date - 1) - 2000, "00") _
               & Format(Month(Date - 1), "00") _
               & Format(Day(Date - 1), "00")
          
        ThisWorkbook.Sheets("Feuil1").Cells.Replace What:=AvVeil, _
                                                    Replacement:=Veille, _
                                                    LookAt:=xlPart
        
        AvVeil = Format(Year(Date - 2) - 2000, "00") & "-" _
               & Format(Month(Date - 2), "00") & "-" _
               & Format(Day(Date - 2), "00")
               
        Veille = Format(Year(Date - 1) - 2000, "00") & "-" _
               & Format(Month(Date - 1), "00") & "-" _
               & Format(Day(Date - 1), "00")
          
        ThisWorkbook.Sheets("Feuil1").Cells.Replace What:=AvVeil, _
                                                    Replacement:=Veille, _
                                                    LookAt:=xlPart
              
      End Sub
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Claughis Messages postés 77 Date d'inscription   Statut Membre Dernière intervention  
     
    salut une fois de plus,

    Rien à dire, tu viens de résoudre mes soucis, tu es un as, si tu étais à mes côtés, je t'aurai offert une tournée. merci.
    Un dicton de chez moi dit que plus tu m'endonnes, et plus j'en demande; voilà pourquoi je me permets de te soumettre un autre pb: dans ma même feuille, j'ai lcellules suivantes B48:B57, C48:C57, D48:D57, E48:E57 et F48:F57, qui elles aussi se mettent à jour par rapport aux MR. Mais Une rangée de cellule à la fois (exp: C48:C57, cas d'aujourd'hui) est remplie dans le fichier source (MRaammjj), tandis que les autres cellules ne le sont pas. Du coup, les autres doivent rester vides. En fait ce que je veux dans ma feuille , c'est que ces valeurs soient existantes, mais que la couleur de leurs polices soit le "blanc" (données présentes mais invisibles).

    merci,

    claughis
    0
    1. Armojax Messages postés 1863 Date d'inscription   Statut Membre Dernière intervention   1 529
       
      Petite question : je suppose que tes colonnes B, C, D, E, F correspondent à Lundi, Mardi, etc. jusqu'à vendredi. Je me trompe ?

      Si c'est le cas, on peut en déduire, selon la date, quelle est la colonne à laisser apparente, et masquer les autres.

      C'est ça ?
      0
  7. Claughis Messages postés 77 Date d'inscription   Statut Membre Dernière intervention  
     
    désolé pour le retard!!!

    Non c'est pas du tout ça;
    mais c'est qui est sûre, ce que aujourd'hui C48:C57 a été remplie, demain le 29 se sera D48:D57, le 30 se sera E48:E57, le 1er juin se sera B48:B57, le 02 sesera les C, le 3 les D, le 4 les E, le 5 les B à nouveau et ainsi de suite.
    Pour les F se sera dans un proche avenir.

    d'autres details?
    0
    1. Armojax Messages postés 1863 Date d'inscription   Statut Membre Dernière intervention   1 529
       
      Bon, OK. Alors...

      - soit on a un critère calculable par programme, et on automatise complètement le masquage des plages,
      - soit on a un minimum d'intervention manuelle : cliquer dans la colonne qui doit rester apparente, par exemple.

      C'est au choix.
      0
  8. Claughis Messages postés 77 Date d'inscription   Statut Membre Dernière intervention  
     
    j'opte pour un critère calculable par programme

    merci
    0
    1. Armojax Messages postés 1863 Date d'inscription   Statut Membre Dernière intervention   1 529
       
      Bon, mais alors il faut que tu m'expliques en fonction de quoi on laisse apparentes les infos de telle colonne plutôt que telle autre.
      Quelle est la règle de changement ?
      0
  9. Claughis Messages postés 77 Date d'inscription   Statut Membre Dernière intervention  
     
    Bonjour Armojax,

    Bon ok, nous avons 4 puits en production (un 5ème verra le jour d'ici qlq mois). Chaque jour que Dieu fait, un puits et un seul passe en test. les mecs sur site remplissent le MR renseignent donc les valeurs testées de ce puits. Dans le MR (Morning Report) qui me parvient, j'ai les données du puits mis en test l'aveil. Je crée à ce moment un lien de récupération de ces données dans mon DR (Daily Report). Manuellement je blanchie les polices des colonnes des puits dont les valeurs n'exitent pas dans le MR.
    Voilà pourquoi je voudrais que Excel face une sorte de comparaison de tel sorte que si les puits 1,3,5 (correspondant aux colonnes B48:B57, C48:C57, E48:E57) n'ont pas de valeurs fournies dans le MR, automatiquent il masque les données de ces puits, mais n'affiche uniquement que les données du puits dont les valeurs ont été fournies (dans le MR).
    Aujourd'hui par exemple c'est le puits 4 qui se fera assigner des valeurs (puisqu'il était en test hier); d'où le remplissage de la colonne D48:D57.
    ça c'est une 1ère approche du pb, 2èmement puisque le puits en test dont les valeurs sont fournies, sont datées du jour (aujourd'hui) et les autres ont des date différentes d'uajourd'hui, voilà pourquoi je voulais faire en sorte que Excel compare les dates, si une est différente d'aujourd'hui, alors les polices de la colonne concernée seront blanches. mais comme il y aura forcement 3 dates differentes, une seule restera avec la couleur de police automatique (noir). voir fig.

    B C D E
    22,0 22,0 22,0 22,0
    0 125 125 0
    0 60 0 0
    0 5 383 7 118 0
    0 665 0 0
    0,00 11,00 0,00 19,00
    0 408 582 0
    0 76 82 0
    60 60 60 60
    60 136 142 60

    2 693 5 383 7 118 3 105
    26-juin-05 27-juin-05 24-juin-05 25-juin-05
    0
    1. Armojax Messages postés 1863 Date d'inscription   Statut Membre Dernière intervention   1 529
       
      Hello Claughis,

      Regarde si la macro ci-dessous fait ce que tu veux. A chaque exécution, elle décale d'une colonne la plage apparente, en bouclant sur les colonnes B, C, D, E, B, C, etc.
      Quand la colonne F entrera en service, il suffira de remplacer :
      If I = 3 Then I = -1
      par
      If I = 4 Then I = -1
      pour tourner sur B, C, D, E, F, B...

      On pourrait automatiser complètement en lançant cette macro à l'ouverture du fichier, à condition que ton classeur ne soit ouvert qu'une seule fois par jour. Dangereux.
      Le mieux me semble plutôt de placer cette macro dans un module normal, et de la lancer à la main, soit avec un bouton, soit par une touche...
      Sub Décaler()
              
        Dim I As Integer
        
        ' Détection de la colonne de la veille
        For I = 0 To 4
          If Sheets("Feuil1").Range("B48:B57").Offset(0, I).Font.ColorIndex = xlColorIndexAutomatic Then
            Exit For
            End If
        Next I
        
        ' Toutes les colonnes invisibles
        Sheets("Feuil1").Range("B48:F57").Font.ColorIndex = 2
        
        ' Seule la colonne du jour reste visible
        If I = 3 Then I = -1
        Sheets("Feuil1").Range("B47:B58").Offset(0, I + 1).Font.ColorIndex = xlColorIndexAutomatic
         
      End Sub
      0
      1. Claughis Messages postés 77 Date d'inscription   Statut Membre Dernière intervention   > Armojax Messages postés 1863 Date d'inscription   Statut Membre Dernière intervention  
         
        Bonsoir Armojax,

        Désolé une fois de plus pour le retard. En effet ton code de finition a marché, je compreds vraiment que tu es un as en la matière.
        A présent j'ai mon programme qui fonctionne comme je le souhaitais. les mise à jour sont faites automatiquement.

        je te remercie mille fois expert.

        claughis

        merci encore
        0
      2. Armojax Messages postés 1863 Date d'inscription   Statut Membre Dernière intervention   1 529 > Claughis Messages postés 77 Date d'inscription   Statut Membre Dernière intervention  
         
        Allez, une bonne Chimay par là-dessus !
        Et bonnes vacances pour bientôt peut-être.
        Ajx.
        0
  10. Claughis Messages postés 77 Date d'inscription   Statut Membre Dernière intervention  
     
    Bonjour Armojax,

    Qui a parlé de vacances, je suis encore là.
    Tout marche, mais ce matin en ouvrant mon fichier DR, Excel a reclammé le fichier MR050629; bizarre, mais je lui ai quand même indiqué le chemin, la mise à jour c'est bien faite (j'ai une comparaison avec le calcul manuel). J'ai enregistré le fchier et fermé. A la réouverture, il a à nouveau reclammer le fichier MR050629; même opération, mais à la prochaine ouverture du fichier même scenario. J'ai desactivé la case à cocher "confirmation de mise à jour automatique des liens" dans le menu outils/options/modification.

    Ai-je oublié un details?

    merci,

    claughis

    Désolé pour la plainte, j'ai résolu mon pb. Dans le compagnon office qui s'en est enfin apperçu, il fallait aller dans le menu Edition/liaison et modifier définitivement la/les liaison(s). Dans mon cas, effectivement j'avais une mauvaise liaison, que j'ai donc dû remplacer par la bonne. En fermant et en réouvrant mon fichier DR, tout s'est passé comme sur des roulettes.

    merci encore Armojax, l'Expert!!!

    claughis
    0
  11. Claughis Messages postés 77 Date d'inscription   Statut Membre Dernière intervention  
     
    Bonjour à tous,

    Sous Outlook express, il existe un moyen de gérer les identités des utilisateurs, en y introduisant par exemple un mot de passe pour l'ouverture d'un profil donné. Est ce qu'il est possible sous Microsoft outlook 2000 de reclammer un mot de passe à l'ouverture de ce dernier? Et comment placer les contatcs sous la liste des dossiers?

    merci,

    Claughis
    0
  12. Claughis Messages postés 77 Date d'inscription   Statut Membre Dernière intervention  
     
    bonjour Armojax,

    Toujours dans le souci d'améliorer mon travail, j'ai un autre fichier d'où à partir de la feuil "suivi NSV", je renvois une information dans une celle fixe H19, feuil "Infos".
    Mon pb est que le resultat de la feuil "suivi NSV" change de cellule chaque jour (cellule suivante directement, exp: hier c'était la cellule F186, aujourd'hui c'est F187, demain se sera F188, après demain F189...). je voudrais avoir dans ma cellule H19 de la feuil "Info" le resultat de la cellule du jour (la cellule F du jour).

    je précise qu'en B je loge les dates du jour -1. Exemple pour le cas d'aujourd'hui j'ai B187 (03/07/2005 ,date d'hier), et F187. demain j'aurai B188 (04/07/2005) et F188. Si ce détail peut-être util!

    merci d'avance.

    claughis
    0
  13. Armojax Messages postés 1863 Date d'inscription   Statut Membre Dernière intervention   1 529
     
    Bonjour Claughis,

    Si je comprends bien, tu dois avois deux lignes d'entête dans ta feuille "suivi NSV".

    Trouve, dans ta feuille Info, un endroit discret pour 4 cellules de travail.
    Pour l'exemple ci-dessous, je dis que ce sont les cellules X3 à X6. Il faudra que tu adaptes.

    Définis X3 et X4 au format date, et X5 au format nombre avec 0 (zéro) décimale.
    Dans X3, tu mets : =AUJOURDHUI()
    Dans X4, tu mets : 31/12/2004
    Dans X5, tu mets : X3 – X4+2
    Tu dois obtenir dans X5 le numéro de ligne du jour dans ta colonne F de la feuille suivi NSF.
    Dans X6, écris : ="'suivi NSV'!F" & X5

    Dans la cellule H19 de ta feuille Info, tu mets :
    =INDIRECT(X6)

    Normalement, ça doit marcher.
    0
  14. Claughis Messages postés 77 Date d'inscription   Statut Membre Dernière intervention  
     
    A toi Armojax, l'expert

    Enfin que dire d'autre, je n'ai plus de mots pour te qualifier!!! bref, ça marché...

    merci tout simplement et encore.

    Claughis
    0
  15. Claughis Messages postés 77 Date d'inscription   Statut Membre Dernière intervention  
     
    Bonjour Expert,

    j'ai ouvert tous mes fichiers ce matin, et tout est impécable; c'est comme si quelcun était venu travailler pour moi.
    Merci encore.

    salut

    Claughis
    0
    1. Armojax Messages postés 1863 Date d'inscription   Statut Membre Dernière intervention   1 529
       
      Allez, à ta santé !
      0
      1. Claughis Messages postés 77 Date d'inscription   Statut Membre Dernière intervention   > Armojax Messages postés 1863 Date d'inscription   Statut Membre Dernière intervention  
         
        bonjour champion

        tu avais écrit:
        "Le mieux me semble plutôt de placer cette macro dans un module normal, et de
        la lancer à la main, soit avec un bouton, soit par une touche..."

        ...soit par une touche. comment le faire?

        En fait lorsque j'envois mon fichier aux partenaires, le bouton que j'ai
        placé pour faire le décalage est également vu par ces derniers; or il me faudrait éviter cela.

        merci pour ton aide (j'étais en vac)
        0
  16. Claughis Messages postés 77 Date d'inscription   Statut Membre Dernière intervention  
     
    bonjour à tous,

    svp, je recherche un logiciel gratuit pour visionner des films de mon ordinateur portable équipé d'une sortie tv, vers mon téléviseur.

    merci
    0
  17. Sangor
     
    Bonjour,

    Dans Excel, j'ai crée une mise en forme conditionnelle telle que :
    - Si la valeur de la cellule H1 est égale à "ok" alors la police de D1 et H1 devient bleu
    - Si la valeur de la cellule H1 est égale à "ko" alors la police de D1 et H1 devient rouge

    Rien de bien compliqué pour l'instant.

    Voici mon problème ! 800 lignes sont concernées par cette mise en forme conditionnelle mais un incrément doit être effectué à chaque fois. Je m'explique:
    - Si la valeur de la cellule H2 est égale à "ok" alors la police de D2 et H2 devient bleu
    - Si la valeur de la cellule H2 est égale à "ko" alors la police de D2 et H2 devient rouge
    -
    - Si la valeur de la cellule H3 est égale à "ok" alors la police de D3 et H3 devient bleu
    - Si la valeur de la cellule H3 est égale à "ko" alors la police de D3 et H3 devient rouge
    -
    -
    Je souhaiterais "automatiser" (macro ?) cette procédure car 800 lignes c'est long, très long! Une âme généreuse pourrait elle me guider / aider dans cette démarche. Par avance, merci

    Pour info, je suis sacrée bille en macro VB.
    0