Regroupement en VBA

Le
JMD
Bonjour.

Dans une feuille Excel, j'obtiens des données via un recordset ODBC qui sont
mises en formes comme ci-dessous :

Famille Code Qte Prix
Divers A 10 100.00
Divers AA 12 120
Fourniture AB 5 12
Fourniture AC 3 12
Fourniture AV 2 15

etc, c'est à dire que la première colonne, "Famille", contient le nom de la
famille qui est répété à chaque ligne.

Je souhaiterais faire des sous totaux par famille (valorisation par famille)
et afficher la sous total dans la colonne suivante (après prix), soit à la
dernière soit à la première ligne de chaque famille. C'est à dire :

Famille Code Qte Prix Total Famille
Divers A 10 100.00
Divers AA 12 120 120.00
Fourniture AB 5 12
Fourniture AC 3 12
Fourniture AV 2 15 39.00


Je n'ai aucune idée de la manière de procéder en VBA. Certes, je peux faire
un "select sum(prix) group by Famille", mais comment repérer la cellule dans
laquelle je dois écrire le résultat ? Bien entendu, le nombre d'articles par
famille n'est jamais le même.

Un piste ?

Mille mercis !!!
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
JB
Le #4645751
Bonjour,

Commande Données/Sous-totaux

http://boisgontierjacques.free.fr/fichiers/Tri/jb-trisoustotaux.xls

JB

On 1 août, 11:45, "JMD"
Bonjour.

Dans une feuille Excel, j'obtiens des données via un recordset ODBC qui sont
mises en formes comme ci-dessous :

Famille Code Qte Prix
Divers A 10 100.00
Divers AA 12 120
Fourniture AB 5 12
Fourniture AC 3 12
Fourniture AV 2 15

etc, c'est à dire que la première colonne, "Famille", contient le nom de la
famille qui est répété à chaque ligne.

Je souhaiterais faire des sous totaux par famille (valorisation par famil le)
et afficher la sous total dans la colonne suivante (après prix), soit à la
dernière soit à la première ligne de chaque famille. C'est à dire :

Famille Code Qte Prix Total Famille
Divers A 10 100.00
Divers AA 12 120 120.00
Fourniture AB 5 12
Fourniture AC 3 12
Fourniture AV 2 15 39.00

Je n'ai aucune idée de la manière de procéder en VBA. Certes, je pe ux faire
un "select sum(prix) group by Famille", mais comment repérer la cellule dans
laquelle je dois écrire le résultat ? Bien entendu, le nombre d'artic les par
famille n'est jamais le même.

Un piste ?

Mille mercis !!!


FFO
Le #4645741
Salut à toi

cette petite macro devrait faire :

For Each c In Worksheets("Onglet").Range("A1", [A65535].End(xlUp))
If c.Interior.ColorIndex <> 6 Then
For Each d In Worksheets("Onglet").Range(c, [A65535].End(xlUp))
If c = d Then
n = n + 1
d.Interior.ColorIndex = 6
End If
Next
c.Offset(0, 4) = n
n = 0
End If
Next
Columns("A:A").Interior.ColorIndex = xlNone

Dis moi !!!

Actualises le nom "Onglet" du nom de ta feuille dans le code


Bonjour.

Dans une feuille Excel, j'obtiens des données via un recordset ODBC qui sont
mises en formes comme ci-dessous :

Famille Code Qte Prix
Divers A 10 100.00
Divers AA 12 120
Fourniture AB 5 12
Fourniture AC 3 12
Fourniture AV 2 15

etc, c'est à dire que la première colonne, "Famille", contient le nom de la
famille qui est répété à chaque ligne.

Je souhaiterais faire des sous totaux par famille (valorisation par famille)
et afficher la sous total dans la colonne suivante (après prix), soit à la
dernière soit à la première ligne de chaque famille. C'est à dire :

Famille Code Qte Prix Total Famille
Divers A 10 100.00
Divers AA 12 120 120.00
Fourniture AB 5 12
Fourniture AC 3 12
Fourniture AV 2 15 39.00


Je n'ai aucune idée de la manière de procéder en VBA. Certes, je peux faire
un "select sum(prix) group by Famille", mais comment repérer la cellule dans
laquelle je dois écrire le résultat ? Bien entendu, le nombre d'articles par
famille n'est jamais le même.

