Analyser des tendances

thesentry Messages postés 1014 Date d'inscription   Statut Membre Dernière intervention   -  
JvDo Messages postés 1978 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'ai plusieurs produits avec pour chacun d'entre eux des données en % et par semaine.
En gros pour un produit Y :
Semaine 40 xx%
Semaine 39 yy%
Semaine 38 ww%
Etc

J'aimerais trouver un moyen d'analyser les variations des données pour un même produit sur plusieurs semaines (le nombre de semaine à analyser est à définir).

Avez vous une idée ?
Merci
BàV
TS


A voir également:

10 réponses

JvDo Messages postés 1978 Date d'inscription   Statut Membre Dernière intervention   859
 
Bonjour à tous,

A priori, tu n'as pas besoin de macro.
Il te suffit de savoir comment tu veux analyser tes données.

Le cas le plus simple serait de comparer le taux d'une semaine avec celui de la précédente. Mais tu n'aurais pas besoin de CCM pour faire ça.

Tu parles de tendance. Raymond Pentier t'as proposé la courbe de tendance qu'excel te calcule "gratuitement".
Tu n'es pas obligé de tracer cette courbe mais simplement d'utiliser la formule, de dériver le polynôme et de prendre sa valeur en la semaine qui t'intéresse, de la comparer avec soit la même dérivée en la semaine précédente soit la valeur, toujours en la semaine précédente, du polynôme de tendance de la semaine précédente.
Tu établis une gradation de ce ratio pour décider si l'augmentation ou diminution est faible, moyenne, forte ....

Il faut peut-être que tu nous dises si tu calcules ta tendance sur un nombre glissant de semaine et quel degré est pertinent pour ta tendance.

Mets un sous ensemble de tes données à disposition sur cjoint avec le résultat que tu veux obtenir et ton souci sera rapidement réglé.

Cordialement
2
thesentry Messages postés 1014 Date d'inscription   Statut Membre Dernière intervention   16
 
Bonjour JvDo,

Je n'ai pas tout suivi dans votre explication...
Ci-joint un exemple de fichier : http://www.cjoint.com/c/EJtmzigTn4U

