Nouvelle création VBA

fabou75017

XLDnaute Nouveau
Bonjour,

Je débute et au boulot on vient de me filer un tableau de 3000 lignes à traiter….
Ce que j’aimerai faire est tout simple mais le matérialiser sur excel est pour moi très compliqué !!!

Les deux colonnes sur lesquelles je veux travailler sont les suivantes :

Code client montant

4322 36€
4322 37€
4322 43€

3655 6€
3655 19€
3655 354€

1803 21€
1803 28€

3945 57€
3945 3€
3945 27€

Il faut que je regroupe les codes client et que je somme les montant qui y corresponde. Pour l’instant ce que je fais c’est donc un =sum(…..) pour chaque client


Ex :

Code client montant

4322 116€ (c'est-à-dire =sum(36 :37 :43)

3655 379 (6+19+354)

1803 39 (21+18)

3945 87 (57+3+27)


Le problème c’est que pour 3000 lignes et 900 client je risque d’y passer ma semaine….

Si pour quelqu’un cela paraît évident et qu’une macro existe, je lui en remercie !

A+
Fab
 

porcinet82

XLDnaute Barbatruc
Re : Nouvelle création VBA

Salut,

Mets nous un fichier exemple avec quelques data non confidentielles (fichier <50ko), je pense que ce n'est pas sorcier a traiter.
En attendant ton fichier,

@+

PS : T'aurais pas joué au tennis ce matin par harsard ?
 

porcinet82

XLDnaute Barbatruc
Re : Nouvelle création VBA

re,

Bon a tout hasard, voivi un code qui devrait fonctionner. Cela suppose que tes codes clients sont dans la colonne A a parir de la ligne 1 et que les sommes soient en colonne B. Le résultat est fournis en colonne C :
Code:
Sub test()
Dim i&, somme&
For i = 1 To Range("A65536").End(xlUp).Row
    Do While Cells(i, 1).Value = Cells(i + 1, 1).Value
        somme = somme + Cells(i, 2).Value
        i = i + 1
    Loop
    somme = somme + Cells(i, 2).Value
    Cells(i, 3).Value = somme
    somme = 0
Next i
End Sub

Si tu ne veux garder que les lignes remplis, tu peux utiliser ceci :
Code:
Sub test2()
Dim i&
For i = Range("A65536").End(xlUp).Row To 1 Step -1
    If Cells(i, 3).Value = "" Then Rows(i).Delete
Next i
End Sub

@+
 

fabou75017

XLDnaute Nouveau
Re : Nouvelle création VBA

LooOOOOLLL pour le tennis!! Effectivement...

Je te joints un fichier en exemple. L'idée comme je l'ai expliqué précédement est de savoir pour chaque référence client la somme du montant qui lui est associé.

Merci pour ton aide (et ta réactivité!!!)

Fab
 

Pièces jointes

  • exemple.xls
    31 KB · Affichages: 67
  • exemple.xls
    31 KB · Affichages: 64
  • exemple.xls
    31 KB · Affichages: 67

fabou75017

XLDnaute Nouveau
Re : Nouvelle création VBA

Bon et bien un grand coup de chapeau à Porcinet!! Merci beaucoup c'est exactement ce que je recherchais. En effet j'ai besoin ensuite d'exploiter les données dsur une autre feuille donc c'est vraiment parfait.

Désolé pour Jean Pierre et Bichon, je n'ai pas pu ouvrir votre fichier à cause du pare feu de ma boite qui est assez coriace!

Une dernière question: il ya une erreur de compilation quand je veux regrouper tes 2 ^programmes porcinet


Sub test()
Dim i&, sum&
For i = 1 To Range("A65536").End(xlUp).Row
Do While Cells(i, 1).Value = Cells(i + 1, 1).Value
sum = sum + Cells(i, 2).Value
i = i + 1
Loop
sum = sum + Cells(i, 2).Value
Cells(i, 3).Value = sum
sum = 0
Next i

Dim i&
For i = Range("A65536").End(xlUp).Row To 1 Step -1
If Cells(i, 3).Value = "" Then Rows(i).Delete
Next i
End Sub
 

skoobi

XLDnaute Barbatruc
Re : Nouvelle création VBA

Bonjour le fil,

comme porcinet n'est pas connecté, je me permet:

enlève la ligne en rouge:

Code:
Sub test()
Dim i&, sum&
For i = 1 To Range("A65536").End(xlUp).Row
Do While Cells(i, 1).Value = Cells(i + 1, 1).Value
sum = sum + Cells(i, 2).Value
i = i + 1
Loop
sum = sum + Cells(i, 2).Value
Cells(i, 3).Value = sum
sum = 0
Next i

[B][COLOR=red]Dim i&[/COLOR][/B]
For i = Range("A65536").End(xlUp).Row To 1 Step -1
If Cells(i, 3).Value = "" Then Rows(i).Delete
Next i
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 685
Messages
2 090 928
Membres
104 702
dernier inscrit
Hugotheking