Comment écrêter valeur

Bonjour à Tous.

Je cherche quelqu'un qui pourrait me donner la formule ou commande pour compléter mon tableau excel!

Alors, j'espère me faire comprendre :

Je suis en attente d'activer une batterie virtuelle ( SVP, pas de débat sur les batteries virtuelles). J'alimente en données tous les jours ma production solaire (colonne B) et la consommation électrique de mon domicile (colonne C) ce qu'en découle un remplissage d'une batterie virtuelle (colonne D).

Mon fournisseur de batterie virtuelle propose plusieurs niveaux de stockage 100,300, 600 kWh., etc.

Mon but est de remplir les colonnes F à J pour choisir l'offre la plus adaptée à mon profil. Dans la colonne F (100 kWh), je voudrais le report du remplissage de batterie virtuelle (colonne D) sans dépasser 100 (maximum du remplissage), mais, lors d'un jour en déficits d'ensoleillement, me soustraire la valeur négative inscrite en rouge. Et le même résonnement pour les différentes capacités de batteries.

Merci pour votre aide

Je poste une copie d'écran, car je ne peux pas encore mettre de fichiers dans mon post!

image

Bonjour,

Il manque des infos, notamment la charge initiale, pour la 1e valeur de la colonne.

Ensuite votre demande m'échappe un peu, j'ai peut etre mal compris mais sur Internet il est expliqué que votre batterie répartie l'énergie sur les usages, pour ne pas avoir à tout stocker justement. Donc je ne comprends pas trop d'utiliser la colonne D plutot que E pour le calcul.

Ensuite vous indiquez "me soustraire la valeur en rouge", ok mais la soustraire où ? A la cellule au dessus ? Je suis parti sur cette hypothèse.

La formule correspondant à votre demande, en F4, serait

=SI($D4>0;MIN(100;$D4);F3-$E4)

Étirable vers la droite (il faut remplacer 100) ou bien si vous avez juste 100 en F1 avec un format personnalisé, vous pouvez le mettre dans le MIN.

En F3 cela dépend de la charge initiale.

Mais bon, je n'y connais pas grand-chose et je me trompe probablement, mais votre approche me semble un peu "simple" pour le choix d'une batterie virtuelle. Pour moi c'est celle d'une batterie standard.

Bonjour Sabot et merci de vous pencher sur mon problème.

Il manque des infos, notamment la charge initiale

En fait, la charge initiale n'est pas importante. Je partirai de zéro quand l'offre sera validée.

votre batterie répartie l'énergie sur les usages

Pas du tout. Je suis en autoconsommation et tout ce que je sur-produis en journée (colonne D) est capitalisé sur un compte de "batterie virtuelle" que je consomme la nuit en toute gratuité, si mon compte est en positif. Dès que ma batterie virtuelle est vide(en négatif sur la colonne D), je suis facturé sur le réseau comme quelqu'un de non équipé de panneaux.

Mon fournisseur propose plusieurs capacités de batterie (à tarif évolutif). C'est pour cela, qu'en remplissant mes données de production solaire B et de consommation de mon domicile C, je pourrais estimer un délai d'autonomie tant que la colonne 100, 300, 600 etc reste en positif. Ce que je n'ai pas dit, et qui est important : si je prends une batterie de 100 kWh, quand elle sera pleine, ma surproduction sera perdue pour moi. Donc l'intérêt de prendre une capacité adapté à ma production et à ma consommation.

J'ai essayé la commande que vous m'avez fournie, mais cela ne me donne pas ce que je recherche (mais merci encore). J'ai l'impression que dans la ligne de commande que vous m'avez fourni, on ne peut pas avoir des valeurs négatives ! C'est très bien, parce que quand ma batterie sera vide, une surproduction recommencera à remplir ma batterie.

C'est très difficile d'expliquer le contexte par écrit, mais j'espère avoir amené de l'eau à notre moulin.

Bonjour,

Merci pour votre retour, effectivement j'avais mal compris le principe. Le qualificatif "virtuel" prend tout son sens maintenant.

Cependant je ne peux m'empecher de penser que seule la colonne E est utile au calcul.

Je m'explique : vous indiquez que "seule votre sur-consommation est facturée". Donc, pour moi, il suffit de regarder le bilan en fin de journée, et de le sommer à celui de la journée précédente. On écrète à la capacité de la batterie, le surplus est perdu. Ensuite, d'après votre dernier retour, vous souhaitez garder et additionner les charges négatives (journées de surconsommation), j'imagine pour harmoniser vos valeurs avec les journées de surproduction. Cela dépend en fait de si le fournisseur calcule à l'heure, la journée, le mois…

Dans tous les cas, en utilisant simplement la colonne E, j'écrirai en F4 à étirer vers le bas :

=MIN(100; $E4+F3))

Et en F3, 0.

