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 :

Moyenne de valeurs entre 2 dates


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2015
    Messages : 5
    Par défaut Moyenne de valeurs entre 2 dates
    Bonsoir tout le monde,

    Je vient tout juste de commencer sur les macros/VBA d'Excel, et je dois vous avouer que je galère un max en ce moment. Surtout que je n'ai pas réussi à trouver la réponse sur le net.

    Bref, j'ai un fichier où sont rangés en première colonne les dates, et le reste, des valeurs (des taux pour être plus précis). Soit à peu près ça (excusez mes erreurs s'il y en a, je suis encore novice ici):



    01/02/1999 | 3,2 | 3,1| 2,4| 3,4| 3,5|
    02/02/1999 | 2,2 | 3,2| 3,4| 2,3| 4,5|
    03/02/1999 |
    04/02/1999 |
    05/02/1999 |
    06/02/1999 | 3,2 | 3,2| 3,5| 2,2| 3,5|
    07/02/1999 |

    et ainsi de suite jusqu'en 2015, et il manque sur certaines lignes des valeurs. (en fait, j'ai du insérer les lignes manquantes par macro ).

    Donc pour la suite, je dois créer une boucle où la macro parcours chaque ligne, et quand elle voit une ligne vide, elle fait la moyenne entre les valeurs du haut et du bas pour chaque colonne, donc une moyenne des valeurs qui les encadrent. Ici donc, une moyenne entre 2,2 et 3,2 pour la 2ème colonne à la date du 03/02/1999, 3,2 et 3,2 pour la 3ème colonne même date, et ainsi de suite...

    Pour 04/02/1999, à la première colonne, on aura donc une moyenne entre la valeur obtenue de 03/02/1999 et 3,2 (valeur du 06/02/1999).

    Donc, si vous me suivez bien, je pense que les valeurs de 03/02/1999 et 04/02/1999 seront légèrement différentes. Même chose pour 05/02/1999.

    Je ne sais pas si je m'exprime mal, et si c'est la bonne manière de poster ici, mais si vous pouviez me donner des pistes malgré tout, ça me serait d'une grande aide.

    Merci grandement d'avance

  2. #2
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 54
    Par défaut
    Dis moi si c'est ça te vas:

    Main Sub:
    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
    Option Explicit
     
    Sub average()
     
    Dim wb As Workbook
    Dim ws As Worksheet
    Dim i As Integer, c As Integer
    Dim Lastrow As Long, Lastcol As Long
    Dim Nextcell As Double
     
    Set wb = ThisWorkbook
    Set ws = wb.Sheets("Sheet1") ' Change le nom de la feuille que tu utilise
     
    Lastrow = ws.Range("A" & Rows.Count).End(xlUp).Row ' je suppose que les dates sont colones A
    Lastcol = ws.Cells(1, Columns.Count).End(xlToLeft).Column
     
    For c = 2 To Lastcol ' les rates commencent colonne B
     
            For i = 1 To Lastrow
     
    ' Si la cellule est vide mais pas la suivante alors moyenne entre les 2
                    If IsEmpty(ws.Cells(i, c).Value) And Not IsEmpty(ws.Cells(i + 1, c).Value) Then
     
                            ws.Cells(i, c).Value = (ws.Cells(i - 1, c).Value + ws.Cells(i + 1, c).Value) / 2
     
    ' Si la cellule est vide et la suivante aussi alors il faut trouver la valeur suivant (Sub routine)
                    ElseIf IsEmpty(ws.Cells(i, c).Value) And IsEmpty(ws.Cells(i + 1, c).Value) Then
     
                            'Sub routine pour trouver le rate suivant qu'on appel Nextcell
                            NextProcess i, c, Nextcell
                            ws.Cells(i, c).Value = (ws.Cells(i - 1, c).Value + Nextcell) / 2
     
                    End If
     
            Next i
     
    Next c
     
    End Sub

    Sub routine qui va trouver la valeur suivante
    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
    Sub NextProcess(ByVal i As Integer, ByVal c As Integer, ByRef Nextcell As Double)
     
    Dim Found As Boolean
    Dim j As Integer
     
    Found = False
    j = i
     
    Do While Found = False
     
            If Not IsEmpty(Cells(j, c).Value) Then
     
                    Nextcell = Cells(j, c).Value
                    Found = True
     
            End If
     
    j = j + 1
    Loop
     
    End Sub
    Manu

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2015
    Messages : 5
    Par défaut
    Merci de me répondre aussi vite, super cool de ta part.

    J'ai un peu compris les processus, par contre je crois qu'il faut que je t'envoies le début de mon travail avant tout.
    Le soucis c'est que le fichier est en .csv, je n'arrive pas à l'envoyer sur le site !?

    C'est un tableau, il y a un autre format accepté?

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 54
    Par défaut
    pour les format .csv tu l'ouvre avec excel et tu fais TextToColumn and tu choisi ton delimiter ( *,* *;*...)
    et tu enregistre ton fichier en .xlsm

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2015
    Messages : 5
    Par défaut
    Super, donc voilà:

    Rates1.xlsm

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 54
    Par défaut
    Voila on peut s'aider entre financier
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Réponses: 8
    Dernier message: 26/08/2013, 18h36
  2. additionner des valeurs entre 2 dates
    Par mgrizzly dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 21/04/2010, 16h38
  3. valeur entre deux dates
    Par amazircool dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 29/04/2008, 08h39
  4. moyenne de différence entre 2 dates
    Par zanou666 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 18/10/2007, 21h29
  5. Moyenne des différences entre 2 dates
    Par mirage28 dans le forum Requêtes
    Réponses: 3
    Dernier message: 05/08/2007, 13h44

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