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 :

VBA pour sommer des valeures entre deux dates (nombreuses données)


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2014
    Messages : 3
    Points : 1
    Points
    1
    Par défaut VBA pour sommer des valeures entre deux dates (nombreuses données)
    Bonjour,

    J'ai un fichier Excel qui contient deux colonnes une aux formats "date" toutes les heures et l'autre avec des valeurs de "pluie". Le but est de passer par VBA (si possible) pour qu'il me somme les valeurs de pluie par journée. Je connais la fonction SOMME.SI.ENS mais elle ne me permet pas de réaliser mes calculs "automatiquement"

    Date Pluie (mm)
    01/01/1993 05:00 0.8
    01/01/1993 06:00 1.2
    01/01/1993 07:00 0.0
    01/01/1993 08:00 0.4
    01/01/1993 .
    01/01/1993 .
    01/01/1993 .
    02/01/1993 05:00 1.8
    02/01/1993 06.00 0.2

    Dans mon exemple, j'aimerais en sortie avoir un cumul des pluies ente le 01/01 06:00 et le 02/01 05:00 (inclus). Et que ce calcul se répète dans cette intervalle (de 06h à 06h sur la journée) sur toute ma feuille. (7ans de données au pas de temps horaires !!!!)

    J'espère avoir été assez clair..
    Par avance merci de l'aide !

  2. #2
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Un tableau croisé dynamique est fait pour ce genre de traitement.
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2014
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Ah d'accord je pensais pas du tout passer par là, je vais tester ! c'est pas un problème le nombre important (trés important° de données?

    Merci !

  4. #4
    Membre émérite
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Points : 2 657
    Points
    2 657
    Par défaut
    Bonjour maxhor,

    Une petite macro rapide :
    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
    Sub pluie()
    Dim cell_ori As Range
    Dim compteur As Double
    Dim prev_date As Date
     
    With Worksheets("Feuil6")
    Set cell_ori = .Range("A1")
    prev_date = cell_ori.Offset(1, 0) - 1
    compteur = 0
    For I = 1 To .Columns(1).Find("*", , , , , xlPrevious).Row
        If cell_ori.Offset(I, 0) = prev_date Then
            compteur = compteur + cell_ori.Offset(I, 2)
        ElseIf cell_ori.Offset(I, 0) = prev_date + 1 And Hour(cell_ori.Offset(I, 1)) < 6 Then
            compteur = compteur + cell_ori.Offset(I, 2)
        Else
            cell_ori.Offset(I - 1, 3) = compteur
            prev_date = cell_ori.Offset(I, 0)
            compteur = 0
        End If
    Next I
     
    End With
     
    End Sub
    Elle passe sur l'ensemble de ta colonne A place en colonne D la somme en fonction des critères que tu as décrit. Il y a beaucoup d'évolutions possible je pense.
    Précisions complémentaires :
    - il faut que ta colonne B soit en "heure"
    - il faut que ta colonne C soit en "nombre"

    Dis-moi si ca peut te convenir.

    Cordialement,
    Kimy
    La logique :
    • Plus ya de gruyère, moins ya de gruyère.
    • Plus tu pédales moins vite, moins tu avances plus vite.
    Plusoyer les réponses pertinentes et n'oublier pas de résolver en fin de post !

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2014
    Messages : 3
    Points : 1
    Points
    1
    Par défaut :D
    Oui ça m'a l'air pas mal du tout !!!!

    Un grand merci, tu m'as évité pas mal de jour de galère !

    Bon weekend,

    Merci Kimy_Ire !

  6. #6
    Membre émérite
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Points : 2 657
    Points
    2 657
    Par défaut
    si tu considères que le sujet est clôt !
    La logique :
    • Plus ya de gruyère, moins ya de gruyère.
    • Plus tu pédales moins vite, moins tu avances plus vite.
    Plusoyer les réponses pertinentes et n'oublier pas de résolver en fin de post !

Discussions similaires

  1. fonction table pour récupérer la liste des jours entre deux dates
    Par elmoul7ak dans le forum Développement
    Réponses: 2
    Dernier message: 01/05/2010, 13h22
  2. Liste des mois entre deux dates
    Par ginkas31 dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 10/03/2008, 16h33
  3. Permuter des valeurs entre deux listes
    Par doogybreton dans le forum IHM
    Réponses: 2
    Dernier message: 14/12/2007, 21h42
  4. Requête pour calculer le temps entre deux dates
    Par Badboy62cfp dans le forum Access
    Réponses: 2
    Dernier message: 19/05/2006, 13h50
  5. Générer le listing des jours entre deux dates
    Par gsmdu62 dans le forum Langage
    Réponses: 8
    Dernier message: 01/05/2006, 11h08

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