Un piste ?

Mille mercis !!!





JMD
Le #4645651
Bonjour.

Ta macro met toute la colonne A en jaune.

Merci.


"FFO"
Salut à toi

cette petite macro devrait faire :

For Each c In Worksheets("Onglet").Range("A1", [A65535].End(xlUp))
If c.Interior.ColorIndex <> 6 Then
For Each d In Worksheets("Onglet").Range(c, [A65535].End(xlUp))
If c = d Then
n = n + 1
d.Interior.ColorIndex = 6
End If
Next
c.Offset(0, 4) = n
n = 0
End If
Next
Columns("A:A").Interior.ColorIndex = xlNone

Dis moi !!!

Actualises le nom "Onglet" du nom de ta feuille dans le code


Bonjour.

Dans une feuille Excel, j'obtiens des données via un recordset ODBC qui
sont
mises en formes comme ci-dessous :

Famille Code Qte Prix
Divers A 10 100.00
Divers AA 12 120
Fourniture AB 5 12
Fourniture AC 3 12
Fourniture AV 2 15

etc, c'est à dire que la première colonne, "Famille", contient le nom de
la
famille qui est répété à chaque ligne.

Je souhaiterais faire des sous totaux par famille (valorisation par
famille)
et afficher la sous total dans la colonne suivante (après prix), soit à
la
dernière soit à la première ligne de chaque famille. C'est à dire :

Famille Code Qte Prix Total Famille
Divers A 10 100.00
Divers AA 12 120 120.00
Fourniture AB 5 12
Fourniture AC 3 12
Fourniture AV 2 15 39.00


Je n'ai aucune idée de la manière de procéder en VBA. Certes, je peux
faire
un "select sum(prix) group by Famille", mais comment repérer la cellule
dans
laquelle je dois écrire le résultat ? Bien entendu, le nombre d'articles
par
famille n'est jamais le même.

Un piste ?

Mille mercis !!!







JMD
Le #4645591
Mais j'ai fait :

For Each C In Worksheets("STOCKPHYSIQUE").Range("A6", [A65535].End(xlUp))

If C.Value <> C.Offset(1, 0).Value Then
C.Interior.ColorIndex = 6
Else
C.Interior.ColorIndex = 0
End If
Next


et c'est OK. Merci infiniment, je ne connaissais pas Offset.

A +


"JMD" %
Bonjour.

Ta macro met toute la colonne A en jaune.

Merci.


"FFO"
Salut à toi

cette petite macro devrait faire :

For Each c In Worksheets("Onglet").Range("A1", [A65535].End(xlUp))
If c.Interior.ColorIndex <> 6 Then
For Each d In Worksheets("Onglet").Range(c, [A65535].End(xlUp))
If c = d Then
n = n + 1
d.Interior.ColorIndex = 6
End If
Next
c.Offset(0, 4) = n
n = 0
End If
Next
Columns("A:A").Interior.ColorIndex = xlNone

Dis moi !!!

Actualises le nom "Onglet" du nom de ta feuille dans le code


Bonjour.

Dans une feuille Excel, j'obtiens des données via un recordset ODBC qui
sont
mises en formes comme ci-dessous :

Famille Code Qte Prix
Divers A 10 100.00
Divers AA 12 120
Fourniture AB 5 12
Fourniture AC 3 12
Fourniture AV 2 15

etc, c'est à dire que la première colonne, "Famille", contient le nom de
la
famille qui est répété à chaque ligne.

Je souhaiterais faire des sous totaux par famille (valorisation par
famille)
et afficher la sous total dans la colonne suivante (après prix), soit à
la
dernière soit à la première ligne de chaque famille. C'est à dire :

Famille Code Qte Prix Total Famille
Divers A 10 100.00
Divers AA 12 120 120.00
Fourniture AB 5 12
Fourniture AC 3 12
Fourniture AV 2 15 39.00


Je n'ai aucune idée de la manière de procéder en VBA. Certes, je peux
faire
un "select sum(prix) group by Famille", mais comment repérer la cellule
dans
laquelle je dois écrire le résultat ? Bien entendu, le nombre d'articles
par
famille n'est jamais le même.

