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 :

[VBA-E] Identifier date la + proche d'une date définie


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 20
    Par défaut [VBA-E] Identifier date la + proche d'une date définie
    Bonjour à tous,

    Voila, je cherche un code VBA qui identifie parmis un liste de date, celle qui se rapporche le plus de la fin du mois.
    voici comment se compose le fichier Excel :

    col A | col B
    BBBBBBB | 29/05/06
    BBBBBBB | 30/05/06
    BBBBBBB | 01/06/06
    PPPPPP1 | 26/05/06
    PPPPPP1 | 02/06/06
    xyzd253 | 22/05/06
    xyzd253 | 05/06/06
    AAAAAAA | 30/05/06
    AAAAAAA | 31/05/06
    AAAAAAA | 01/06/06

    Comme vous pouvez le voir, en colonne A il y a plusieurs "Codes" differents, je cherche donc à identifier la date pour chaque "Code" la plus proche (en nombre de jour ouvrés) de la date de fin de mois (ici :31/05/2006) et afficher en colonne C le resultat.
    Le jour le plus proche donc que ce soit avant ou apres le dernier jour de fin de mois.
    En gros si il y a le choix entre le 25/05/06 et le 02/06/06 et que la date butoir est :31/05/06, la macro choisira le 02/06/2006


    En language VBA je pensais faire :
    tant que (monCode) est identique
    alors fait le calcul "maDate"
    Sinon passe a la ligne suivante

    maDate serai une procedure VBA qui calcule le jour le plus proche de fin de mois
    (monCode) serai une variable qui stockerai le code actuel.
    genre: monCode = Activecell.text

    A la fin j'aurai un truc comme ça :

    col A | col B | col C
    BBBBBBB | 29/05/06 |
    BBBBBBB | 30/05/06 | correct
    BBBBBBB | 01/06/06 |
    PPPPPP1 | 26/05/06 |
    PPPPPP1 | 02/06/06 | correct
    xyzd253 | 22/05/06 |
    xyzd253 | 05/06/06 | correct
    AAAAAAA | 30/05/06 |
    AAAAAAA | 31/05/06 | correct
    AAAAAAA | 01/06/06 |

    Vuus pensez que c'est possible ?



    Merci a tous ceux qui pourront m'aider, et n'hesitez pas à me demander si je n'ai pas été assez explicite.

  2. #2
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    Je n'y connais pas grand chose en VBA moderne, mais il me semble qu'il y a là une question liminaire, que tu "sous-tends" sans vraiment en parler ... :
    la plus proche (en nombre de jour ouvrés
    Qu'as-tu déjà mis en place, avant donc d'aller plus loin, pour distinguer un jour ouvré d'un jour qui ne l'est pas ?
    Si encore rien : je suggère que tu t'intéresses à ce TOUT PREMIER ET ESSENTIEL PROBLEME et que ta 1ère question porte sur ce seul point avant de passer au reste, non ?

  3. #3
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    et en restant sous Excel et en rajoutant une 3° colonne (C) avec une formule du genre
    à recopier..vers le bas ... puis placer en E1 la date du 31/05/2006
    modifier aussi le format d'affichage de la colonne C.. en Nombre..

  4. #4
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    Ma question précédente reste d'actualité !
    Qu'as-tu mis en place dans ce but ? Avant même d'aller au reste ... ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 20
    Par défaut
    Merci de vos réponses (quelle rapidité )

    jmfmarques : Effectivement tu n'a pas tort, il serai deja bien d'itendifier les jours ouvrés.
    En faite j'ai absolment rien construit jusqu'a présent. J'ai juste la finalié en tête, il faudrait certainement passer par une serie de formules.
    Mais lesquelles...

    bbil, ca peut effectivement etre une bonne approche. Il resterai a identifier le nombre resultant (col C) le plus proche de 0.
    Il me faudrait maintenant dire a la macro de faire ça pour chaque groupe de code independamment.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 20
    Par défaut
    jmfmarques :
    J'ai mon projet total ecrit sur un book.
    J'entends par projet total : l'idée, les besoins et obligations, la finalité
    Le project étant complet, je passe au coté purement technique, et pour le moment je n'ai encore rien fait de ce coté, j'essaye avant tout d'obtenir de l'aide sur differente facon d'atteindre le but recherché.
    Je suis actuellement pas en mesure de faire ce genre de code VBA sans un peu d'aide

  7. #7
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    jmfmarques : Effectivement tu n'a pas tort, il serai deja bien d'itendifier les jours ouvrés.
    En faite j'ai absolment rien construit jusqu'a présent. J'ai juste la finalié en tête, il faudrait certainement passer par une serie de formules.
    Mais lesquelles...
    Il est pourtant évident que tu ne peux aller plus loin sans ce premier pas, pour le moins ESSENTIEL !
    Avoir les choses "en tête" ne suffit pas ! Prends une feuiile de papier et "construis" ton mécanisme de pensée, s'il te plait !
    Un indice : une liste de jours ouvrés est bien longue ! Celle des jours non ouvrés est beaucoup plus courte !
    Je te suggère de clore ce sujet et d'en ouvrir un autre, particulièrement adapté:
    "comment savoir si un jour est ouvré ou non, en fonction de la législation locale, d'une part, de l'année concernée d'autre part... et enfin des règlements internes de l'entreprise ?"

  8. #8
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    Ou alors : modifie le texte de ton sujet et dis "la plus proche d'une date déjà connue" !

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 20
    Par défaut
    Je te rassure j'ai tout sur papier.
    Je parlais de la finalité au niveau des jours.
    Penses-tu qu'il soit préférable d'ouvrir un nouveau file ?
    parceque des petits problemes je risque d'en avoir pas mal.

    Par exemple si j'ai le chois entre ces dates :
    30/05/06 et 01/06/2006
    Nombre de jours ouvrés par rapport au 31/05/2006 : identique
    Comment faire pour que préférence soit donnée au 30/05/06 ?

    Tu vois, ce genre de petites exeptions.
    Pour les dates, j'avais pensais a un system de calendrier dans Excel (ou répertorier les jours non ouvrée que sont les samedi, dimanche et jours fériés)

    Reste ensuite à faire le code pour exploiter le calendrier. Et le.. je bloque total



    titre du topic modifié

  10. #10
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    Attends !
    Tu as d'une part l'algo (valable pour tout langage, VB ou autre...)
    et d'autre part le langage de transposition (ici VB)...
    quel est ton algo, s'il te plait (rien à voir avec VB)

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

Discussions similaires

  1. Lier une date d'un calendrier à une date de congrès
    Par cedric/copy dans le forum ASP
    Réponses: 1
    Dernier message: 02/10/2008, 16h11
  2. Réponses: 4
    Dernier message: 26/08/2008, 17h11
  3. Gérer l'ensemble des dates entre une date de début et une date de fin
    Par shaun_the_sheep dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 25/04/2008, 11h13
  4. Réponses: 7
    Dernier message: 22/11/2006, 09h14
  5. Réponses: 1
    Dernier message: 18/08/2006, 10h01

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