Menu

Tableau Croisé Dynamique : traitement 7500 lignes [Résolu]

Messages postés
19
Date d'inscription
vendredi 13 janvier 2017
Dernière intervention
31 janvier 2019
- - Dernière réponse : Raymond PENTIER
Messages postés
48211
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
21 février 2019
- 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 ?
Afficher la suite 

Votre réponse

4 réponses

Messages postés
48211
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
21 février 2019
15732
0
Merci
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 http://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 http://www.commentcamarche.net/faq/29493-utiliser-cjoint
TeTo25
Messages postés
19
Date d'inscription
vendredi 13 janvier 2017
Dernière intervention
31 janvier 2019
1 -
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é)
Commenter la réponse de Raymond PENTIER
Messages postés
19
Date d'inscription
vendredi 13 janvier 2017
Dernière intervention
31 janvier 2019
1
0
Merci
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....
Raymond PENTIER
Messages postés
48211
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
21 février 2019
15732 -
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 ...
TeTo25
Messages postés
19
Date d'inscription
vendredi 13 janvier 2017
Dernière intervention
31 janvier 2019
1 -
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!
Commenter la réponse de TeTo25
Messages postés
19
Date d'inscription
vendredi 13 janvier 2017
Dernière intervention
31 janvier 2019
1
0
Merci
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)
TeTo25
Messages postés
19
Date d'inscription
vendredi 13 janvier 2017
Dernière intervention
31 janvier 2019
1 -
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
Raymond PENTIER
Messages postés
48211
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
21 février 2019
15732 -
Je ne m'y connais pas en VBA.
Commenter la réponse de TeTo25
Messages postés
48211
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
21 février 2019
15732
0
Merci
Salut.

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

Et à la prochaine ...
Commenter la réponse de Raymond PENTIER