Effectuer une variation par rapport à une liste déroulante - Excel

Bonjour, je me tourne vers vous car je suis confronté au problème suivant : j'essaye d'effectuer une variation (VF-VI)/VI par rapport à une liste déroulante qui vient modifier les valeurs initiales.

EX : Pour mon mois de Septembre je souhaite afficher la variation par rapport à Août selon l'activité X. Aussi, avec mon menu déroulant je peux basculer sur le mois de Octobre et souhaite afficher la variation par rapport à Septembre selon l'activité Y.

Voici à quoi ressemble mon tableau.

"liste déroulante mois"

"liste déroulante activité"MensuelRapport en %Variation M-1
Produits d'exploitationXXX €100%

? (XXX€ MOIS SEPTEMBRE / XXX MOIS AOUT)/XXX MOIS AOUT

C.A HT

XXX €

75%?(XXX€ MOIS SEPTEMBRE / XXX MOIS AOUT)/XXX MOIS AOUT
SubventionsXXX €25%?(XXX€ MOIS SEPTEMBRE / XXX MOIS AOUT)/XXX MOIS AOUT

Cordialement,

Bonjour et bienvenue sur le forum

Tu devrais joindre ton fichIer, éventuellement en modifiant des données pour les rendre "insensibles".

Bye !

7test1.xlsx (30.39 Ko)

Voici le fichier en question,

Merci ! ;)

Un essai à tester. Te convient-il ?

5test-v1.xlsm (44.97 Ko)
Option Explicit

Dim ms, tablo1, tablo2, tabloR()
Dim i&, n&, moisEnC$, moisPrec$

Sub MettreAjour()

    ms = Array("Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", _
                "Août", "Septembre", "Octobre", "Novembre", "Décembre")
    moisEnC = Range("B2")
    For n = 0 To 11
        If ms(n) = moisEnC Then
            If n = 0 Then
                moisPrec = ms(11)
            Else
                moisPrec = ms(n - 1)
            End If
            Exit For
        End If
    Next n

    tablo2 = Range("D6:D" & Range("D" & Rows.Count).End(xlUp).Row)
    Range("B2") = moisPrec
    tablo1 = Range("D6:D" & Range("D" & Rows.Count).End(xlUp).Row)
    Range("B2") = moisEnC
    ReDim tabloR(1 To UBound(tablo2, 1), 1 To 1)
    For i = 1 To UBound(tablo2, 1)
        If tablo2(i, 1) <> "" And IsNumeric(tablo2(i, 1)) And tablo1(i, 1) <> 0 Then
            tabloR(i, 1) = (tablo2(i, 1) - tablo1(i, 1)) / tablo1(i, 1)
        End If
    Next i
    Range("L6").Resize(UBound(tablo2, 1), 1) = tabloR
End Sub

Bye !

Merci pour les lignes VBA malheureusement je ne suis pas en mesure de les comprendre :/ ni de les implémenter dans mes feuilles EXCEL. Si tu as la solution sans passer par VBA je suis preneur :)

Merci Beaucoup

Je crois avoir réussi, petite correction la variation n'est pas If tablo2(i, 1) <> "" And IsNumeric(tablo2(i, 1)) And tablo1(i, 1) <> 0 Then tabloR(i, 1) = (tablo2(i, 1) - tablo1(i, 1)) / tablo1(i, 1) mais If tablo2(i, 1) <> "" And IsNumeric(tablo2(i, 1)) And tablo1(i, 1) <> 0 Then
tabloR(i, 1) = (tablo1(i, 1) - tablo2(i, 1)) / tablo2(i, 1)

Merci énormément ça m'a donné envie de me mettre au VBA :)

Alors, si cela te va comme ça, Bravo !

Mais je pensais qu'une évolution se calculait en retranchant la valeur la plus ancienne (tablo1) à la plus récente (tablo2) et en divisant le résultat par la plus ancienne (tablo1)

Bye !

Rechercher des sujets similaires à "effectuer variation rapport liste deroulante"