Cette formule devrait reprendre la charge du jour précédent, et ajouter le bilan du jour courant. En respectant la capacité maximale. Le dollar en E est pour étirer vers la droite.

J'espère que cela correspond davantage.

Non, malheureusement cela ne fonctionne pas même en renommant les cases de la formule.

En fait, je souhaiterais que la colonne E se comporte comme un indicateur de charge de batterie, c'est-à-dire même si la colonne E indique 100 depuis plusieurs jours, la moindre sous-production, C supérieur à B, entraine une baisse de la valeur de la colonne E. Du fait de masquer une valeur supérieur à 100 par le chiffre 100, cela n'entraine pas forcément la valeur 100 sur une soustraction. Je m'explique : si la valeur "150" et indiqué par 100, est que l'on soustrait 20(sous-production), je souhaiterais qu'il y ait 80 et non pas 100, car 130 serai toujours supérieur à 100.

Et identiquement, si E est à 0 pendant plusieurs jours, la moindre sur-production, B supérieur à C entraine une hausse de la valeur de E.

J'ai calculé les deux premières semaines manuellement (pour ensuite le faire sur l'année) pour montrer un peu mieux ce que je recherche.

Merci encore pour votre aide précieuse

image

Bonjour,

Oui c'est bien ce que je pensais c'est le calcul tout à fqit basique que vous cherchez au final, mais l'explication était trop confuse. Un exemple vaut mille mots.

Ci-après la formule mathématique classique pour garder un résultat entre deux bornes (en E4, à étendre vers le bas):

=MAX(0; MIN(100; E3+$D4))

Vous n'aviez jusqu'à présent pas mentionné la borne minimale, meme plutôt l'inverse puisque vous vouliez "soustraire la sous-production".

La formule est assez claire, 0 et 100 sont les bornes, et vous ajoutez la prod/déficit indiquée en colonne D à la charge de la veille.

Aie aïe aïe ! la formule n'est pas si basique que ça, car, voyez la différence entre la capture d'écran que j'ai remplie à la main (j'avais enlevé la colonne "remplissage de la batterie") et la capture d'écran que j'ai faite avec votre formule.

image

J'ai l'impression que cette formule écrête bien, mais tout en gardant la valeur négative ou sup à 100.

Le m'explique :

