OVH Cloud OVH Cloud

Totaux selon code

14 réponses
Avatar
Sylvain P.
Bonjour =E0 tous,

J'ai un fichier qui contient des donn=E9es sur le format suivant :
dvg1% dvg1voix dvg2% dvg2voix
0,2 409 12,8 591
0,2 409 12,8 591

A chaque fois donc, un code de 3 lettres avec un num=E9ro puis soit un %
soit un nombre.
Avec la macro suivante, je supprime les num=E9ros associ=E9s au code,
j'additionne les % et les nombres dans des colonnes diff=E9rentes :
Sub TotauxCodes()

'Supprime les num=E9ros
For Each c In Rows("1:1")
x =3D c.Value
For i =3D 1 To 9
x =3D Application.Substitute(x, i, "")
Next
c.Value =3D Application.Substitute(x, 0, "")
Next c


'Additionne les colonnes de % et de voix pour chaque code
For lig =3D 1 To 10 'A adapter
For col =3D 1 To 8 'A adapter
If InStr(Cells(1, col), "dvg%") > 0 And Cells(lig, col) > 0
Then
Feuil3.Cells(lig, 10) =3D Feuil3.Cells(lig, 10) +
Feuil2.Cells(lig, col) ' Additionne les % en colonne 10 sur la Feuil3
Feuil3.Cells(lig, 11) =3D Feuil3.Cells(lig, 11) +
Feuil2.Cells(lig, col + 1) ' Additionne les voix en colonne 11 sur la
Feuil3
End If
Next
Next

End Sub

Le probl=E8me c'est que j'ignore la liste des codes et qu'ils peuvent
changer (mais le format reste toujours le m=EAme).
Il faudrait que la macro identifie les diff=E9rents codes, sans que j'ai
=E0 les programmer dans le dur.

Merci par avance pour toutes vos id=E9es et suggestions tr=E8s
pr=E9cieuses !

A bient=F4t,

Sylvain

4 réponses

1 2
Avatar
Sylvain P.
De retour de vacances : Merci MichD !
C'est excellent !

2 petits ajustements :
1) la macro ne semble fonctionner qu'avec 2 codes (soit 4 colonnes au
final) or j'en ai plus de 30...
2) peut-on éviter d'inscrire 0 quand la somme est nulle ?

Je te remercie par avance.

Sylvain
Avatar
MichD
http://cjoint.com/?ADAt7gXawtG


MichD
--------------------------------------------
"Sylvain P." a écrit dans le message de groupe de discussion :


De retour de vacances : Merci MichD !
C'est excellent !

2 petits ajustements :
1) la macro ne semble fonctionner qu'avec 2 codes (soit 4 colonnes au
final) or j'en ai plus de 30...
2) peut-on éviter d'inscrire 0 quand la somme est nulle ?

Je te remercie par avance.

Sylvain
Avatar
Sylvain P.
OK. Merci.
Pour fonctionner avec tous les codes, j'ai remplacé la ligne
.Range("A2:D" & DL).FillRight
par
.Range("A2", .Cells(DerLig, DL)).FillRight

En revanche, l'addition de 2 cellules vides se traduit bien par
l'inscription d'un 0, alors que la cellule devrait rester vide.
Avatar
MichD
Tu modifies dans le code la formule pour ceci :


.Range("A2").FormulaArray = "=if(SUM(If(" & N & "!$A$1:" & _
.Cells(1, DerCol).Address & "=A$1," & N & "!$A2:" & _
.Cells(2, DerCol).Address(False, True) & "))=0,""""," & _
"SUM(If(" & N & "!$A$1:" & _
.Cells(1, DerCol).Address & "=A$1," & N & "!$A2:" & _
.Cells(2, DerCol).Address(False, True) & ")))"




MichD
--------------------------------------------
1 2