Tableau Croisé Dynamique : traitement 7500 lignes

Résolu/Fermé
TeTo25 Messages postés 20 Date d'inscription vendredi 13 janvier 2017 Statut Membre Dernière intervention 21 octobre 2020 - 22 oct. 2018 à 15:07
Raymond PENTIER Messages postés 58725 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 19 novembre 2024 - 25 oct. 2018 à 01:51
Bonjour,

Premièrement, je tiens à préciser que par soucis de confidentialité, je ne peux transmettre mon fichier. Je vais donc essayer d'expliquer au mieux la situation.

J'ai un problème avec des données exportées depuis un ERP (Louxor) concernant les commandes reçues depuis le 01/01/17.

Ce tableau contient environ 7500 lignes.
Les infos sont :
Client -> Référence -> Date de commande -> Quantité commandée

Il y a environ 50 clients différents
Chaque client peut avoir de 1 à 100 références (Total de 550 références)
Chaque référence peut être commandée entre 1 et 100 fois.
Parfois plusieurs commande de la même référence sont passées le même jour et pour la même quantité.

Quand je fais un TCD le nombre de ligne descend à 5000, j'ai donc une perte de 2500 commandes.

Je pense que cela est du aux commandes de même quantité de la même date.

Comment cela est-il corrigeable ?

Voici un aperçu du résultat de mon TCD




Quelqu'un saurait créer des graphiques de répartition des commandes sur les 22 mois pour chaque référence ?

4 réponses

Raymond PENTIER Messages postés 58725 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 19 novembre 2024 17 240
23 oct. 2018 à 04:02
Bonjour.

Très risqué, d'essayer de solutionner un problème dont on n'a pas les données ...
Toutefois je pense que tu n'as perdu 2500 données ; simplement tu as des doublons client+référence, qui n'occupent qu'une ligne.
Fabrique donc une mini-base avec 25 lignes, 3 clients et 4 références.
On travaillera dessus.
 1) Tu vas dans https://www.cjoint.com/ 
2) Tu cliques sur [Parcourir] pour sélectionner ton fichier (15 Mo maxi)
3) Tu défiles vers le bas pour cliquer sur le bouton bleu [Créer le lien Cjoint]
4) Au bout de quelques secondes la deuxième page s'affiche, avec le lien en gras ; tu fais un clic-droit dessus et tu choisis "Copier le lien"
5) Tu reviens dans ta discussion sur CCM, et dans ton message tu fais "Coller".
=>Voir la fiche https://www.commentcamarche.net/faq/29493-utiliser-cjoint-pour-heberger-des-fichiers
0
TeTo25 Messages postés 20 Date d'inscription vendredi 13 janvier 2017 Statut Membre Dernière intervention 21 octobre 2020 1
23 oct. 2018 à 08:28
Bonjour,

Voici la mini-base : https://www.cjoint.com/c/HJxgxpZojXm

Je n'avais pas fait attention mais il y avait également une donnée qui correspond aux variantes articles.
Cette données m'a permis de diminuer la perte lors du passage en TCD, mais il reste toujours des commandes identiques (Client/Ref/Var/Date/Qté)
0
TeTo25 Messages postés 20 Date d'inscription vendredi 13 janvier 2017 Statut Membre Dernière intervention 21 octobre 2020 1
23 oct. 2018 à 11:43
Je continue de chercher de mon côté.

Lorsque je créer un graphique manuellement pour une référence, si il n'y a pas de doublon de date tout se passe bien, si il y en a un, le graphique ne m'affiche pas le total :



Pour le 14/12/17 La quantité commandée totale est de 130 000u
Or sur le graphique on ne lit que 100 000, je n'arrive pas à trouver de solution à ce problème.

Sur la petite base, je pourrais bien effectuer une somme pour les doublons, mais pour le grand fichier de 7500 lignes, ça risque d'être un peu compliqué...

