Macro bien utile, brusquement inactive

Bonjour à toutes et tous,

En 2014, l'un d'entre-vous m'avait écrit un code macro automatisant un tri bien fastidieux sur une chronique de pluviomètre.

Je l'ai utilisé avec succès et sans aucun problème pendant 2 années.

Mais cette aide précieuse a brusquement cessé de fonctionner pour les derniers relevés...

En résumé, je colle la chronique mensuelle des bascules de l'auget dans les colonnes A et B, je déroule la quantité de pluie correspondante (0,2 mm) dans la colonne C, je précise le calendrier du mois dans la colonne N.

VBA ou Macro calcule les sommes horaires dans les colonnes O à AL, les sommes horaires et journalières dans les colonnes D et E.

Le classeur joint est composé d'une feuille "code-gabarit" (que je multiplie au fur et à mesure), de la feuille du mois d'aout 2013 fonctionnelle, et celle de septembre 2015 qui ne l'est plus. Sans connaissance macro ou VBA, j'imagine que le soucis apparaît à partir du 2 septembre à 22:24 puisque le total journalier a disparu pour être par évènement. Le problème apparait également lors du traitement du mois d'octobre.

Merci !!!

Bonjour,

Il va être difficile de te dire quoi que ce soit, ton classeur ne contient aucune macro.

Cordialement.

Comme je le déplorais, je n'ai aucune connaissance en macro-VBA...

Je copie le code figurant en encart dans le feuille "code-gabarit" et le colle dans visual basic / code / exécution après avoir modifié le nom de la feuille.

Merci de me remettre sur la bonne voie.

Tu la caches ! il vallait mieux la laisser dans un module.

Bon l'explication est simple : ton tableau ne se remplit pas parce que à partir du 03/09, ta colonne A ne contient plus la date mais la date et l'heure. L'égalité n'est donc plus vérifiée sur la date.

Ton tableau précédent comporte une colonne date et une colonne heure, soit tu restes avec cette organisation, soit il faut changer...

J'aimerais bien savoir comment tu lances ta macro (tu as fourni le classeur sans sa macro en position de fonctionner, donc incertitude)

Le remplissage du tableau est lent ! On devrait pouvoir accélérer cela. Je vais essayer de regarder.

Cordialement.

Re,

J'ai réécrit ta macro :

Sub toto()
    Dim DerLig%, i%, J%, H%, somJ, somH
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    With ActiveSheet
    'vide ta feuille
        .Range("D3:E5000").ClearContents
        .Range("D3:E5000").Borders.LineStyle = xlNone
        .Range("O3:AL50").ClearContents
    'calculs jours/heures
        DerLig = .Range("A" & .Rows.Count).End(xlUp).Row
        i = 3
        J = Day(.Cells(i, 1)): H = Hour(.Cells(i, 2))
        somJ = .Cells(i, 3): somH = .Cells(i, 3)
        Do While i <= DerLig
            i = i + 1
            If Day(.Cells(i, 1)) = J Then
                somJ = somJ + .Cells(i, 3)
                If Hour(.Cells(i, 2)) = H Then
                    somH = somH + .Cells(i, 3)
                Else
                    .Cells(i, 4) = somH
                    .Cells(i, 4).Borders(xlEdgeBottom).LineStyle = xlContinuous
                    .Range("O2").Offset(J, H) = somH
                    H = Hour(.Cells(i, 2)): somH = .Cells(i, 3)
                End If
            Else
                .Cells(i, 5) = somJ
                .Cells(i, 4) = somH
                .Cells(i, 4).Resize(, 2).Borders(xlEdgeBottom).LineStyle = xlContinuous
                .Range("O2").Offset(J, H) = somH
                J = Day(.Cells(i, 1)): H = Hour(.Cells(i, 2))
                somJ = .Cells(i, 3): somH = .Cells(i, 3)
            End If
        Loop
    'calcule nbre jours t° >1, t° >5,t° >10, cellules J2, K2, L2
        .Range("J2") = Application.WorksheetFunction.CountIf(.Range("M3:M" & DerLig - 1), ">=1")
        .Range("K2") = Application.WorksheetFunction.CountIf(.Range("M3:M" & DerLig - 1), ">=5")
        .Range("L2") = Application.WorksheetFunction.CountIf(.Range("M3:M" & DerLig - 1), ">=10")
    End With
    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True
End Sub

Du moins, hormis une rectif. de l'effacement des bordures, toute la partie pour servir ton tableau puis les jours et heures, pour substituer une seule boucle aux 26 (24 pour le tableau horaire, 1 pour les heures et 1 pour les jours) préexistantes.

La différence de rapidité devrait être sensible.

J'ai également mis ActiveSheet comme référence de feuille, car a-priori tu devrais toujours l'exécuter sur la feuille active. Ne sachant pas comment tu la lances, tu la trouveras dans un module, et elle peut être lancée à partir de la boîte de dialogue macro.

Cordialement.

Merci beaucoup !

  • il reste un petit incident: les cellules F3 G3 H3 me servent à contrôler le suivi des totaux par colonne. Le total des sommes journalières est différent car aux lignes 1111 à 1114, il y a un décalage.
  • A propos d'activsheet, je ne comprends pas trop... Mais je retrouve le code dans "Module1". J'en conclu qu'il suffira de l'exécuter sans pouvoir modifier le nom du sheet comme précédemment ?

Il faudra bien que je m'intéresse un jour à ce langage magique ! Mais je n'en ai pas très envie...

En tous cas merci beaucoup pour ton aide, et l'avenantt présenté ci-dessus. Bonne journée

Il y a une anomalie à la fin, je vais regarder...

ActiveSheet est pour définir la feuille active pour l'appliquer, sans avoir besoin de mettre le nom à chaque fois.

Anomalies rectifiées.

Rechercher des sujets similaires à "macro bien utile brusquement inactive"