Programme excel

Résolu
Bonjour,

Je voudrais organiser mon planning qui est sous forme d'un tableau.
Pour cela je souhaiterai développer un petit programme qui permet de comparer une date avec celle d'aujourd'hui.

Par ex :
donnée date : 01/08/08
date d'aujourd'hui : 28/07/08.

Avec le programme comparaison, j'aimerai sortir un résultat "critique" car moins d'une semaine d'intervalle.
Ainsi de suite avec des écarts de plus en plus grand et donc une criticité de moins en moins élevée.
Est-il possible de faire apparaitre un code couleur pour le résultat : écart faible : rouge = moins d'une semaine, écart moyen : orange = entre une semaine et deux semaines, etc...

J'espere que vous pourrez m'aider.

LOUFACT
Configuration: Windows XP
Internet Explorer 6.0

18 réponses

  1. Contributeur
    MERCI DE RESTER SUR LE FORUM, MAJAX, TES PROPOSITIONS PEUVENT INTERESSER TOUT LE MONDE, SINON LE PRINCIPE DES FORUMS NE SERT A RIEN...

    Excuse ma colère, mais il n'y a plus guère d'espaces de solidarité gratuite; il serait dommage de les détruire...

    Michel
    2
    1. Ma propale etait plus pour des raisons de facilité car passer un exemple de fichier par le forum .....
      0
  2. Contributeur
    Bonjour,

    sans faire de programmation, les mises en formes conditionnelles t'offre la possibilité de 3 présentations de cellules (polices, couleurs...
    format-mise en forme conditionnelle (MFC) si tu ne connaissais pas

    Sinon on peut le faire par macro avec N formats en nous précisant les seuils et la zone d'action ....

    Michel
    0
    1. Il y a 10000 facons de faire ca
      un mail privé et je t'envoie un exemple
      j'ai par exemple

      dates
      de 01/06/08

      zzzzz si zzzz=aujourd'hui-30j (la case passe rouge)
      yyyy si yyyy=aujourd'hui-15j (la case passe en orange)
      xxxx si xxxx=aujourd'hui (la case passe en vert)

      a 12/12/08

      on peut aussi faire des routines en VB pour tester les données , si ce que voulez faire n'est pas trop simpliste et vous donne mal a la tete je suis a votre disposition
      0
      1. Contributeur
        tu peux passer par www.cjoint.com pour mettre des pièces jointes ( maxi 500 Ko je crois mais on peut zipper)

        mais il estl plus prudent maintenant d'attendre une réaction de loufact

        Michel
        0
        1. Merci beaucoup pour votre réponse, cela fait toujours plaisir de voir que l'entraide existe bel et bien.

          Je vous en serai très reconnaissant si vous pouviez m'envoyer un exemple.
          Le site www.cjoint.com me parait etre une bonne idée.

          Mon tableau excel est une succession de dates dans une colonne.

          Merci beaucoup
          0
          1. Un programme en VBA pourrait etre tres intéressant, cel ame permettrait en plus de découvrir.

            Loufact.
            0
            1. Autre message, désolé.

              Mon planning se compose en réalité de 2 colonnes de dates :
              -1ère colonne : date décidée
              - 2ème colonne : date réelle

              En fonction des dates décidées, je dois m'organiser : prévoir des actions telles que "organiser" et "prévoir".
              En fonctiond des dates rélles, je dois réaliser une action "réceptionner".

              J'aimerai créer un programme en VBA qui permette de prévoir des actions en fonction des dates, un support à la décision.

              J'espère que je suis assez clair.

              Je peux vous envoyer un ex de ce tableau, donnez moi votre mail.

              Loufact.
              0
              1. Bonjour,

                J'aimerai développer un programme sous VBA excel qui permettrait de comparer des cellules et un mot donné, si ce mot n'est pas trouvé dans la cellule alors la ligne est supprimée.

                J'ai déjà fait ça, mais je bloque :

                Sub g()

                Dim mot1 As String = "POS-TRADE"

                For i = 200 To 1 Step -1
                If StrComp((Cells(i, 3)), mot1)==1
                Then Rows(i).Delete
                i = 200
                Next

                End Sub
                0
                1. Contributeur
                  bonjour,
                  le If/Then en VBA c'est...
                      If  Cells(i, 3) = 1 then   Rows(i).Delete 

                  Si c'est en Numérique sinon c'est ="1"
                  A+
                  0
                  1. Apparemment, il n'aime toujours pas :

                    la déclaration : Dim mot1 As String = "POS-TRADE" me renvoie une erreur.
                    Votre changement fonctionne, je n'ai plus d'erreur.

                    J'ai maintenant le programme suivant :

                    Sub g()

                    Dim mot1 As String = "POS-TRADE"

                    For i = 200 To 1 Step -1
                    If StrComp((Cells(i, 3)), mot1)=1 Then Rows(i).Delete
                    i = 200
                    Next

                    End Sub

                    cela ne fonctionne toujours pas, qu'en pensez-vous ?
                    0
                    1. Je souhaite juste supprimer les lignes d'un tableau lorsque le mot POS-TRADE apparait dans la cellule correspondant à la ligne.

                      Merci de m'aider
                      0
                      1. Contributeur
                        ca fonctionne pas
                        Dim mot1 As String = "POS-TRADE" 

                        faut faire

                        Dim mot1 As String
                        mot1 = "POS-TRADE"
                        A+
                        0
                        1. En fait j'ai simplifié mon programme, j'ai lu que l'on pouvait comparer deux chaines de caractères directement, mon programme est le suivant :

                          Sub f()
                          Dim temp As Boolean
                          For i = 10000 To 3 Step -1
                          If Cells(i, 3) <> "POS-TRADE" Then
                          Rows(i).Delete
                          i = 10000
                          End If
                          Next
                          End Sub

                          J'ai mis 10000, car mon le nombre de lignes varie de jour en jour, j'ai donc pris une grosse marge.

                          Malheureusement ça plante et bien en plus, il doit y avoir un problème dans l'itération, il doit réaliser une boucle infinie à un moment.

                          Une petite aide ?

                          Si vous pouviez essayer sur un ex, voir de quoi je parle.

                          En tout cas merci bcp.
                          0
                          1. Contributeur
                            Ca plante parce que tu tourne en rond en supprimant une ligne qui revient aussi sec.
                            Essaye,

                            Sub SuppRow()
                            Dim i As Long
                                Application.ScreenUpdating = False
                                For i = Range("C65536").End(xlUp).Row To 3 Step -1
                                    If Cells(i, 3) <> "POS-TRADE" Then
                                        Rows(i).Delete
                                    End If
                                    DoEvents
                                Next
                                Application.ScreenUpdating = True
                            End Sub


                            A+
                            0
                            1. Merci beaucoup.
                              Vu que je n'ai pas envie e mourir bete, peux-tu m'expliquer ce qui plantait, ainsi que les deux lignes suivantes de codes :

                              Application.ScreenUpdating = False

                              For i = Range("C65536").End(xlUp).Row To 3 Step -1

                              Encore merci.

                              Loufact
                              0
                              1. Contributeur
                                Ce qui plantait c'était la réinitialisation de >> i = 10000, ce qui fait que la boucle n'avais jamais de fin.

                                Application.ScreenUpdating = False : ne pas actualiser l'affichage des modifications pour accélérer la macro,

                                For i = Range("C65536").End(xlUp).Row To 3 Step -1 : renseigne la dernière ligne non vide de la colonne , ici C mais peut-être une autre colonne.
                                A+
                                0
                                1. Un grand MERCI, ma macro fonctionne à merveille.

                                  Loufact
                                  0