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 :

Calcul entre deux dates Calendar


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
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2011
    Messages : 51
    Par défaut Calcul entre deux dates Calendar
    Bonjour,

    J'ai réalisé une petite macro sur Excel, en VB6. Le principe qui me pose problème est le suivant :
    - chaque ligne comprends une date (colonne1) et une valeur (colonne5, qui peut être vide)
    - les lignes sont rangées par ordre croissant des dates (de la plus ancienne à la plus récente)
    - suivant une date de début (entrée dans le calendar1) et une date de fin (dans calendar2), on fait la somme des valeurs présentes entre ces 2 dates

    Voici un bout de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    Private Sub FaireSomme(NbrLignesRemplies)
        If (Calendar1.Value <= Calendar2.Value) Then
            deb = Calendar1.Value
            fin = Calendar2.Value
            For i = 2 To NbrLignesRemplies	'on commence par i=2 car la ligne 1 correspond aux titres des colonnes
                If (Not IsEmpty(Feuil1.Cells(i, 1)) And (Feuil1.Cells(i, 1) >= deb) And (Feuil1.Cells(i,1) <= fin)) Then
                    'on fait la somme des valeurs dans "Total"
                    Total = Total + Feuil1.Cells(i, 5)	'Total est initialisé à 0 avant de rentrer dans la fonction
     
                    LabelValeur.Caption = "  Total : " & Total
                    LabelValeur.Visible = True
                    LabelCondition.Caption = "OK"
                Else
                LabelValeur.Visible = False
                CommandButtonOK.Visible = True
                LabelCondition.Caption = "condition non acceptée"
                End If
            Next i
        Else
            LabelCondition.Caption = "Erreur : Vérifiez que la date de début précède la date de fin."
            LabelCondition.Visible = True
            LabelValeur.Visible = False
            CommandButtonOK.Visible = True
        End If
        LabelCondition.Visible = True
    End Sub
    J'ai remarqué que lorsque je rajoute une nouvelle ligne avec une date plus récente, tant que pour le calcul de la somme je n'entre pas une date de fin > ou = à cette dernière, j'obtiens "condition non acceptée". La boucle ne se réalise pas et je ne comprends pas pourquoi.
    Quelqu'un aurait-il déjà une explication à cela ?

  2. #2
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    Bonjour,

    En fait, ta boucle se réalise normalement. Le seul problème, c’est que tu ne vois pas l’indication du résultat (Total) puisque tu caches le LabelValeur lorsque la condition de date n’est pas satisfaite.

    Cordialement.

  3. #3
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2011
    Messages : 51
    Par défaut
    Effectivement le calcul se fait comme je voulais...je pensais qu'il était sensé se faire dans la partie où j'affiche "OK" et non dans la partie ou j'affiche "condition non acceptée"...
    Enfin du coup je vais simplement échanger ces deux parties ^^

    Merci beaucoup

  4. #4
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2011
    Messages : 51
    Par défaut
    Euh...en fait...tout ne fonctionne pas exactement pas je voudrais...
    Si ma date de fin correspond à la dernière date de la colonne, on me signale l'erreur et non le Total

  5. #5
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    Bonjour,

    Coté explications, c’est plutôt hyper light ! De quelle erreur parles-tu ?
    Dans ton programme, il y a 2 tests :
    Un premier pour vérifier que la date de début est inférieure ou égale à la date de fin ;
    Dans le cas contraire, on affiche "condition non acceptée"
    Un deuxième pour vérifier que la cellule scrutée en colonne A n’est pas vide et que la date inscrite dans cette cellule est bien comprise entre la date de début et la date de fin.
    Dans le cas contraire, on affiche "Erreur : Vérifiez que la date de début précède la date de fin."

    A tout hasard, tu peux vérifier que NbrLignesRemplies est bien égal au numéro de ligne d’une cellule qui satisfait aux conditions. Dans le cas contraire, tu obtiens naturellement l’affichage "condition non acceptée".

    Cordialement.

  6. #6
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2011
    Messages : 51
    Par défaut
    En fait c'est l'inverse (ou du moins ce que je cherche à faire) :
    - la première condition teste bien si la date de début est inférieure ou égale à la date de fin, mais dans le cas contraire j'affiche "Erreur : Vérifiez que la date de début précède la date de fin."
    - la deuxième condition vérifie que la cellule scrutée en colonne A n’est pas vide et que la date inscrite dans cette cellule est bien comprise entre la date de début et la date de fin, je suis d'accord, mais c'est là qu'est mon problème...
    En fait je voudrais que la date de fin soit aussi inclue dans les calculs or ce n'est pas le cas !

    Est-ce moins light ? ^^

    J'ai relue ce que je viens d'écrire et ce n'est pas exactement ça...

    Cette la dernière date de la colonne A qui n'est pas prise en compte, du coup, jamais je n'arrive à calculer mon Total complet.

  7. #7
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    Excuses-moi pour le libellé des erreurs, mes doigts ont fourchés.
    Mais tu ne réponds pas à ma question : quelle est l’erreur signalée ?
    As-tu vérifié la valeur de NbrLignesRemplies ?
    De plus, il y a quand même des bizarreries dans ton programme.
    Lorsque tu rencontres une cellule qui ne remplit pas la condition multiple "cellule non vide et date comprise date de début et date de fin", tu affiches "condition non acceptée".
    Le problème, c’est que ta boucle ne va pas s’arrêter pour autant et lors de l’itération suivante, le message sera effacé.
    Tu as donc 2 solutions :
    Si tu souhaites interrompre le programme lorsque la condition n’est pas satisfaite, il te faut ajouter un Exit Sub, afficher le message d’alerte et cacher le total.
    Si tu souhaites quand même effectuer le calcul du total, il te faut afficher le message d’alerte et afficher le total.

    Cordialement.

Discussions similaires

  1. Probleme calcul entre deux dates
    Par auben dans le forum VBA Access
    Réponses: 3
    Dernier message: 05/02/2009, 18h44
  2. Calcul entre deux dates
    Par diegochile dans le forum Deski
    Réponses: 1
    Dernier message: 02/10/2008, 14h30
  3. [Dates] calcul entre deux dates
    Par angeblanc22 dans le forum Langage
    Réponses: 6
    Dernier message: 16/03/2007, 12h42
  4. [Date] Calcul entre deux dates
    Par djodjo dans le forum Collection et Stream
    Réponses: 7
    Dernier message: 14/09/2006, 14h32
  5. Calcul entre deux dates heures
    Par Isa31 dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 31/03/2005, 13h17

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