le samedi 4 mai (le jour que j'ai commencé mes relevés et potentiellement le début de la batterie, donc vide), j'ai consommé plus que j'ai produit. Donc pas de recharge de batterie. Donc 0

Le dimanche 5 mai, identique. Donc 0

Le lundi 5 mai, j'ai un excédant de 3 kWh, donc la batterie devrait être chargée de 3 kWh.

ETC...

Pour le lundi 12 mai, j'ai un déficit de production de -2.60 kWh, donc je devrais avoir (100-2.6)=97.4 alors qu'il est mentionné 100. Excel m'indique bien 100, mais prend en fait une valeur bien supérieure qui doit etre 1..-2.6=x toujours supérieur à 100 et donc il est mentionné 100. Et identique pour le dimanche 19 mai.

Pas facile d'expliquer, mais je peux peut-être vous faire parvenir le fichier ?

Merci encore

Bonsoir Cyril24, saboh12617, le forum

En résumé, d'après ce que je comprends :

Tant que les valeurs ajoutées en colonne E n'atteignent pas le seuil de 100, elles sont cumulées.

Une fois ce seuil de 100 atteint en colonne F, ce seuil reste bloqué à ce niveau, sauf en cas d'apparition d'une valeur négative en colonne E qui fera diminuer à nouveau ce seuil.

Pas testé les solutions de saboh12617 😔, joins un fichier.

Intéressant comme exercice maintenant que j'ai compris la problématique, j'ai mis un like 🥰 vu que je suis nul en formules.

Une solution en VBA 😍, je suis preneur.

klin89

Bienvenue Klin89 dans mon casse-tête.

Comme je n'avais pas les 30 post pour transmettre un fichier, je le tente par mon "drive".

Voici le lien : https://docs.google.com/spreadsheets/d/1xILNcukivklyRk3ypW382XVctkegISqe/edit?usp=sharing&ouid=11806...

Dès que tu atteins le seuil de 100 en colonne F, le "compteur" reste bloqué sur ce seuil, lequel diminue lorsque tu as une valeur négative en colonne E.

Oui, c'est ça ! je souhaite une formule qui peut faire ça ! Quand les surproductions (valeurs positives, colonne D) s'enchainent, la valeur de E n'excédent pas 100 et à la moindre sous-production (valeurs négatives, colonne D) la valeur de D se défalque de 100. Ce qui n'est pas forcément évident, car Excel ajoute bien les sur-productions, affiche 100, mais prend en compte la vraie valeur de toutes les additions ! Donc, quand il retire la valeur 2.6 le 12/05/2024 (avec la formule de Saboh "que je remercie"), E reste supérieur à 100.

image

Bonjour Cyril,

La formule que je vous ai donné est correcte, mais je crois que vous avez fait une erreur dans les références :

=MAX(0; MIN(100; E3+$D4))

Réfère à E3 = charge retenue du jour précédent, càd cellule immédiatement AU-DESSUS de la cellule courante, et D4 réfère à la charge/décharge du jour courant, càd cellule immédiatement à gauche de la cellule courante.

Je vous assure que l'erreur doit se trouver dans votre recopie car pour ma part j'ai testé la formule avant de vous l'envoyer, avec vos valeurs, et je suis retombé tout juste. Il n'y a pas a se compliquer la tete avec des SI ou autres conditions, c'est un calcul simple.

Edit : je viens de retester la formule, et je remarque que sur votre fichier drive les colonnes sont décalées de 1 vers la droite… La formule devient donc, En F3

=MAX(0;MIN(100;F2+E3))

Vous aviez raison ! Le problème se trouvait entre le siège et le clavier !

C'est super, vous avez répondu à toutes mes attentes (sans me renvoyer chier !) merci pour votre aide et surtout de votre patience !

Merci !

Je vous en prie.

Si par ailleurs vous voulez une formule unique étirable, toujours en se basant sur le fichier drive, vous pouvez remplacer le "100" dans la formule par

GAUCHE(M258;NBCAR(M258)-NBCAR(" kwh"))      ou       GAUCHE(M258;NBCAR(M258)-4)

Soit la formule finale en F3:

=MAX(0;MIN(GAUCHE(F$1;NBCAR(F$1)-4); $F2+E3))

étirable vers le bas et la droite.

La formule de ce matin me convient très bien ! Je l'ai tourné à toutes les sauces 100, 300, 600 etc....

Merci encore.

image

Re Cyril24,

Pour ne pas en rester là,

une macro toute simple qui garantit de ne pas dépasser les seuils indiqués et de descendre sous le seuil de 0.

Option Explicit
Sub test()
    Dim rng As Range, r As Range, e, col, cumul As Double
    With Sheets("Feuil1")
        Set rng = .Range("e2:e" & .Range("e" & .Rows.Count).End(xlUp).Row)
    End With
    col = Array(Array(100, 2), Array(300, 3), Array(600, 4), Array(900, 5), Array(1200, 6))
    For Each e In col
        cumul = 0
        For Each r In rng
            cumul = cumul + r.Value
            ' Si le cumul dépasse le seuil indique, on le fixe au seuil indique
            If cumul > e(0) Then
                cumul = e(0)
            End If

            ' Si le cumul est négatif, on le fixe à 0
            If cumul < 0 Then
                cumul = 0
            End If
            ' Placer le résultat dans la colonne correspondante
            r(, e(1)).Value = cumul
        Next
    Next
End Sub

Edit : la ligne vide sous l'en-tête a été supprimée dans le fichier joint.

klin89

super

Re Cyril24,

À partir de la colonne 6, tu peux ajouter autant de colonnes que nécessaire pour le seuil des kWh.

Option Explicit
Sub test1()
    Dim i As Long, j As Long, cumul As Double, kwh As Long, spacePos As Byte
    With Sheets("Feuil1")

        ' Boucle pour parcourir les colonnes à partir de la 6ème colonne (colonne F)
        ' jusqu'à la dernière colonne non vide dans la première ligne.
        For j = 6 To .Cells(1, .Columns.Count).End(xlToLeft).Column

            ' Initialisation du cumul à 0 pour chaque colonne
            cumul = 0

            ' Trouver la position de l'espace dans la cellule (ligne 1, colonne j)
            spacePos = InStr(.Cells(1, j), " ")

            ' Extraire la valeur numérique avant l'espace (le nombre de kWh)
            kwh = Left(.Cells(1, j), spacePos - 1)

            ' Boucle pour parcourir les lignes de la colonne E (colonne 5),
            ' à partir de la ligne 2 jusqu'à la dernière ligne non vide
            For i = 2 To .Range("e" & .Rows.Count).End(xlUp).Row

                ' Ajouter la valeur de la colonne E à chaque ligne au cumul
                cumul = cumul + .Cells(i, 5).Value

                ' Si le cumul dépasse le seuil (kwh), on le fixe au seuil
                If cumul > kwh Then
                    cumul = kwh
                End If

                ' Si le cumul est négatif, on le fixe à 0
                If cumul < 0 Then
                    cumul = 0
                End If
                ' Place la valeur du cumul dans la cellule correspondante (ligne i, colonne j)
                .Cells(i, j).Value = cumul
            Next
        Next
    End With
End Sub

klin89

Rechercher des sujets similaires à "comment ecreter valeur"