Un piste ?

Mille mercis !!!











FFO
Le #4645531
Rebonjour à toi

la ligne:

Columns("A:A").Interior.ColorIndex = xlNone

en fin de mon code doit remettre la colonne A sans couleur

Ne l'a tu pas oublié dans ta recopie

Dis moi !!!!


Bonjour.

Ta macro met toute la colonne A en jaune.

Merci.


"FFO"
Salut à toi

cette petite macro devrait faire :

For Each c In Worksheets("Onglet").Range("A1", [A65535].End(xlUp))
If c.Interior.ColorIndex <> 6 Then
For Each d In Worksheets("Onglet").Range(c, [A65535].End(xlUp))
If c = d Then
n = n + 1
d.Interior.ColorIndex = 6
End If
Next
c.Offset(0, 4) = n
n = 0
End If
Next
Columns("A:A").Interior.ColorIndex = xlNone

Dis moi !!!

Actualises le nom "Onglet" du nom de ta feuille dans le code


Bonjour.

Dans une feuille Excel, j'obtiens des données via un recordset ODBC qui
sont
mises en formes comme ci-dessous :

Famille Code Qte Prix
Divers A 10 100.00
Divers AA 12 120
Fourniture AB 5 12
Fourniture AC 3 12
Fourniture AV 2 15

etc, c'est à dire que la première colonne, "Famille", contient le nom de
la
famille qui est répété à chaque ligne.

Je souhaiterais faire des sous totaux par famille (valorisation par
famille)
et afficher la sous total dans la colonne suivante (après prix), soit à
la
dernière soit à la première ligne de chaque famille. C'est à dire :

Famille Code Qte Prix Total Famille
Divers A 10 100.00
Divers AA 12 120 120.00
Fourniture AB 5 12
Fourniture AC 3 12
Fourniture AV 2 15 39.00


Je n'ai aucune idée de la manière de procéder en VBA. Certes, je peux
faire
un "select sum(prix) group by Famille", mais comment repérer la cellule
dans
laquelle je dois écrire le résultat ? Bien entendu, le nombre d'articles
par
famille n'est jamais le même.

Un piste ?

Mille mercis !!!












JB
Le #4645521
En VBA:

[A1:D1000].Sort Key1:=Range("A2"), Order1:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:úlse
i = 2
Do While Cells(i, 1) <> ""
m = Cells(i, 1)
total = 0
Do While Cells(i, 1) = m
total = total + Cells(i, 4) * Cells(i, 3)
i = i + 1
Loop
Cells(i - 1, 5) = "Total pour " & m & ":" & total
Loop

JB


On 1 août, 11:45, "JMD"
Bonjour.

Dans une feuille Excel, j'obtiens des données via un recordset ODBC qui sont
mises en formes comme ci-dessous :

Famille Code Qte Prix
Divers A 10 100.00
Divers AA 12 120
Fourniture AB 5 12
Fourniture AC 3 12
Fourniture AV 2 15

etc, c'est à dire que la première colonne, "Famille", contient le nom de la
famille qui est répété à chaque ligne.

Je souhaiterais faire des sous totaux par famille (valorisation par famil le)
et afficher la sous total dans la colonne suivante (après prix), soit à la
dernière soit à la première ligne de chaque famille. C'est à dire :

Famille Code Qte Prix Total Famille
Divers A 10 100.00
Divers AA 12 120 120.00
Fourniture AB 5 12
Fourniture AC 3 12
Fourniture AV 2 15 39.00

Je n'ai aucune idée de la manière de procéder en VBA. Certes, je pe ux faire
un "select sum(prix) group by Famille", mais comment repérer la cellule dans
laquelle je dois écrire le résultat ? Bien entendu, le nombre d'artic les par
famille n'est jamais le même.

Un piste ?

Mille mercis !!!


JMD
Le #4645501
Merci JB


"JB"
En VBA:

[A1:D1000].Sort Key1:=Range("A2"), Order1:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:úlse
i = 2
Do While Cells(i, 1) <> ""
m = Cells(i, 1)
total = 0
Do While Cells(i, 1) = m
total = total + Cells(i, 4) * Cells(i, 3)
i = i + 1
Loop
Cells(i - 1, 5) = "Total pour " & m & ":" & total
Loop

