XL 2016 Compter les changements de prix et les qualifier (hausses/baisses)

ador_matt

XLDnaute Junior
Bonjour,

Auriez vous la gentillesse de m'aider à solutionner le problème suivant:
Calculer un nombre de changements de prix sur une période donnée (si un prix change vs. le prix précédent).

Attention, il manque parfois des prix dans la série, l'idée étant de remonter dans le temps pour retrouver le dernier prix historique...
Exemples: "ref3"/"ref4"

Ensuite je voudrais pouvoir compter le nbr de hausses et de baisses de prix sur la période.
Ci-joint un exemple avec le resultat espéré.

Merci d'avance!!
 

Pièces jointes

  • Variation de prix dans le temps.xlsx
    12.5 KB · Affichages: 9

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir @ador_matt :) ,

Avec une fonction personnalisée en VBA : Changement(plage, xtype) :
  • plage est la plage en ligne des valeurs
  • xtype est le type de retour souhaité
  • xtype égal à 0 => on compte les changements
  • xtype négatif => on compte les baisses
  • type positif => on compte les hausses

Voir les formules en H4, I4 et J4 à recopier vers le bas.

Le code est dans module1:
VB:
Function Changement&(xplage As Range, xtype&)
Dim t, n&, j&, res&
   t = xplage.Value
   For j = 1 To UBound(t, 2)
      If t(1, j) <> "" Then n = n + 1: t(1, n) = t(1, j)
   Next j
   If xtype < 0 Then
      For j = 1 To n - 1: res = IIf(t(1, j) > t(1, j + 1), res + 1, res): Next
   ElseIf xtype = 0 Then
      For j = 1 To n - 1: res = IIf(t(1, j) <> t(1, j + 1), res + 1, res): Next
   Else
      For j = 1 To n - 1: res = IIf(t(1, j) < t(1, j + 1), res + 1, res): Next
   End If
   Changement = res
End Function



 

Pièces jointes

  • ador_matt- nbr variation- v1.xlsm
    18.9 KB · Affichages: 4

ador_matt

XLDnaute Junior
Bonsoir et merci @mapomme,

Je dois admettre ne pas trop être à l'aise voir totalement débutante avec la création d'un code VBA personnalisé mais grâce à vous je viens de m'initier!

Ca semble fonctionner parfaitement, à moi de l'industrialiser...même je dois avouer que le code en lui même me dépasse complètement 😱 et qu'il me serait impossible de l'expliquer 🤯

Merci encore!
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re,

Voici le fichier v1b dont le code est commenté.

Soyez rassuré. On ne devient pas utilisateur confirmé du VBA en quelques jours. Il faut un peu de temps.

D'autant plus que les versions modernes d'Excel intègre un outil "Power Query" qui permet bien souvent de se passer de VBA (je pense que Excel 2016 l'intègre) et il y a aussi la version Office 365 avec ses nouvelles fonctions très élaborées qui permettent aussi de se passer de VBA.

C'est pourquoi de nos jours, on peut trouver différentes réponses à une même question qui utilisent des formules à l'ancienne ou du VBA ou Power Query ou bien des formules avec les nouvelles fonctions incluses dans O365.
 

Pièces jointes

  • ador_matt- nbr variation- v1b.xlsm
    22.1 KB · Affichages: 4

mapomme

XLDnaute Barbatruc
Supporter XLD
Re,

Une version un peu capillotractée avec rien que des formules.
On passe par une feuille intermédiaire "Auxil" pour regrouper les valeurs non vides à partir de la colonne D.
Les calculs (changements, hausses et baisses) se font colonnes H à J sur la feuille auxil.
Sur la feuille initiale, on vient chercher les résultats de la feuille "Auxil".
Voir le fichier joint.
 

Pièces jointes

  • ador_matt- nbr variation- v2 (formules).xlsx
    18.9 KB · Affichages: 7

ador_matt

XLDnaute Junior
Bonjour!
Merci pour ces différentes solutions, c'est vraiment très gentil de votre part.
Voilà plusieures version que je vais tester et essayer de comprendre par moi même(toujours plus gratifiant), un excellent exercice pour consolider mon piètre niveau :).

Je reviens vers vous en cas de question(s)!
Excellente journée.
Mathilde
 

ador_matt

XLDnaute Junior
RE-bonjour,

J'ai bien mis en place avec succès le premier code VBA, c'est top ça fait le job!
Sans vouloir abuser, je me demandais si par hasard il y aurait une solution "simple" pour ajouter la moyenne des hausses et des baisses en pourcentage sur la période?

Merci beaucoup!!
 

Discussions similaires

Statistiques des forums

Discussions
312 210
Messages
2 086 277
Membres
103 170
dernier inscrit
HASSEN@45