Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Nouvelle création VBA

  • Initiateur de la discussion Initiateur de la discussion fabou75017
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

F

fabou75017

Guest
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
 
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 ?
 
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

@+
 
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

Re : Nouvelle création VBA

Bonjour fabou, Romain, PierreJean, Bichon,

Avec, en B136 sur ton exemple : =SOUS.TOTAL(9;B2:B135), et à chaque filtre sur tel ou tel client, tu auras son total.

Bonne journée.

Jean-Pierre
 
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
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

A
Réponses
25
Affichages
5 K
Angelzeus
A
P
Réponses
2
Affichages
1 K
Ptrs32
P
L
  • Question Question
Réponses
11
Affichages
2 K
LaSimonerie
L
A
Réponses
2
Affichages
1 K
Antoine C.
A
C
  • Résolu(e)
XL 2019 CHECKBOX
Réponses
3
Affichages
1 K
M
Réponses
20
Affichages
3 K
massol
M
D
Réponses
1
Affichages
1 K
Dudesson
D
Réponses
9
Affichages
2 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…