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 :

contrôler si 2 dates sont identiques [XL-365]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Chargée de projet
    Inscrit en
    Avril 2020
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Chargée de projet

    Informations forums :
    Inscription : Avril 2020
    Messages : 12
    Par défaut contrôler si 2 dates sont identiques
    Bonjour à tous,

    J'ai un tableau avec en première colonne des valeurs date - heures qui sont formatées en heures (afin d'avoir un graphique avec des heures en abscisses).
    J'aimerai avoir, dans une autre colonnes, des valeurs qui me permettraient de faire une aire sur mon graphique pour marquer le changement de jour.


    voici un petit exemple du tableau :
    date-heure (formatée pour ne voir que l'heure) variable valeur a renvoyer
    23:41 800 0
    23:51 700 0
    00:01 600 1200
    00:11 700 1200

    je voudrais trouver la formule qui me permettent de traduire l’équivalent de SI(TEXTE(A2;"jjmmaaa")=TEXTE(A1;"jjmmaaaa");0;1200) en VBA
    en sachant que évidemment mes cellules vont defiler au sein d'une boucle, et que "A2" et "A1" seront remplacé par des offset. mais c'est vraiment sur la formule de texte que bloque.

    J'ai testé des trucs du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    For Each He In Range(Cells(5, 1), Cells(Cells(2, 6).Value + 3, 1))
    If He.Offset(-1, 0).NumberFormat = "mm/dd/yyyy" = He.NumberFormat = "mm/dd/yyyy" Then
     
    'Cells(Cells(2, 6).Value + 3, 1) correspond au nombre de valeurs que je dois prendre
    mais ça ne fonctionne pas... j'ai aussi essayer avec DateValue(Format(Date, "dd/mm/yyyy")), mais je n'y arrive pas.

    Quelqu'un a t il une idée pour m'aider?
    un grand merci!
    Ly

  2. #2
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 344
    Par défaut
    Hello,

    Ce sont des dates ou des heures que tu dois comparer ? Car dans ton tableau, tu met des heures, mais dans ta formule, tu les met au format date ??

    Par ailleurs, une date ou une heure sont un nombre, donc tu n'as pas besoin de les reformater en texte pour les comparer.
    En effet, pour une date, le nombre est supérieur à 0, et tout ce qui est derrière la virgule sont les heures.

    De cette façon, si tu prend la date suivante : 03/01/2020 12h45
    Si tu l'écris au format nombre, ça te donnera : 43833,53125

    => La partie rouge correspond à la date, et la partie bleue correspond aux heures.

    Donc, pour répondre à ton problème et suivant ce que tu souhaites comparer, tu prend soit la partie décimale, soit l'autre partie, avec un simple "="

    PS : par ailleurs, dans ta formule :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If He.Offset(-1, 0).NumberFormat = "mm/dd/yyyy" = He.NumberFormat = "mm/dd/yyyy" Then
    Il manque pas un AND ? il y a un égal en trop non ?
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  3. #3
    Membre averti
    Femme Profil pro
    Chargée de projet
    Inscrit en
    Avril 2020
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Chargée de projet

    Informations forums :
    Inscription : Avril 2020
    Messages : 12
    Par défaut
    Bonjour,

    C’était bien les heures que je devais comparer, car je fais mes graph avec mes heures en abscisses, mais je voulais créer une zone sur mon graph qui me permettait de visualiser mes différents jours facilement (une aire sur le graph et le tour est joué, mais il fallait pouvoir comparer les dates de chaque point, car ce sont des mesures qui varient beaucoup, d'ou le fait d'automatiser tous les graphs)

    et ben c’était si simple que ça!! juste comprendre a quoi correspondent les nombres renvoyés!
    merci beaucoup beaucoup beaucoup!
    Mes graphs sont parfaits maintenant!

    Très bonne soirée à toi!!

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

Discussions similaires

  1. Contrôler que deux dates sont consécutives
    Par Dr_GreenThumb dans le forum Collection et Stream
    Réponses: 10
    Dernier message: 07/12/2010, 10h41
  2. Mes dates sont inversées dans word
    Par Tibao27 dans le forum Access
    Réponses: 5
    Dernier message: 15/02/2006, 09h04
  3. Tester si deux dates sont dans la même semaine ?
    Par boulzor dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 13/02/2006, 19h15
  4. fusionner 2 tables dont les champs sont identiques mais.....
    Par NoobX dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 27/10/2005, 16h12
  5. Réponses: 4
    Dernier message: 03/09/2005, 11h30

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