Calcul sur différentes plages variables

Oui, mais dès que l'on passe à la suivante le point de départ change.

Il faut calculer la moyenne & co. en fonction des valeurs du nouveau lot.

Merci encore et bonne journée.

Je crois bien que tu n'écoutes pas ce qui est dit !

Quand on parle de point de départ, il s'agit de point de départ sur une feuille ! Quand on s'attaque à une feuille, il faut partir de quelque part. Normalement la contexture d'une feuille étant identique pour toute feuilles remplissant la même fonction, ce point de départ est fixe !

(Normal d'ailleurs qu'il le soit, pour l'opérateur qui doit saisir, il faut bien qu'il commence à un endroit prédéfini.)

Ce point de départ est nécessairement le point de départ de la première série consignée sur la feuille.

A partir de là, on en détecte la fin, on peut traiter la série. Puis on détecte le début de la suivante, puis sa fin, pour la traiter, et ainsi de suite jusqu'à la fin.

Après on peut éventuellement passer à une autre feuille... Ou si j'en crois ton tableau, à une autre colonne (il doit y en avoir 6 ou 7 portant des relevés...)

Cordialement.

OK, compris.

Je confondais donc point de départ et premier point de nouvelle série.

MFerrand a écrit :

A partir de là, on en détecte la fin, on peut traiter la série. Puis on détecte le début de la suivante, puis sa fin, pour la traiter, et ainsi de suite jusqu'à la fin.

Il me reste toutefois une interrogation.

Je ne vois pas comment Excel détecte la fin et recommence les calculs pour une nouvelle série.

Il faut un "indicateur" pour cela non ?

Tu as bien fourni un indicateur !

On le fournit à VBA pour qu'il puisse opérer.

Je suis d'accord, mais à aucun moment je ne l'ai spécifié dans ma macro.

Tout simplement parce que je ne sais pas comment faire exactement

Illustrons...

Sub calcul()
    Dim cel1 As Range, pla As Range, coul&, i%, n%, dl%
    dl = ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row + 1
    coul = RGB(79, 129, 189)
    Set cel1 = ActiveSheet.Range("B5")
    For i = cel1.Row To dl
        If ActiveSheet.Cells(i, cel1.Column).Interior.Color = coul Or i = dl Then
            n = i - cel1.Row
            Set pla = cel1.Resize(n)
            cel1.Offset(, 1) = WorksheetFunction.Average(pla)
            cel1.Offset(, 2) = WorksheetFunction.StDev(pla)
            cel1.Offset(, 3) = cel1.Offset(, 1) - cel1.Offset(, 2) * 2
            cel1.Offset(, 4) = cel1.Offset(, 1) + cel1.Offset(, 2) * 2
            cel1.Offset(, 1).Resize(, 4).NumberFormat = "0.00"
            Set cel1 = cel1.Offset(n + 1)
        End If
    Next i
End Sub

En quelque sorte, module de calcul sur une colonne.

Il sera évidemment à adapter : si plusieurs colonnes à traiter, boucle pour passer d'une colonne à l'autre, qui encadrera ce module ; si plusieurs feuille, boucle pour passer d'une feuille à l'autre, encadrant l'ensemble précédent.

Et les indications ActiveSheet et B5 seront à remplacés par des identificateurs compatibles avec l'ensemble traité.

(De même, il me semble n'avoir vu que 2 colonnes pour les calculs, et non 4 dans le grand fichier... Mais il est possible de consigner les résultats tout à fait ailleurs (en ajoutant des éléments pour identifier la série traitée ultérieurement.)

Cordialement.

22greggy-test7.xlsm (17.52 Ko)

Bien que comprenant le principe de fonctionnement et la macro, je me vois dans l'incapacité totale de reproduire ce genre de macro.

Je me cantonnerai donc à mon simple tableau par lot et par feuille, en attendant d'élargir mes connaissances sur le sujet, si vaste soit-il.

Je tiens à te remercier pour ton implication, ta pédagogie et ta patience à mon égard.

Cela n'a pas dû être évident de faire face à mes questions redondantes mais j'essaye de me faire comprendre dans ce nouvel environnement à explorer

Cordialement, Greggy, (programmeur de VBA en devenir )

Bonne continuation.

Rechercher des sujets similaires à "calcul differentes plages variables"