Pb sous totaux pourcentage vba excel

Fermé
NICOLAS44 - 21 oct. 2006 à 14:19
JvDo Messages postés 1978 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 28 septembre 2020 - 22 oct. 2006 à 15:01
Bonjour,

D'avance merci pour l'aide que vous pourrez m'apporter.

Je gère un gros budget sous Excel et j'utilise la fonction sous total. Mais on me demande de calculer le pourcentage par rapport au sous total et çà ne marche pas car je reçois le message d'erreur suivant : Div/0

Voici le code correspondant.

Sub SOUSTOTALRUBRIQUE()
'
' SOUSTOTALRUBRIQUE Macro

'
'
lig = Range("c1").End(xlDown).Row
i = lig - 1
Do While i > 1
total = Cells(i, 4)
mregion = Cells(i - 3, 4)
Do While Cells(i - 3, 4) = mregion
' If total = 0 Then
'Cells(i - 3, 7).Value = ""
Cells(i - 3, 7) = Cells(i - 3, 4) / total
Cells(i - 3, 7).NumberFormat = "0.00%"
If total = 0 Then
Cells(i - 3, 7).Value = ""
End If
i = i - 1
Loop
i = i - 1
Loop
End Sub

Pourriez vous modifier le programme afin qu'il calcule le pourcentage
quelque soit le nombre de rubriques ?

Merci d'avance.

Nicolas
A voir également:

3 réponses

JvDo Messages postés 1978 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 28 septembre 2020 857
21 oct. 2006 à 14:50
Bonjour,

c'est le genre de question qui ne doit pas prendre plus de 10mn pour y répondre AVEC le fichier exemple.

SANS un fichier exmple, j'ai envie de te répondre une évidence qu'un pas à pas devrait confirmer : ton total doit prendre une valeur nulle à un moment donné.

si tu ne t'en sors pas, monte ton fichier sur CJOINT

cordialement

PS : ton besoin de % ne pouvait-il pas se résoudre par des formules ?
0
Produit CA Région
Produit1 100 A 19,61%
Produit3 110 A 21,57%
Produit6 100 A 19,61%
Produit15 100 A 19,61%
Produit18 100 A 19,61%
510 Total A
Produit2 565 B 32,51%
Produit4 100 B 5,75%
Produit7 567 B 32,62%
Produit10 400 B 23,01%
Produit19 106 B 6,10%
1738 Total B
Produit5 100 C 25,00%
Produit8 100 C 25,00%
Produit11 100 C 25,00%
Produit12 100 C 25,00%
400 Total C
Produit17 120 D 52,86%
Produit20 107 D 47,14%
227 Total D
2875 Total



On veut le % de chaque produit par rapport à chaque sous-total

Sub essai()
lig = Range("c1").End(xlDown).Row
i = lig - 1
Do While i > 1
total = Cells(i, 2)
mrégion = Cells(i - 1, 3)
Do While Cells(i - 1, 3) = mrégion
Cells(i - 1, 4) = Cells(i - 1, 2) / total
Cells(i - 1, 4).NumberFormat = "0.00%"
i = i - 1
Loop
i = i - 1
Loop
End Sub
0
JvDo Messages postés 1978 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 28 septembre 2020 857
22 oct. 2006 à 15:01
Bonjour,

ta macro (la 2ème) fonctionne très bien! je n'ai pas d'erreur.

si tu veux une solution sans macro, utilise la formule matricielle
D2=SI(A2="";"";B2/SOMMEPROD(($C$2:$C$20=C2)*$B$2:$B$20))
(à valider par CTRL+MAJ+ENTER)

sinon, tu ne semble pas connaître CJOINT : https://www.cjoint.com/

c'est beaucoup plus pratique pour les personnes à qui tu veux transmettre des données

A+
0