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 :

Probleme de comparaison de date


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Probleme de comparaison de date
    Bonjour,
    Je suis actuellement en train de réaliser une macro pour le boulot et là, je suis bloqué.
    Alors, le principe de la macro est la suivante :

    - un onglet sur lequel un tableau récapitule des defauts par date ,par ligne de production, par quantité (un defaut = une ligne).

    - dans un autre onglet, j'ai crée un userform pour demander une periode precise (avec 2 calendar) pour rechercher la quantité exacte de defaut sur chaque ligne en fonction de cet interval.

    la macro :
    1°) je fais un tri dans le tableau, par ligne, puis par date croissante
    2°) j'enregistre dans un tableau a 2 colonnes le nom de la ligne et la quantité de defaut en fonction de l'interval de temps demandé...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If UserPPM.Calendar1.Value <= Cells(b, 4).Value <= UserPPM.Calendar2.Value Then
                somme = somme + Cells(b, 7).Value
                b = b + 1
    End If
    Le probleme, c'est que la comparaison ne fonctionne pas et je comptabilise tous les defauts meme ceux hors interval de temps.

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Je n'utilise pas le calendar mais de quel type est la donnée que tu récupères, une date ou un string.
    As-tu essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If DateValue(UserPPM.Calendar1.Value) <= DateValue(Cells(b, 4).Value) <= DateValue(UserPPM.Calendar2.Value) Then
    'ou
    If cdate(UserPPM.Calendar1.Value) <= cdate(Cells(b, 4).Value) <= cdate(UserPPM.Calendar2.Value) Then

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    salut,

    J'ai deja essayer de réaliser ces lignes de commandes en me basant sur l'aide vba et sur les divers questions du forum, mais sans succes.
    Etant même desesperé sur le sujet, j'ai meme essayer de croiser les lignes de commande entre datevalue et cdate, mais bon, je me doutais que le succes ne serais pas au rdv

    Le calendar me renvoie une date, et mon format de case du tableau excel est aussi en date.

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Tu peux aussi essayer en convertisant tes dates en N° de série qui te libère du format
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If cdbl(UserPPM.Calendar1.Value) <= cdbl(Cells(b, 4).Value) <= cdbl(UserPPM.Calendar2.Value) Then
    A tout hasard mais c'est ce que j'utilise en cas de tri ou de comparaison (sans Calendar)
    Tu dis
    A+

    Edit
    Précision : Cdbl ne fonctionne pas si tu as l'heure dans tes dates

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Marche pô non plus;
    le plus bizard, c'est que quelque soit la fonction utilisée, cdbl, datevalue, cdate, le resultat est le meme;
    je me demande si la fonction de comparaison fonctionne bien, et s'il ne vaut mieu pas que je fasse 2 lignes de comparaison...

  6. #6
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    quelle valeur retourne la cellule et quelle valeur retourne le calendar?
    Jérôme

  7. #7
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Citation Envoyé par macroland Voir le message
    je me demande si la fonction de comparaison fonctionne bien, et s'il ne vaut mieux pas que je fasse 2 lignes de comparaison...
    En effet, je m'étais concentré sur les dates, pas sur le test lui-même. Et tu as raison, sur plusieurs lignes ce sera en effet plus simple à relire qu'avec un and.
    J'ai fait le test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub test()
    a = 15
    b = 12
    c = 8
    ok = a >= b >= c
        MsgBox ok
    End Sub
    et je récupère faux, c'est donc bien ton test qui pose pb. Mais si je mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ok = a >= b And b >= c
    MsgBox ok
    j'ai vrai
    A+

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 4
    Points : 2
    Points
    2
    Par défaut


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    If (UserPPM.Calendar1.Value <= Cells(b, 4).Value) And (Cells(b, 4).Value <= UserPPM.Calendar2.Value) Then
                somme = somme + Cells(b, 7).Value
                b = b + 1
            Else
            b = b + 1
     
            End If
    ca marche!!!

    merci bien

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

Discussions similaires

  1. probleme de comparaison dates, debutant
    Par Mobistar dans le forum Langage
    Réponses: 7
    Dernier message: 04/10/2007, 00h37
  2. Réponses: 5
    Dernier message: 23/05/2007, 11h43
  3. Réponses: 7
    Dernier message: 12/01/2007, 11h09
  4. probleme de comparaison de date
    Par witjet dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 04/07/2006, 11h39
  5. [Dates] Probleme de comparaison de date
    Par mathieu77186 dans le forum Langage
    Réponses: 4
    Dernier message: 22/12/2005, 17h21

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