Oui l'idéal serait d'analyser les tendances sur un nombre glissant de semaine (par exemple les 10 dernières semaines [donc chaque semaine on décale d'une semaine pour être à jour]).

Comme expliqué dans le document, il faudrait que pour chaque produit, j'obtienne une tendance et non une moyenne pour voir si, globalement, ça évolue faiblement, fortement ou si ça stagne par exemple.

J'ai un peu de mal à exprimer mon besoin, excusez moi.

Je ne pense pas que ce soit très complexe, l'avantage de la macro me permettra d'analyser mes 11 000 produits, sans avoir à le faire article par article.

J'ai voulu utiliser la fonction pente mais ne maîtrisant pas cet outil, j'ai laissé tomber.

Merci
BàV
TS
0
thesentry Messages postés 1014 Date d'inscription   Statut Membre Dernière intervention   16 > thesentry Messages postés 1014 Date d'inscription   Statut Membre Dernière intervention  
 
Je suis obligé de supprimer mon lien car il y a mon prénom et nom dans le nom du fichier (pc d'entreprise oblige...)
Merci
0
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
Par exemple
plagex =DECALER(Feuil1!$A$4;0;EQUIV(Feuil1!$B$2;Feuil1!$4:$4;0)-1;1;Feuil1!$B$2-Feuil1!$B$1)
Définit la plage
Par rapport à $A$4
En décalant de
- 0 lignes
- EQUIV($B$2;$4:$4;0)-1 colonnes (ici, equiv renvoie le rang de $B$2 dans la ligne $4
Et contenant
- 1 ligne
- $B$2-$B$1 colonnes

Cdlmnt
1
thesentry Messages postés 1014 Date d'inscription   Statut Membre Dernière intervention   16
 
Bonjour ccm81,

Jai essayé de réutiliser votre formule mais sans succès...

Comment avez-vous défini que plageX=decaler........ ?

Dans votre fichier, la ref est la cellule A3. Pourquoi A3 ? cette cellule contient "à la main pour 31-38".

Ensuite, aucun décalage de ligne, ça j'ai capté.

Le EQUIV, j'ai compris. Pourquoi -1 après ?

Pourquoi hauteur = 1 ?

Pour la largeur, c'est ok.

Merci
BàV
TS
0
JvDo Messages postés 1978 Date d'inscription   Statut Membre Dernière intervention   859
 
Bonjour à tous,

ccm81 :
C'est superbe ton classeur.
Tu feras attention pour le nombre de colonnes de tes plages car il manque la semaine 37 en ligne 4 ce qui fait que ton calcul est bon si 37 est dans plagex mais il manque 1 colonne si plagex ne contient pas 37.
Ça peut se résoudre par une différence d'EQUIV() mais peut-être que le fichier réel n'a pas de trous. Dans ce cas, il faudra un +1 dans le paramètre colonnes de decaler().
thesentry , tu sembles te satisfaire d'une tendance linéaire; c'est parfait.
Par curiosité, j'ai regardé en cubique, les résultats sont très différents et valorisent un peu plus les dernières valeurs de l'intervalle.

Petite idée, ccm81, si tu as le temps et l'envie : faire ressortir les 2 graphiques associés à la plus forte et à la plus faible pente.
thesentry aura ainsi un focus sur ses 2 produits extrêmes.

Cordialement
0
thesentry Messages postés 1014 Date d'inscription   Statut Membre Dernière intervention   16
 
Merci de ne pas considérer un niveau Excel que je n'ai pas.

J'en suis encore à chercher comment on affecte une formule à une plage de cellule.
Plagex, plagey, ok mais comment ccm81 a t-il affecté la formule DECALER à des plages de cellule ?
0
JvDo Messages postés 1978 Date d'inscription   Statut Membre Dernière intervention   859
 
Bonjour,

En fait, tu n'affectes pas une formule à une plage mais plutôt à un nom qui adresse une plage.
Pour faire cela, tu vas dans définir un nom, tu saisis le nom (plagex par exemple) et tu rentres la formule de ccm81.
Ensuite, quand tu utiliseras les noms plagex, y ou z dans une formule, tu utiliseras en fait une plage de cellules.

Pour voir à quelle plage de cellules ces noms font référence, tu n'as qu'à aller dans le gestionnaire de noms, choisir le nom qui t'intéresse puis cliquer dans la zone le définissant et qui contient les formules. Tu verras alors apparaître en pointillé clignotant la plage référencée.
Tu pourras si tu veux jouer avec les +1 pour vérifier l'effet que ça a sur la plage.

Cordialement
0
Kuartz Messages postés 852 Date d'inscription   Statut Membre Dernière intervention   61
 
Bonjour,

Je ne comprend pas exactement la question. Qu'est ce que vous entendez par analyser? En attendant, ce code permet d'extraire les données en fonction des semaines à analyser et du produit.

Sub Code()

Dim DL As Long, Début As String, Fin As String, Produit As String

Produit = InputBox("Entrer le nom du produit à analyser")

If Produit = "" Then Exit Sub

Début = InputBox("Entrer le numéro de la première semaine à analyser")

If Début = "" Then Exit Sub

Fin = InputBox("Entrer le numéro de la dernière semaine à analyser")

If Fin = "" Then Exit Sub

DL = Cells(Application.Rows.Count, 1).End(xlUp).Row

For i = 1 To DL 'Si vos données commencent en ligne 1 (enlevez les titres)

If Range("C" & i) = Produit Then 'Si le produit se trouve en colonne C
    If Range("A" & i) >= CInt(Début) Then 'Si les numéros de semaine se trouvent en A
        If Range("A" & i) <= CInt(Fin) Then
            Valeurs = Valeurs & "Résultats pour la SEMAINE " & Range("A" & i).Value & ":           " & Range("B" & i).Value * 100 & "%" & vbLf 'Si les pourcentages se trouvent en B
        End If
    End If
End If

Next i

Résultat = MsgBox(Valeurs, vbOKOnly, "Résultats Produit : " & Produit & ".")

End Sub
0
thesentry Messages postés 1014 Date d'inscription   Statut Membre Dernière intervention   16
 
Bonsoir,

Avant de saisir votre code, je préfère ré-expliquer.

J'ai un tableau composé comme suit :
- en-tête de colonne : Semaine (S41,S40,S39,S38...etc).
- en-tête de ligne : des articles divers
- sur les croisements :un pourcentage de réussite

L'idée est de trouver une astuce pour analyser automatiquement les variations du pourcentage de réussite sur l'ensemble des semaines (par article bien sûr). LA finalité est de dégager une tendance assez pointue (dire si ça augmente fortement, lentement ou à l'inverse si ça diminue fortement, lentement...etc.)

Merci
BàV
0
Raymond PENTIER Messages postés 58988 Date d'inscription   Statut Contributeur Dernière intervention   17 353
 
Tu as plusieurs outils, en particulier
- la courbe de tendance pour chaque série du graphique,
- le tableau croisé dynamique (et le graphique croisé dynamique associé).

C'est bien, la retraite ! Surtout aux Antilles ... :-)
Raymond (INSA, AFPA, CF/R)
0
thesentry Messages postés 1014 Date d'inscription   Statut Membre Dernière intervention   16
 
J'ai plus de 11 000 produits donc 11 000 graphiques... Solution pas viable.

Et pour le TCD, j'en ai fait un, ce qui m'a justement permis d'obtenir le pourcentage de réussite par semaine et par produit.
Pour le GCD, même problème qu'au dessus (plus de 11 000 refs).

Merci
BàV

--
0
Kuartz Messages postés 852 Date d'inscription   Statut Membre Dernière intervention   61 > thesentry Messages postés 1014 Date d'inscription   Statut Membre Dernière intervention  
 
Mhhhh. Je vais y réfléchir, mais votre projet est pour moi d'assez grande ampleur.
0
Kuartz Messages postés 852 Date d'inscription   Statut Membre Dernière intervention   61
 
Re,

Je vous propose un code qui déjà va extraire les données dont vous avez besoin. Je réfléchis à une manière d'"analyser la tendance".

Sub Code()

Dim DL As Long, Début As String, Fin As String, Produit As String, DC As Long

Produit = InputBox("Entrer le nom du produit à analyser")

If Produit = "" Then Exit Sub

Début = InputBox("Entrer le numéro de la première semaine à analyser <sans le S, (exemple 1, 12)>")

If Début = "" Then Exit Sub

Fin = InputBox("Entrer le numéro de la dernière semaine à analyser <sans le S, (exemple 1, 12)>")

If Fin = "" Then Exit Sub

DL = Cells(Application.Rows.Count, 1).End(xlUp).Row 'Si la colonne 1 est bien remplie jusqu'à la fin du tableau

DC = Cells(1, Application.Columns.Count).End(xlToLeft).Column 'si la ligne 1 est bien remplie jusqu'à la fin du tableau

For i = 2 To DL 'Si produits vont de la ligne 2 à la ligne xxx
For j = 2 To DC 'Les les semaines vont de la colonne 2 à la ligne xxx

If Range("A" & i).Value = Produit Then
    If Right(Cells(1, j), 2) >= Val(Début) Then
        If Right(Cells(1, j), 2) <= Val(Fin) Then
            Valeurs = Valeurs & "Résultats pour la SEMAINE " & Right(Cells(1, j), 2) & ":           " & Cells(i, j).Value * 100 & "%" & vbLf
        End If
    End If
End If

Next j
Next i

Résultat = MsgBox(Valeurs, vbOKOnly, "Résultats Produit : " & Produit & ".")

End Sub


Cordialement.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Raymond PENTIER Messages postés 58988 Date d'inscription   Statut Contributeur Dernière intervention   17 353
 
"J'ai plusieurs produits ... données pour un même produit sur plusieurs semaines ... Avez vous une idée ?"
J'ai donc avancé mon idée, sans imaginer un seul instant que "plusieurs" pouvait signifier "plus de 11 000" !
Et comme Kuartz, je ne pense pas qu'il y ait de solution sans macros ...
Cordialement.
0
Kuartz Messages postés 852 Date d'inscription   Statut Membre Dernière intervention   61
 
Re,

Bon j'y ai passé une bonne partie de l'après-midi mais quand on aime on ne compte pas.

Je vous ai fait un fichier exemple assez sympa que vous pouvez adapter. Si besoin, je peux vous aider.

https://www.cjoint.com/c/EJnp7oDis7f

Je peux encore améliorer en proposant un export du graph. Mais je ferai ça demain car je ne trouve pas la solution ce soir..

Cordialement.
0
thesentry Messages postés 1014 Date d'inscription   Statut Membre Dernière intervention   16 > Kuartz Messages postés 852 Date d'inscription   Statut Membre Dernière intervention  
 
Re Kuartz,

Votre code peut m'être très utile dès lors que j'ai ciblé le produit sur lequel je dois analyser ses tendances.
Mais il ne me permet pas de faire un premier filtre malheureusement pour voir justement si un produit est "critique" ou non.
(critique = forte variation sur un nombre de semaine donnée).
0
Kuartz Messages postés 852 Date d'inscription   Statut Membre Dernière intervention   61
 
thesentry, existez-vous toujours?
0
Kuartz Messages postés 852 Date d'inscription   Statut Membre Dernière intervention   61
 
Bon... on dirait bien que j'ai passé tout ce temps là pour rien... Je me dis merci quand même pour avoir passé tout ce temps sur ce fichier :

Merci Kuartz !

Cordialement.
0
thesentry Messages postés 1014 Date d'inscription   Statut Membre Dernière intervention   16
 
Bonjour,

Non non je ne suis pas du genre à laisser des messages sans suite. Je vais bosser sur ce fichier cet après-midi. Je vous en ferai un retour :)

Merci pour votre code en tout cas.
Bonne journée,
BàV
TS
0
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
Bonjour à tous

Un début d'essai
http://www.cjoint.com/c/EJtnm0QOBf2

Cdlmnt
0
Kuartz Messages postés 852 Date d'inscription   Statut Membre Dernière intervention   61
 
Re ccm81, re thesentry,

Il m'est extrêmement difficile de comprendre votre besoin. En effet, vos besoins étaient d'au départ d'analyser une tendance pour un produit donné. Vous me parlez ici de "produit critique".

Pour mettre en évidence immédiatement sur la feuille excel un "produit critique" (ce qui devrait être possible sans aucun problème), il faudrait d'abord me définir la notion de critique. J'ai besoin de savoir sur combien de semaine et de combien faudrait-il que la variation soit pour savoir qu'un produit est "critique".
0
thesentry Messages postés 1014 Date d'inscription   Statut Membre Dernière intervention   16
 
Bonjour ccm81 et re Kuartz,

Vous avez raison et je travaille déjà dessus pour la définition du critique. Mais ça, à la limite, ce n'est pas très grave, je me servirai d'une règle de mise en forme conditionnelle pour définir les produits critiques ou non.

@ccm81 : vous avez donc utilisé la notion de pente. Par exemple, pour le produit A, vous obtenez 0.0093. Qu'est ce que cela signifie concrètement ? que si on traçait la courbe représentative, la courbe aurait un coefficient directeur de 0.0093 ?

Merci à vous en tout cas,
BàV
TS
0
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
Par exemple, pour le produit A, vous obtenez 0.0093. Qu'est ce que cela signifie concrètement ? que si on traçait la courbe représentative, la courbe aurait un coefficient directeur de 0.0093
Oui, c'est la pente de la droite de régression (linéaire) modélisant la série des couples (x,y). Pour le contrôler, tu traces le nuage de points correspondant, tu ajoutes la droite de régression, et tu coches l'option ecrire l'équation de la courbe
Cdlmnt
0
thesentry Messages postés 1014 Date d'inscription   Statut Membre Dernière intervention   16
 
D'accord !

en récupérant le code de la formule Pente, comment le rendre plus "général" ?

En gros : la macro devra me calculer la pente pour tous les produits, en me demandant la semaine de début et la semaine de fin.
La macro doit détecter la taille du tableau (le nombre de ligne variera en fonction du nombre de produits et le nombre de colonne variera également en fonction du nombre de semaine).

Je ne suis pas doué en VBA, voici donc ce que j'ai récupéré de vos macros respectives :


Sub CalculPente()

Dim SemaineDebut As String
Dim SemaineFin As String



SemaineDebut = InputBox("Veuillez saisir la semaine de DÉBUT (sans le S, exemple : S41 = 41)")

If SemaineDebut = "" Then Exit Sub

SemaineFin = InputBox("Veuillez saisir la semaine de FIN (sans le S, exemple : S41 = 41)")

If SemaineFin = "" Then Exit Sub

'Formule PENTE


Range().Select
ActiveCell.FormulaR1C1 = "=SLOPE(RC[-10]:RC[-1],R[-1]C[-10]:R[-1]C[-1])"
Range().Select
Selection.AutoFill Destination:=Range()
Range().Select
Range().Select

End Sub
0
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
En gros : la macro devra me calculer la pente pour tous les produits, en me demandant la semaine de début et la semaine de fin.
Je ne comprends pas bien ta question
Si mon essai correspond à ce que tu veux, tu n'as pas vraiment besoin de macro.
1. Tu mets tes n° de semaine de début et de fin en B1 et B2
2. Tu tires la formule en B5 vers le bas
3. A toi de voir comment tu vas mettre en évidence les produits critiques
Le même avec le graphique correspondant au produit entré en B3
http://www.cjoint.com/c/EJtoKIqVgk2
Cdlmnt
0
thesentry Messages postés 1014 Date d'inscription   Statut Membre Dernière intervention   16
 
Autant pour moi ccm81, je n'avais pas saisi l'intérêt de ton code en modifiant les données en B1 et B2. Génial !

Tu peux m'expliquer comment utiliser la formule DECALER avec un tableau dont les dimensions ne sont pas définies ?

EDIT : à savoir que le nombre d'articles évolue, que chaque semaine ce tableau sera mis à jour. Aucune constante donc, que des variables.
0
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
Il vaut mieux éviter la multiplication des commentaires, et répondre à la fin de la discussion, sinon, on ne sait plus où on en est

Dans votre fichier, la ref est la cellule A3. Pourquoi A3 ? cette cellule contient "à la main pour 31-38".
Dans mon dernier envoi, c'est A4, c'est la première cellule de la ligne 4, histoire de se caler sur une colonne fixe
Ensuite, aucun décalage de ligne, ça j'ai capté.
Le EQUIV, j'ai compris. Pourquoi -1 après ?
Equiv renoie le rang de sem fin dans la ligne 4, par exemple pour 38, renvoie 6, mais ça fait un décalage de 5 par rapport à A4 d'où le -1
Pourquoi hauteur = 1 ?
plage contenant une seule ligne

Cdlmnt
0
thesentry Messages postés 1014 Date d'inscription   Statut Membre Dernière intervention   16
 
Il vaut mieux éviter la multiplication des commentaires, préférer répondre à la fin de la discussion, sinon, on ne sait plus où on en est 


Tout juste !

C'est un petit peu plus clair. Je regarderai de nouveau après les poulardes et les litrons !

EDIT : comment avoir définit la plageX et la plageY en l'associant à une formule ?

Merci :-)
BàV
TS
0
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
Salut JvDo

Effectivement, il manque bien la colonne 37, et je ne l'avais pas vu :-(. Ce qui est dur à avaler, c'est que dans ma première écriture des formules, j'avais bien mis le +1 au nombre de colonnes (j'ai bien mes classiques en ce qui concerne les suites) et comme ça ne marchait pas, je l'ai enlevé sans me poser plus de question (la honte)
Bref, s'il y a des risques de trous dans les semaines, il faudra ajouter un equiv etc .... dans la définition des plages, mais là, ça sera à thesentry de nous le dire, et même chose en ce qui concerne les graphiques

J'ai ajouté la semaine 37 avec la moyenne de S36 et S38
http://www.cjoint.com/c/EJunheT7YQ2

Cordialement
0