De plus j'ai essayé de faire une macro pour créer un graphique automatiquement à partir d'une sélection mais je n'y suis pas arrivé... Bien que je vais cibler les références les plus commandées pour les graphiques, ça risque de me prendre très très longtemps....
0
Raymond PENTIER Messages postés 58725 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 19 novembre 2024 17 240
Modifié le 23 oct. 2018 à 18:20
Le graphique ne fait que traduire le tableau en image.
Si tu n'as nulle part dans ton tableau le cumul pour le 14/10, il ne peut pas apparaître miraculeusement dans le graphique ! En fait tu as deux barres superposées pour cette date-là ...
Tu peux essayer de mettre en F2 la formule
=SI(D2=D1;"";SOMME.SI($D$2:$D$35;D2;$E$2:$E$35))
à recopier vers le bas, et à insérer le graphique à partir des colonnes D et F ...
0
TeTo25 Messages postés 20 Date d'inscription vendredi 13 janvier 2017 Statut Membre Dernière intervention 21 octobre 2020 1
24 oct. 2018 à 08:24
Bonjour Raymond,

J'ai tenté votre formule, elle ne fonctionne pas totalement car elle ne prends pas en compte les différentes références d'articles et leurs variantes.
Cependant, je n'avais pas pensé à trouver une fonction de ce type pour solutionner mon problème.
En m'inspirant de votre solution, j'ai trouver la formule magique :

=SI(D2=D1;"";SOMME.SI.ENS($E$2:$E$35;$B$2:$B$35;B2;$C$2:$C$35;C2;$D$2:$D$35;D2))


On somme les valeurs qui ont une référence article, une variante et une date de commande identiques sauf si la somme à déjà été réalisée

Merci de votre aide et de votre implication!
0
TeTo25 Messages postés 20 Date d'inscription vendredi 13 janvier 2017 Statut Membre Dernière intervention 21 octobre 2020 1
23 oct. 2018 à 15:58
J'ai tenté de créer une macro pour supprimer les doublons en les sommants :

Sub Total()
'
'
'

'-------------------------
' Définition des variables

Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim i2 As Integer
Dim j2 As Integer
Dim i3 As Integer
'------------------------
' Initialisation des variables


i = 2
j = 0
k = 0
i2 = 0
j2 = 0
i3 = 0


'-----------------------
' Programme
    
    k = i
A:
        
        While Range("B" & i) = Range("B" & i + 1)
          i = i + 1
        Wend
        j = i
B:
        For i2 = k To j
            If Range("C" & i2) <> Range("C" & i2 + 1) Then
            j2 = i2
            GoTo C
            Else
            End If
        Next i2
C:
        For i3 = k To j2
D:
            If Range("D" & i3) = Range("D" & i3 + 1) Then
                Range("E" & i3) = Range("E" & i3) + Range("E" & i3 + 1)
                Rows(i3 + 1).Delete
                GoTo D
            Else
            End If
        Next i3
        
        k = j2 + 1
        
        If j2 = j Then
            i = i + 1
            GoTo A
        Else
            GoTo B
        End If
End Sub


Mais elle se bloque dans une boucle infinie et fait planter excel (Le mode pas à pas ne me donne aucun détail non plus)
0
TeTo25 Messages postés 20 Date d'inscription vendredi 13 janvier 2017 Statut Membre Dernière intervention 21 octobre 2020 1
23 oct. 2018 à 17:09
D'après des essais avec des MsgBox (pour simuler un mode pas à pas)

La boucle infinie se trouve au niveau du "GoTo B" ce qui est assez incompréhensible...

L'erreur doit être sous mon nez, mais je ne la vois pas. J'espère qu'un œil extérieur la trouvera.
Cordialement
0
Raymond PENTIER Messages postés 58725 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 19 novembre 2024 17 240
23 oct. 2018 à 18:21
Je ne m'y connais pas en VBA.
0
Raymond PENTIER Messages postés 58725 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 19 novembre 2024 17 240
25 oct. 2018 à 01:51
Salut.

Je suis content d'avoir contribué à la résolution de ton problème.

Et à la prochaine ...
0