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 :

difference entre deux nombres en fonction d'une date [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    173
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2009
    Messages : 173
    Points : 75
    Points
    75
    Par défaut difference entre deux nombres en fonction d'une date
    bonsoir le forum

    je souhaiterai faire ceci:

    chaque jour j'encode un index de consommation d'une cuve qui se copie dans une feuille depuis un user form en a1 et en a2 la date system

    je souhaiterai savoir ma consommation mensuel donc la différence entre 2 index donc le dernier jour du mois - le premier jour du moi et l'afficher dans une textbox de mon formulaire et en plus une liste déroulante avec les moi de l'année qui afficherait dans cet meme txtbox le resultat en fonction du moi selectionner

    exemple

    le 1/5/09 index 497856
    le 2/5/09 index 497884
    etc
    le 31/5/09 index 498000

    donc le resultat pour le mois de mai est 144

    c'est ce nombre que je voudrait faire apparaitre dans ma txtbox

    merci

  2. #2
    Membre confirmé
    Inscrit en
    Décembre 2003
    Messages
    434
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 434
    Points : 547
    Points
    547
    Par défaut
    Salut,

    J'ai suppose que tes index etaient trie par dates croissantes.
    Colonne A -> la date, colonne B -> l'index.
    (Cree un userform avec un textbox et un combobox)

    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
    27
    28
    29
    30
    31
    32
    33
    Option Explicit
     
    Private Sub ComboBox1_Change()
        Dim Cpt As Integer
        Dim IndexMin As Double, IndexMax As Double
        Dim IndexMinOk As Boolean, IndexMaxOk As Boolean
     
        IndexMinOk = False
        IndexMaxOk = False
        For Cpt = 2 To Range("A65536").End(xlUp).Row
            If Month(Range("A" & Cpt).Value) = Me.ComboBox1.ListIndex + 1 Then
     
                If Not IndexMinOk Then
                    IndexMin = Range("B" & Cpt).Value
                    IndexMinOk = True
                Else
                    IndexMax = Range("B" & Cpt).Value
                    IndexMaxOk = True
                End If
            End If
        Next Cpt
     
        If IndexMinOk And IndexMaxOk Then
            Me.TextBox1.Value = IndexMax - IndexMin
        Else
            Me.TextBox1.Value = 0
        End If
    End Sub
     
    Private Sub UserForm_Initialize()
        Me.ComboBox1.List = Array("Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre")
        Me.ComboBox1.ListIndex = Month(Date) - 1
    End Sub

    ++
    Minick

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    173
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2009
    Messages : 173
    Points : 75
    Points
    75
    Par défaut
    merci beaucoup pour la code mais j'ai quand meme un soucis

    dans ma feuille pour faire le teste j'encode une date en a1 ( 01/05/09) et un index en b1
    en a2 je met (31/05/09) et en b2 un autre index
    et dans ma txtbox de mon userform j'ai un zéro qui apparait

    et pour que cela fonctionne je doit encoder des valeur pour le mois d'avril pour que l'index du mois de mai se calcule et la même chose pour le moi 'avril je doit encoder des valeurs du mois de mars

    et si j'ai des index aussi en collone c et d et E comment dois je faire pour les inscrire en txtbox2,3,4

    merci

  4. #4
    Membre confirmé
    Inscrit en
    Décembre 2003
    Messages
    434
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 434
    Points : 547
    Points
    547
    Par défaut
    Re,

    Etrange, chez moi ca fonctionne tres bien.
    Il faut au minimum 2 index par mois pour calculer la valeur.

    Pour les index colonne C,D,E il faut appliquer le meme principe en faisant varier
    cette ligne, B devient C, D ou E dans un boucle par exemple
    Poste un fichier se sera plus simple pour comprendre ce qui cloche dedans.

    ++
    Minick

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    173
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2009
    Messages : 173
    Points : 75
    Points
    75
    Par défaut
    bonsoir le forum

    ok ca fonctionne aussi maintenant

    et pour faire la somme des index par mois a lieu de faire la différence comment dois je faire ?

    et aussi la somme par année ?

    d'Avance merci

    je n'y arrive pas avec la boucle pour les autres valeurs peux tu mettre un exemple pour la collone c je me débrouillerait pour les autres

    merci

  6. #6
    Membre confirmé
    Inscrit en
    Décembre 2003
    Messages
    434
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 434
    Points : 547
    Points
    547
    Par défaut
    Salut,

    En piece jointe un exemple.

    J'ai suppose que tu voulais un cumul jusqu'au mois selectionne.
    Le nom des TextBox est important, par exemple pour 3 index :
    • TextBox1 -> Cumul Mois Index 1
    • TextBox2 -> Cumul Mois Index 2
    • TextBox3 -> Cumul Mois Index 3
    • TextBox4 -> Cumul Annee Index 1
    • TextBox5 -> Cumul Annee Index 2
    • TextBox6 -> Cumul Annee Index 3


    Si tu veux ajouter 1 index :
    • les Cumuls Mois iront jusqu'en TextBox4
    • les Cumuls Annees iront de TextBox5 a TextBox 8


    ++
    Minick
    Fichiers attachés Fichiers attachés

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    173
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2009
    Messages : 173
    Points : 75
    Points
    75
    Par défaut
    un grand merci pour tes explixation c'est a peu pres ce que je cherche
    je te met ci joint mon fichier avec les explication de ma demande sur la feuil1

    c'est plus simple avec un exemple

    d'avance je te remercie pour ton aide précieuse

  8. #8
    Membre confirmé
    Inscrit en
    Décembre 2003
    Messages
    434
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 434
    Points : 547
    Points
    547
    Par défaut
    Salut,

    Ci-joint ton fichier .

    Pour j-1 j'ai pris l'avant derniere journee saisie et non le jour - 1.

    ++
    Minick
    Fichiers attachés Fichiers attachés

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    173
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2009
    Messages : 173
    Points : 75
    Points
    75
    Par défaut
    SUPER GENIAL

    Vraiment un grand merci pour ta contribution dans mon projet

    Merveilleux

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    173
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2009
    Messages : 173
    Points : 75
    Points
    75
    Par défaut
    re

    sur le fichier que tu m'a envoyer avec ton code j'ai constater une petite erreur que je n'arrive pas a resoudre


    en effet sur l'onglet Index "index eau demine" du multipage e mon userform2
    dans les textbox de la frame consommation mensuel , tu m'a fait le code en addition de tous les index encoder, mais j'aurrais besoin comme tu avais fais pour ton précédent code de la différence de la derniere date trouvée d
    u moi par rapport à la premiere date
    touvée

    exe:

    26/6/09 - 02/06/09= dif entre les deux index

    merci

  11. #11
    Membre confirmé
    Inscrit en
    Décembre 2003
    Messages
    434
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 434
    Points : 547
    Points
    547
    Par défaut
    Salut,

    Remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub MajIndexEauDemine(MajMois As Boolean, MajJ_1 As Boolean, Optional MajJ As Boolean = False)
       ...
       ...
       ...
    End Sub
    par ceci :
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    Private Sub MajIndexEauDemine(MajMois As Boolean, MajJ_1 As Boolean, Optional MajJ As Boolean = False)
        Dim Cpt As Integer
        Dim IndexJ(1 To 4) As Variant, IndexJ_1(1 To 4) As Variant, IndexMois(1 To 4) As Variant, IndexMoisInit(1 To 4) As Variant
        Dim IndexMoisInitVide As Boolean
     
        IndexMoisInitVide = True
     
        With Worksheets("IndexEd")
            For Cpt = 2 To .Range("A65536").End(xlUp).Row
                If MajJ Then
                    If .Range("A" & Cpt).Value = CDate(Me.Label115.Caption) Then
                       IndexJ(1) = .Cells(Cpt, 2).Value
                       IndexJ(2) = .Cells(Cpt, 3).Value
                       IndexJ(3) = .Cells(Cpt, 4).Value
                       IndexJ(4) = .Cells(Cpt, 5).Value
                    End If
                End If
     
                If MajJ_1 Then
                    If .Range("A" & Cpt).Value < CDate(Me.Label115.Caption) Then
                       IndexJ_1(1) = .Cells(Cpt, 2).Value
                       IndexJ_1(2) = .Cells(Cpt, 3).Value
                       IndexJ_1(3) = .Cells(Cpt, 4).Value
                       IndexJ_1(4) = .Cells(Cpt, 5).Value
                    End If
                End If
     
                If MajMois Then
                    If CInt(Year(.Range("A" & Cpt).Value)) = CInt(CDate(Year(Me.Label115.Caption))) And CInt(Month(.Range("A" & Cpt).Value)) = Me.ComboBox1.ListIndex + 1 Then
                       If IndexMoisInitVide Then
                          IndexMoisInit(1) = .Cells(Cpt, 2).Value
                          IndexMoisInit(2) = .Cells(Cpt, 3).Value
                          IndexMoisInit(3) = .Cells(Cpt, 4).Value
                          IndexMoisInit(4) = .Cells(Cpt, 4).Value
                          IndexMoisInitVide = False
                       End If
     
                       IndexMois(1) = .Cells(Cpt, 2).Value
                       IndexMois(2) = .Cells(Cpt, 3).Value
                       IndexMois(3) = .Cells(Cpt, 4).Value
                       IndexMois(4) = .Cells(Cpt, 4).Value
                    End If
                End If
            Next Cpt
        End With
     
        If MajJ Then
            Me.TextBox11.Value = IndexJ(1)
            Me.TextBox12.Value = IndexJ(2)
            Me.TextBox13.Value = IndexJ(3)
            Me.TextBox14.Value = IndexJ(4)
        End If
     
        If MajJ_1 Then
            Me.TextBox15.Value = IndexJ_1(1)
            Me.TextBox16.Value = IndexJ_1(2)
            Me.TextBox17.Value = IndexJ_1(3)
            Me.TextBox18.Value = IndexJ_1(4)
        End If
     
        If MajMois Then
            Me.TextBox19.Value = IndexMois(1) - IndexMoisInit(1)
            Me.TextBox20.Value = IndexMois(2) - IndexMoisInit(2)
            Me.TextBox21.Value = IndexMois(3) - IndexMoisInit(3)
            Me.TextBox22.Value = IndexMois(4) - IndexMoisInit(4)
        End If
    End Sub
    ++
    Minick

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    173
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2009
    Messages : 173
    Points : 75
    Points
    75
    Par défaut
    merci cela fonctionne

    j'ai juste du corriger deux lignes de ton code et remplacer 4 par 5

    sinon un grand merci

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    173
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2009
    Messages : 173
    Points : 75
    Points
    75
    Par défaut
    salut MINICK et le forum

    dans le code que tu m'as écrit pour afficher dans l'onglet htr et dans la listbox3 mes données en 2 colones

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.ListBox3.List = Worksheets("ProductionHtr").Range("A2:B" & Worksheets("ProductionHtr").Range("A65536").End(xlUp).Row).Value
    cela affiche ma colonne A et B dans ma listbox 3

    j'essaie de faire la meme chose dans une autre listbox avec des donnée d'ue autre feuille et il y a uniquement la première ligne qui apparait peux tu me dire d'ou vient l'erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.ListBox9.List = Worksheets("anomalies").Range("A2:D" & Worksheets("anomalies").Range("A65536").End(xlUp).Row).Value
    donc je souhaite faire apparaitre dans ma listbox la colonne A, B, C, D

    j'ai mis mon code juste apret le tient

    merci de ton aide

  14. #14
    Membre confirmé
    Inscrit en
    Décembre 2003
    Messages
    434
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 434
    Points : 547
    Points
    547
    Par défaut
    Salut,

    Dans les proprietes de ta listbox change ColumnCount, mets 4.

    ++
    Minick

  15. #15
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    173
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2009
    Messages : 173
    Points : 75
    Points
    75
    Par défaut
    merci
    j'ai ajouter mon fichier si tu peus regarder merci d'avance

  16. #16
    Membre confirmé
    Inscrit en
    Décembre 2003
    Messages
    434
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 434
    Points : 547
    Points
    547
    Par défaut
    Salut,

    Le fichier modifie ici
    Trop gros pour le poster directement ici.

    ++
    Minick

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

Discussions similaires

  1. [WD10] Calcul de la difference entre deux sommes dans une requete
    Par Arasen dans le forum WinDev
    Réponses: 2
    Dernier message: 14/08/2009, 09h16
  2. Valeur calculée difference entre deux dates #NOMBRE!
    Par gracouille dans le forum SharePoint
    Réponses: 3
    Dernier message: 13/06/2008, 11h59
  3. nombre de difference entre deux mots
    Par navigator2008 dans le forum C
    Réponses: 8
    Dernier message: 23/01/2008, 23h59
  4. nombre en lettres & la différence entre deux dates
    Par Karim1971 dans le forum Excel
    Réponses: 1
    Dernier message: 15/08/2007, 06h08
  5. Réponses: 7
    Dernier message: 03/02/2006, 13h50

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