controle coherence valeurs - macro

VBA_DEAD

XLDnaute Occasionnel
Bonjour le forum,

Je cherche a faire un controle de coherence par macro car j`ai un fichier assez gros qui met sous un format specifique des donnees que j`ai sur 4 feuilles differentes.

ci-joint je joint un exemple de ce que je cherche a faire

j`ai donc plusieurs produits, un type de client (automobile, aviation, construction…) et un lieu de production pour l`exemple (mais c`est un peu ca le concept reel) et ce que j`appelerai un cout ds la colonne G “total”

je cherche a verifier que pour chaque combinaison produit & type client, la somme des valeurs “info” soit identiques.

J`ai bien explique ds mon file ci-joint.

Pouvez vous me donner un coup de main car je ne vois pas comment faire ce controle de coherence automatiquement?

J`arrive a le faire par excel mais sachant que mon fichier est déjà enorme cela ajoute du poids et du temps de calcul donc par macro ca serait super

Merci

VBA_DEAD
 

Pièces jointes

  • identifiererror.xls
    24.5 KB · Affichages: 127

pierrejean

XLDnaute Barbatruc
Re : controle coherence valeurs - macro

bonjour VBA_DEAD

Je n'ai pas compris la logique de fabrication du chiffre (100 200 150)
s'agit-il du couple produit type client ?
dans l'exemple lignes 58 et 59 la somme doit etre faite ?
 

VBA_DEAD

XLDnaute Occasionnel
Re : controle coherence valeurs - macro

Bonjour pierre jean,

j`espere que tu vas bien. Merci pour ton aide

en fait les montants viennent d`une formule sommeprod que j`utilise pour sommer les donnees qui sont ds 4 autres feuilles.

Je dois faire un file a un format specifique comme indique ds mon exemple.
les infos que j`ai mises ds l`exemple sont ensuite enregistrees ds un outil specifique et avant cela je dois verifier que les donnees que je charge sont au bon format.

le bon format est :
pour 1 produit et un type de client particulier, chaque somme de la valeur info doivent etre identiques

si tu prend le cas 1, tu vois que boulon 1 a plusieurs clients :
construction / transport / automobile.
donc tu as les combinaisons
boulon 1 & construction,
boulon 1 & transport
et boulon 1 & automobile

pour chacune de ces combinaisons, la macro doit verifier que chaque "info" est identique donc si tu prend boulon 1 & construciton, la macro doit checker que production / package / transport / waste / risk et margin on un total identique

si tu prends boulon 1 & Automobile, production / package / transport / waste / risk et margin doivent avoir un total de 100 chacun

il n`y a pas de lien entre 1 & construction et boulon 1 & automobile.

c`est vraiment par combinaison entre col c et d que la macro doit checker que chaque info a un total identique

si tu as 1500 pour le cas suivant, alors c`est pas logique car les valeurs pour Production / package / / waste / risk et margin = 200
si transport est a 1500, alors le calcul que j`ai fait et que je ne presente pas a un probleme

j`espere etre + clair

merci

vba_dead
boulon 1 CONSTRUCTION TURQUIE TRANSPORT 1500
 

cbea

XLDnaute Impliqué
Re : controle coherence valeurs - macro

Bonjour VBA_DEAD, pierrejean,

Voici une solution.
Les lignes en anomalie sont en rouge.

Par contre, je trouve plus de lignes en anomalie. Par conséquent, je ne sais pas si j'ai bien compris ta demande.

Par exemple :
pour le regroupement : "boulon 2/AVIATION/MARGIN", je trouve un total de 200 (somme des 2 lignes : ligne 17 et 22). Or, la ligne total pour le regroupement "boulon 2/AVIATION" donne 100.
J'ai conclu que les 2 lignes (17 et 22) étaient en anomalie.
 

Pièces jointes

  • identifiererror_v1.zip
    14.4 KB · Affichages: 97

VBA_DEAD

XLDnaute Occasionnel
Re : controle coherence valeurs - macro

bonjour cbea

je viens de regarder sur mon exemple et ca semble parfait!

tu as parfaitement compris il me semble

je vais adapter ta macro a la situation reelle et je te reviens
Je regarde le code aussi

merci a vous 2 encore


vba_dead
 

VBA_DEAD

XLDnaute Occasionnel
Re : controle coherence valeurs - macro

RE- Le forum

cbea, tout marche! j`ai pu adpater ta macro sans probleme. c`etait pas complique en partant de ton code :D

par contre, je ne comprends pas la logique du code ci-dessous
LigTotal = Evaluate("SumProduct((" & PProduit.Address & "=""" & Produit & """) * 1, " & _
"(" & PTypeCli.Address & "=""" & TypeCli & """) * 1, " & _
"(" & PInfo.Address & "=""" & Info & """) *1, " & _
PTotal.Address & ")")

tu fais une sommeprod - OK , mais il fait quoi le "*1"
en general c`est pour compter des occurences que tu mets *1 ds une formule sommeprod donc j`en conclue que tu comptes mais pas que tu somme. est ce le cas?

merci

VBA_DEAD
 

cbea

XLDnaute Impliqué
Re : controle coherence valeurs - macro

Bonjour VBA_DEAD et le forum,

Pour effectuer le total, je passe par une fonction SOMMEPROD et en utilisant Evaluate car WorksheetFunction.SumProduct ne fonctionne pas correctement.

J'ai écrit une chaîne pour utiliser la fonction SOMMEPROD (SUMPRODUCT en anglais) :
(" & PProduit.Address & "=""" & Produit & """) : la plage de cellules des produits doit être égale au critère Produit. Produit est entouré de double " car il s'agit d'un critère alphanumérique.

(" & PTypeCli.Address & "=""" & TypeCli & """) : la plage de cellules des types de clients doit être égale au critère TypeCli. TypeCli est entouré de double " car il s'agit d'un critère alphanumérique.

(" & PInfo.Address & "=""" & TypeCli & """) : la plage de cellules des infos doit être égale au critère Info. Info est entouré de double " car il s'agit d'un critère alphanumérique.

PTotal.Address : la plage de cellules correspondant au total

*1 : permet de convertir en numérique

Cela revient à faire :
=SOMMEPROD((PProduit = Produit) * (PTypeCli = TypeCli) * (PInfo = Info) * (PTotal))

J'espère que cela est compréhensible car ce n'est pas évident à décrire.
 

Discussions similaires

Réponses
13
Affichages
337
Réponses
4
Affichages
198

Statistiques des forums

Discussions
312 608
Messages
2 090 189
Membres
104 446
dernier inscrit
Phil A