Macro calculant total et moyenne de cellules

Bonjour à tous!

Je travaille sur un fichier excel 2010 qui a en colonne A les produits,en B les N° de commandes,en C les Quantités commandées,en D la temps mis par les ouvriers et E le temps mis par les machines.Je voudrais en fait réaliser une macro qui me regroupe les produits par noms puis fasse le total des quantités,temps ouvriers et machine, et surtout me fasse pour chaque groupe une moyenne horaire des temps ouvriers et machines en divisant chaque total temps par la quantité totale.cf le fichier joint.

Merci d'avance pour votre aide.

20fichiermoyenne.xlsx (12.85 Ko)

Bonjour,

Une proposition à tester

11faro0911.xlsm (21.82 Ko)

A+

Bonjour!

Frangy ta macro marche je l'ai testée, seul soucis j'avais oublié de te dire que y a un classement à faire en fonction des villes.Je te renvoie le fichier pour que tu le regardes.Merci d'avance.

6faro0911test.xlsm (25.81 Ko)

Bonjour,

A tester suite à adaptations.

15faro0911.xlsm (23.08 Ko)

A+

Bonsoir!

la macro fonctionne bien, sauf que quand je tente de la refaire en changeant les données(produit,quantité et heure) sans jamais toucher au code,un message du type:"erreur 6:dépassement de capacité",est-ce normal?

L'erreur est signalée au niveau de:

For Col = 3 To 12 Step 3

WsC.Cells(LigneC, Col + 1) = WsC.Cells(LigneC - 1, Col + 1) / WsC.Cells(LigneC - 1, Col) 'Moyenne TEMPS OUVRIER / QUANTITE

WsC.Cells(LigneC, Col + 2) = WsC.Cells(LigneC - 1, Col + 2) / WsC.Cells(LigneC - 1, Col) 'Moyenne TEMPS MACHINE / QUANTITE

Je ne comprends rien de tout cela.Si on peut me l'expliquer ce serait très gentil.Merci

Bonjour,

Bonjour Frangy,

Une autre proposition.

Cdlt.

14faro0911-v1.xlsm (30.79 Ko)

Bonjour,

Comme indiqué en commentaire, ces lignes de code effectuent les deux moyennes.

Si une quantité est nulle, il est normal que tu obtiennes un dépassement de capacité (division par zéro).

Tu peux faire le test après avoir modifié le code

For Col = 3 To 12 Step 3
    If WsC.Cells(LigneC - 1, Col) > 0 Then
        WsC.Cells(LigneC, Col + 1) = WsC.Cells(LigneC - 1, Col + 1) / WsC.Cells(LigneC - 1, Col) 'Moyenne TEMPS OUVRIER / QUANTITE
        WsC.Cells(LigneC, Col + 2) = WsC.Cells(LigneC - 1, Col + 2) / WsC.Cells(LigneC - 1, Col) 'Moyenne TEMPS MACHINE / QUANTITE
    End If
Next Col

A+

Bonjour!

Frangy, j'ai modifié le code comme tu me l'as indiqué et ça fonctionne!La seule chose qu'il me reste à comprendre c'est pourquoi en rajoutant des nouvelles villes(avec quantité,temps ouvrier et machine),ça ne marche plus? Le message suivant apparaît:"Erreur d'exécution 13: Incompatibilité de type".

La ligne du code concerné est la suivante: If C.Value = k(n) Then

WsC.Range("A" & LigneC) = C.Value 'Produit

WsC.Range("B" & LigneC) = C.Offset(0, 1).Value 'N° CDE

For Col = 3 To 39 Step 3

WsC.Cells(LigneC, Col) = C.Offset(0, Col - 1).Value 'QUANTITE

WsC.Cells(LigneC, Col + 1) = C.Offset(0, Col).Value 'TEMPS OUVRIER

WsC.Cells(LigneC, Col + 2) = C.Offset(0, Col + 1).Value 'TEMPS MACHINE

Le If C.Value = k(n) Then apparaît en jaune.Merci d'avance.

Lorsque l'erreur apparaît, passe la souris sur les variables n et k(n) pour visualiser leur valeur.

Cela devrait te donner une indication.

A+

Bonjour!

Problème résolu!La macro marche bien, merci à tous et singulièrement à toi Frangy.

Rechercher des sujets similaires à "macro calculant total moyenne"