JB


On 1 août, 11:45, "JMD"
Bonjour.

Dans une feuille Excel, j'obtiens des données via un recordset ODBC qui
sont
mises en formes comme ci-dessous :

Famille Code Qte Prix
Divers A 10 100.00
Divers AA 12 120
Fourniture AB 5 12
Fourniture AC 3 12
Fourniture AV 2 15

etc, c'est à dire que la première colonne, "Famille", contient le nom de
la
famille qui est répété à chaque ligne.

Je souhaiterais faire des sous totaux par famille (valorisation par
famille)
et afficher la sous total dans la colonne suivante (après prix), soit à la
dernière soit à la première ligne de chaque famille. C'est à dire :

Famille Code Qte Prix Total Famille
Divers A 10 100.00
Divers AA 12 120 120.00
Fourniture AB 5 12
Fourniture AC 3 12
Fourniture AV 2 15 39.00

Je n'ai aucune idée de la manière de procéder en VBA. Certes, je peux
faire
un "select sum(prix) group by Famille", mais comment repérer la cellule
dans
laquelle je dois écrire le résultat ? Bien entendu, le nombre d'articles
par
famille n'est jamais le même.

Un piste ?

Mille mercis !!!


JMD
Le #4645491
Bonjour.

Oui, si je laisse la ligne en fin de code, rien n'est jaune évidemment. Par
contre, si je la vire, toutes les lignes sont jaunes.

Peu importe, je me suis inspiré de ton code et j'ai obtenu ce que je
cherchais :

For Each C In Worksheets("STOCKPHYSIQUE").Range("A6", [A65535].End(xlUp))
If C.Value <> C.Offset(1, 0).Value Then
C.Interior.ColorIndex = 6
N = N + C.Offset(0, 5).Value
C.Offset(0, 6).Value = N
C.Offset(0, 6).Interior.ColorIndex = 6
N = 0
Else
N = N + C.Offset(0, 5).Value
C.Interior.ColorIndex = 0
End If

Next


Tout va bien, merci encore, c'est très sympa à toi.

A +

"FFO"
Rebonjour à toi

la ligne:

Columns("A:A").Interior.ColorIndex = xlNone

en fin de mon code doit remettre la colonne A sans couleur

Ne l'a tu pas oublié dans ta recopie

Dis moi !!!!


Bonjour.

Ta macro met toute la colonne A en jaune.

Merci.


"FFO"
Salut à toi

cette petite macro devrait faire :

For Each c In Worksheets("Onglet").Range("A1", [A65535].End(xlUp))
If c.Interior.ColorIndex <> 6 Then
For Each d In Worksheets("Onglet").Range(c, [A65535].End(xlUp))
If c = d Then
n = n + 1
d.Interior.ColorIndex = 6
End If
Next
c.Offset(0, 4) = n
n = 0
End If
Next
Columns("A:A").Interior.ColorIndex = xlNone

Dis moi !!!

Actualises le nom "Onglet" du nom de ta feuille dans le code


Bonjour.

Dans une feuille Excel, j'obtiens des données via un recordset ODBC
qui
sont
mises en formes comme ci-dessous :

Famille Code Qte Prix
Divers A 10 100.00
Divers AA 12 120
Fourniture AB 5 12
Fourniture AC 3 12
Fourniture AV 2 15

etc, c'est à dire que la première colonne, "Famille", contient le nom
de
la
famille qui est répété à chaque ligne.

Je souhaiterais faire des sous totaux par famille (valorisation par
famille)
et afficher la sous total dans la colonne suivante (après prix), soit
à
la
dernière soit à la première ligne de chaque famille. C'est à dire :

Famille Code Qte Prix Total Famille
Divers A 10 100.00
Divers AA 12 120 120.00
Fourniture AB 5 12
Fourniture AC 3 12
Fourniture AV 2 15 39.00


Je n'ai aucune idée de la manière de procéder en VBA. Certes, je peux
faire
un "select sum(prix) group by Famille", mais comment repérer la
cellule
dans
laquelle je dois écrire le résultat ? Bien entendu, le nombre
d'articles
par
famille n'est jamais le même.

Un piste ?

Mille mercis !!!














Publicité
Poster une réponse
Anonyme