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

Excel Discussion :

Transposer somme.si.ens avec critère sur date et heures en vba ? [XL-2010]


Sujet :

Excel

  1. #21
    Membre régulier
    Inscrit en
    Février 2009
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 188
    Points : 89
    Points
    89
    Par défaut
    il y a actuellement sur ce fichier de données 230 000 lignes

  2. #22
    Membre régulier
    Inscrit en
    Février 2009
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 188
    Points : 89
    Points
    89
    Par défaut
    j'aimerais malgré tout comprendre pourquoi le 2ème code transposé par rapport à ce 1er code formulaR1C1 me renvoi toujours 0 alors que la transposition correspond en tout point tant sur les plages de cellule que sur le critère ?

    1er code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Cells(a, dercolonn + 1).FormulaR1C1 = _
            "=SUMIFS(R4C" & dercolonn & ":RC" & dercolonn & ",R4C2:R" & a & "C2,"">=""&TIME(HOUR(R" & a & "C2),MINUTE(R" & a & "C2),SECOND(R" & a & "C2))-TIME(0,0," & choixsec & ")+DATE(YEAR(R" & a & "C2),MONTH(R" & a & "C2),DAY(R" & a & "C2)))"
    2ème 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
     
    For a = 5 To derligne
     
     
    criteretime = TimeSerial(Hour(Cells(a, 2)), Minute(Cells(a, 2)), Second(Cells(a, 2))) _
    - TimeSerial(0, 0, choixsec) _
    + (DateSerial(Year(Cells(a, 2)), Month(Cells(a, 2)), Day(Cells(a, 2))))
     
    Cells(a, dercolonn + 1) = Application.WorksheetFunction.SumIfs _
    (Range(Cells(4, dercolonn), Cells(a, dercolonn)), _
    Range(Cells(4, 2), Cells(a, 2)), _
    ">=" & criteretime)
     
    Next a

  3. #23
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    il me semble que VBA est capricieux dans ce type de cas
    déjà, tu as pas besoin de SumIfs, SumIf suffit amplement

    ensuite, quand je suis confronté à ça, je calcule en amont ma date inférieure, et je l'utilise en formatant en date anglaise

    essaye ça
    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
    Sub glissant()
     
    Dim ShtName As String, NameFich As String, chemin As String
    Dim a As Long, derligne As Long
    Dim DateInf As Date
     
    chemin = Workbooks(ActiveWorkbook.Name).Path
    NameFich = Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 5)
     
    ActiveWorkbook.SaveAs Filename:= _
           chemin & "\" & NameFich & ".xlsm", FileFormat _
          :=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
     
    ShtName = ActiveSheet.Name
    derligne = Sheets(ShtName).Cells(Rows.Count, 11).End(xlUp).Row
    dercolonn = Sheets(ShtName).Cells(1, Columns.Count).End(xlToLeft).Column
     
    choixsec = InputBox("Combien de secondes glissante (1 à 59) ? ", "Calcul glissant")
     
    For a = 5 To derligne
        DateInf = Cells(a, 2) - CDate("00:00:" & choixsec)
        Cells(a, dercolonn + 1) = Application.WorksheetFunction.SumIf(Range(Cells(4, 2), Cells(a, 2)), ">=" & Format(DateInf, "mm/dd/yyyy hh:mm:ss"), Range(Cells(4, dercolonn), Cells(a, dercolonn)))
    Next a
     
    MsgBox "Calcul effectué avec succès !", vbOKOnly
    ActiveWorkbook.Save
     
    End Sub

  4. #24
    Membre régulier
    Inscrit en
    Février 2009
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 188
    Points : 89
    Points
    89
    Par défaut
    excellent...merci

  5. #25
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    Avant de crier victoire, regarde si ça fonctionne quand le jour du mois est inférieur à 12

    remplace tes 25/03/2015 par 04/03/2015 par exemple, et refais le test

    tiens nous au courant

  6. #26
    Membre régulier
    Inscrit en
    Février 2009
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 188
    Points : 89
    Points
    89
    Par défaut
    non c'est bon ça fonctionne également...merci

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. formule somme.si.ens avec critére sur les dates
    Par AMEDDO79 dans le forum Excel
    Réponses: 15
    Dernier message: 10/02/2016, 10h35
  2. Somme.si.ens avec critères dynamiques
    Par eduardo9231 dans le forum Général VBA
    Réponses: 1
    Dernier message: 09/11/2014, 07h18
  3. [AC-2010] Requête avec critère sur date
    Par Psybo dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 13/06/2014, 23h19
  4. Requête Somme avec critère sur date
    Par Pixel dans le forum VBA Access
    Réponses: 1
    Dernier message: 26/05/2014, 20h02
  5. [XL-2010] Utilisation de somme.si.ens avec critère spécifique
    Par clem256 dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 06/01/2014, 15h53

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