Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Macro pour extraire un résumé

12 réponses
Avatar
Eric C
Bonjour à tous,

Voici mon fichier excel 2002

http://cjoint.com/?0cptIfkC4we

A partir de la feuille data, je voudrais extraire mes données avec une
macro, choisir la période à traiter (inputbox p ex) et sortir sur la
feuille récap un résumé par catégorie et par mois.(comme dans l' exemple)

Pour le moment, à l'aide de filtres automatiques, j'extrais mes données,
mais c'est très long et je dois copier des formules pour faire les sommes.

Je me suis essayé en VBA mais bon, chacun son métier ;-)

Avez-vous une piste qui pourrait m'aider ?
Merci à vous déjà...
Eric

10 réponses

1 2
Avatar
LSteph
Bonjour,
Tu pourras sans doute adapter cet exemple à ton souhait voici selon
ton classeur un peu revu
http://cjoint.com/?0cqmF9D7Vg5
Ne voyant pas l'endroit des dates de début et fin dans ta feuille ni
des données aux libellés exacts de ceux de ta feuille Data pour
exploiter cela par rapport aux intitulés de ta base j'ai refait un
onglet
nommé extraction où tu peux faire un choix début fin et que se mette à
jour un tableau par produits et catégories.
Le choix se fait soit par saisie directe d'une date, soit par la liste
de validation (sans mesage erreur) qui s'alimente
sur la liste définie lesdates
Úta!$K$2:DECALER(Data!$K$2;NBVAL(Data!$K$2:$K$65536)-1;;)

basée sur une extraction sans doublons effectuée à l'ouvertu re ou si
on modifie dans ta base la colonne des dates
voir le code VBA plus bas

Le nombre par catégorie entre les dates se calcule ainsi dans le
tableau par cette formule
=SOMMEPROD((Data!$C$2:$C$1000=C$8)*(Data!$F$2:$F$1000=$B9)*(Data!$D
$2:$D$1000>=$B$3)*(Data!$D$2:$D$1000<=$C$3)*(Data!$H$2:$H$1000))

Aussi revu le classeur dans l'explorateur de projet du VBE
Feuil1(Data)
Feuil2(Recap) ' ta feuille que je n'utilise pas
Feuil3(Extraction)

'dans le ThisWorkbook j'ai mis ce bout de code
Private Sub Workbook_Open()
Feuil1.Activate
Call DatesSansdoublons
Feuil3.Activate
End Sub


'dans Module1
Sub DatesSansdoublons()
Dim lig As Long
lig = [d65536].End(xlUp).Row
Range("A1:H" & lig).AdvancedFilter Action:=xlFilterCopy,
CopyToRange:=Range( _
"K1"), Unique:=True
End Sub

'dans le code de feuil1
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Column = 4 Then Call DatesSansdoublons
Application.EnableEvents = True
End Sub

'LSteph

Pour lister le choix des dates sans doublons j'ai prévu que cela se
fasse à l'ouverture du classeur
Eric C a écrit :
Bonjour � tous,

Voici mon fichier excel 2002

http://cjoint.com/?0cptIfkC4we

A partir de la feuille data, je voudrais extraire mes donn�es ave c une
macro, choisir la p�riode � traiter (inputbox p ex) et so rtir sur la
feuille r�cap un r�sum� par cat�gorie et par mois.(comme dans l' exemple)

Pour le moment, � l'aide de filtres automatiques, j'extrais mes d onn�es,
mais c'est tr�s long et je dois copier des formules pour faire le s sommes.

Je me suis essay� en VBA mais bon, chacun son m�tier ;-)

Avez-vous une piste qui pourrait m'aider ?
Merci � vous d�j�...
Eric
Avatar
h2so4
Eric C has brought this to us :
Bonjour à tous,

Voici mon fichier excel 2002

http://cjoint.com/?0cptIfkC4we

A partir de la feuille data, je voudrais extraire mes données avec une macro,
choisir la période à traiter (inputbox p ex) et sortir sur la feuille récap
un résumé par catégorie et par mois.(comme dans l' exemple)

Pour le moment, à l'aide de filtres automatiques, j'extrais mes données, mais
c'est très long et je dois copier des formules pour faire les sommes.

Je me suis essayé en VBA mais bon, chacun son métier ;-)

Avez-vous une piste qui pourrait m'aider ?
Merci à vous déjà...
Eric



http://cjoint.com/?0cqorMexjOi

en essayant de respecter la mise en page que tu souhaites.

--
h2so4
ca PAN
pique DORA
.
Avatar
Eric C
Bonjour LSteph,

Merci pour le temps passé à m'éclairer sur le problème.
Ta solution est efficace et je pourrais l'adapter à mon fichier sans
trop de code.
L'inconvénient, si je choisis une plage de dates chevauchant 2 mois, je
n'ai pas le décompte par mois...
Il faut que je demande si cette option est indispensable.

merci encore
Eric

Le 16/02/2011 12:36, LSteph a écrit :
Bonjour,
Tu pourras sans doute adapter cet exemple à ton souhait voici selon
ton classeur un peu revu
http://cjoint.com/?0cqmF9D7Vg5
Ne voyant pas l'endroit des dates de début et fin dans ta feuille ni
des données aux libellés exacts de ceux de ta feuille Data pour
exploiter cela par rapport aux intitulés de ta base j'ai refait un
onglet
nommé extraction où tu peux faire un choix début fin et que se mette à
jour un tableau par produits et catégories.
Le choix se fait soit par saisie directe d'une date, soit par la liste
de validation (sans mesage erreur) qui s'alimente
sur la liste définie lesdates
Úta!$K$2:DECALER(Data!$K$2;NBVAL(Data!$K$2:$K$65536)-1;;)

basée sur une extraction sans doublons effectuée à l'ouverture ou si
on modifie dans ta base la colonne des dates
voir le code VBA plus bas

Le nombre par catégorie entre les dates se calcule ainsi dans le
tableau par cette formule
=SOMMEPROD((Data!$C$2:$C$1000=C$8)*(Data!$F$2:$F$1000=$B9)*(Data!$D
$2:$D$1000>=$B$3)*(Data!$D$2:$D$1000<=$C$3)*(Data!$H$2:$H$1000))

Aussi revu le classeur dans l'explorateur de projet du VBE
Feuil1(Data)
Feuil2(Recap) ' ta feuille que je n'utilise pas
Feuil3(Extraction)

'dans le ThisWorkbook j'ai mis ce bout de code
Private Sub Workbook_Open()
Feuil1.Activate
Call DatesSansdoublons
Feuil3.Activate
End Sub


'dans Module1
Sub DatesSansdoublons()
Dim lig As Long
lig = [d65536].End(xlUp).Row
Range("A1:H"& lig).AdvancedFilter Action:=xlFilterCopy,
CopyToRange:=Range( _
"K1"), Unique:=True
End Sub

'dans le code de feuil1
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Column = 4 Then Call DatesSansdoublons
Application.EnableEvents = True
End Sub

'LSteph

Pour lister le choix des dates sans doublons j'ai prévu que cela se
fasse à l'ouverture du classeur
Eric C a écrit :
Bonjour � tous,

Voici mon fichier excel 2002

http://cjoint.com/?0cptIfkC4we

A partir de la feuille data, je voudrais extraire mes donn�es avec une
macro, choisir la p�riode � traiter (inputbox p ex) et sortir sur la
feuille r�cap un r�sum� par cat�gorie et par mois.(comme dans l' exemple)

Pour le moment, � l'aide de filtres automatiques, j'extrais mes donn�es,
mais c'est tr�s long et je dois copier des formules pour faire les sommes.

Je me suis essay� en VBA mais bon, chacun son m�tier ;-)

Avez-vous une piste qui pourrait m'aider ?
Merci � vous d�j�...
Eric
Avatar
Eric C
Acide sulfurique !!
Génial !!

Cela ressemble à première vue à ce que je cherche à faire.
Je vais potasser le code et essayer de l'adapter à mon fichier original
et ne manquerai pas de revenir vers toi si je cale...

Merci pour le temps consacré
Eric

Le 16/02/2011 14:18, h2so4 a écrit :
Eric C has brought this to us :
Bonjour à tous,

Voici mon fichier excel 2002

http://cjoint.com/?0cptIfkC4we

A partir de la feuille data, je voudrais extraire mes données avec une
macro, choisir la période à traiter (inputbox p ex) et sortir sur la
feuille récap un résumé par catégorie et par mois.(comme dans l' exemple)

Pour le moment, à l'aide de filtres automatiques, j'extrais mes
données, mais c'est très long et je dois copier des formules pour
faire les sommes.

Je me suis essayé en VBA mais bon, chacun son métier ;-)

Avez-vous une piste qui pourrait m'aider ?
Merci à vous déjà...
Eric



http://cjoint.com/?0cqorMexjOi

en essayant de respecter la mise en page que tu souhaites.

Avatar
h2so4
Eric C submitted this idea :
Acide sulfurique !!
Génial !!

Cela ressemble à première vue à ce que je cherche à faire.
Je vais potasser le code et essayer de l'adapter à mon fichier original et ne
manquerai pas de revenir vers toi si je cale...

Merci pour le temps consacré
Eric

Le 16/02/2011 14:18, h2so4 a écrit :
Eric C has brought this to us :
Bonjour à tous,

Voici mon fichier excel 2002

http://cjoint.com/?0cptIfkC4we

A partir de la feuille data, je voudrais extraire mes données avec une
macro, choisir la période à traiter (inputbox p ex) et sortir sur la
feuille récap un résumé par catégorie et par mois.(comme dans l' exemple)

Pour le moment, à l'aide de filtres automatiques, j'extrais mes
données, mais c'est très long et je dois copier des formules pour
faire les sommes.

Je me suis essayé en VBA mais bon, chacun son métier ;-)

Avez-vous une piste qui pourrait m'aider ?
Merci à vous déjà...
Eric



http://cjoint.com/?0cqorMexjOi

en essayant de respecter la mise en page que tu souhaites.





http://cjoint.com/?0cqvk4xzXcw

avec quelques commentaires dans le code

--
h2so4
ca PAN
pique DORA
.
Avatar
Eric C
Le 16/02/2011 21:11, h2so4 a écrit :
Eric C submitted this idea :
Acide sulfurique !!
Génial !!

Cela ressemble à première vue à ce que je cherche à faire.
Je vais potasser le code et essayer de l'adapter à mon fichier
original et ne manquerai pas de revenir vers toi si je cale...

Merci pour le temps consacré
Eric

Le 16/02/2011 14:18, h2so4 a écrit :
Eric C has brought this to us :
Bonjour à tous,

Voici mon fichier excel 2002

http://cjoint.com/?0cptIfkC4we

A partir de la feuille data, je voudrais extraire mes données avec une
macro, choisir la période à traiter (inputbox p ex) et sortir sur la
feuille récap un résumé par catégorie et par mois.(comme dans l'
exemple)

Pour le moment, à l'aide de filtres automatiques, j'extrais mes
données, mais c'est très long et je dois copier des formules pour
faire les sommes.

Je me suis essayé en VBA mais bon, chacun son métier ;-)

Avez-vous une piste qui pourrait m'aider ?
Merci à vous déjà...
Eric



http://cjoint.com/?0cqorMexjOi

en essayant de respecter la mise en page que tu souhaites.





http://cjoint.com/?0cqvk4xzXcw

avec quelques commentaires dans le code



Encore un ptite question, SVP ....

Je voudrais en début de macro effacer complètement la feuille Recap1
afin de repartir d'une feuille blanche, j'ai donc essayé
Worksheets("Recap1").Cells.Select
Selection.ClearContents
mais cela me donne une erreur...

Pour optimiser, je voudrais également afficher la liste des clients sous
leur nombre, j'y arrive mais la liste est parfois trop longue et les
cellules sont alors écrasées par la catégorie suivante. Ce n'est pas
très académique...

Par ailleurs,
Worksheets("recap1").Range("A" & firstlignecategorie & ":E" & ligne).Select
donne aussi une erreur pour créer le cadre
la méthode select de la classe range a échoué.(ca c'est pas important,
je le fais en manuel)

Et
.Interior.TintAndShade = 0
.Interior.PatternTintAndShade = 0
donne propriete ou methode non gérée par cet objet
(pas important non plus)


OK, ca fait 4 ptites questions, je sais, j'abuse....


Merci
Eric
Avatar
h2so4
Eric C used his keyboard to write :

Le 16/02/2011 21:11, h2so4 a écrit :
Eric C submitted this idea :
Acide sulfurique !!
Génial !!

Cela ressemble à première vue à ce que je cherche à faire.
Je vais potasser le code et essayer de l'adapter à mon fichier
original et ne manquerai pas de revenir vers toi si je cale...

Merci pour le temps consacré
Eric

Le 16/02/2011 14:18, h2so4 a écrit :
Eric C has brought this to us :
Bonjour à tous,

Voici mon fichier excel 2002

http://cjoint.com/?0cptIfkC4we

A partir de la feuille data, je voudrais extraire mes données avec une
macro, choisir la période à traiter (inputbox p ex) et sortir sur la
feuille récap un résumé par catégorie et par mois.(comme dans l'
exemple)

Pour le moment, à l'aide de filtres automatiques, j'extrais mes
données, mais c'est très long et je dois copier des formules pour
faire les sommes.

Je me suis essayé en VBA mais bon, chacun son métier ;-)

Avez-vous une piste qui pourrait m'aider ?
Merci à vous déjà...
Eric



http://cjoint.com/?0cqorMexjOi

en essayant de respecter la mise en page que tu souhaites.





http://cjoint.com/?0cqvk4xzXcw

avec quelques commentaires dans le code



Encore un ptite question, SVP ....

Je voudrais en début de macro effacer complètement la feuille Recap1 afin de
repartir d'une feuille blanche, j'ai donc essayé
Worksheets("Recap1").Cells.Select
Selection.ClearContents
mais cela me donne une erreur...

Pour optimiser, je voudrais également afficher la liste des clients sous leur
nombre, j'y arrive mais la liste est parfois trop longue et les cellules sont
alors écrasées par la catégorie suivante. Ce n'est pas très académique...

Par ailleurs,
Worksheets("recap1").Range("A" & firstlignecategorie & ":E" & ligne).Select
donne aussi une erreur pour créer le cadre
la méthode select de la classe range a échoué.(ca c'est pas important, je le
fais en manuel)

Et
.Interior.TintAndShade = 0
.Interior.PatternTintAndShade = 0
donne propriete ou methode non gérée par cet objet
(pas important non plus)


OK, ca fait 4 ptites questions, je sais, j'abuse....


Merci
Eric



voici une version adaptée

la feuille recap1 existe-t-elle bien chez toi ? sinon il faut la créer.

http://cjoint.com/?0cruluTnZw

--
h2so4
ca PAN
pique DORA
.
Avatar
Eric C
Le 17/02/2011 20:14, h2so4 a écrit :
Eric C used his keyboard to write :

Le 16/02/2011 21:11, h2so4 a écrit :
Eric C submitted this idea :
Acide sulfurique !!
Génial !!

Cela ressemble à première vue à ce que je cherche à faire.
Je vais potasser le code et essayer de l'adapter à mon fichier
original et ne manquerai pas de revenir vers toi si je cale...

Merci pour le temps consacré
Eric

Le 16/02/2011 14:18, h2so4 a écrit :
Eric C has brought this to us :
Bonjour à tous,

Voici mon fichier excel 2002

http://cjoint.com/?0cptIfkC4we

A partir de la feuille data, je voudrais extraire mes données avec
une
macro, choisir la période à traiter (inputbox p ex) et sortir sur la
feuille récap un résumé par catégorie et par mois.(comme dans l'
exemple)

Pour le moment, à l'aide de filtres automatiques, j'extrais mes
données, mais c'est très long et je dois copier des formules pour
faire les sommes.

Je me suis essayé en VBA mais bon, chacun son métier ;-)

Avez-vous une piste qui pourrait m'aider ?
Merci à vous déjà...
Eric



http://cjoint.com/?0cqorMexjOi

en essayant de respecter la mise en page que tu souhaites.





http://cjoint.com/?0cqvk4xzXcw

avec quelques commentaires dans le code



Encore un ptite question, SVP ....

Je voudrais en début de macro effacer complètement la feuille Recap1
afin de repartir d'une feuille blanche, j'ai donc essayé
Worksheets("Recap1").Cells.Select
Selection.ClearContents
mais cela me donne une erreur...

Pour optimiser, je voudrais également afficher la liste des clients
sous leur nombre, j'y arrive mais la liste est parfois trop longue et
les cellules sont alors écrasées par la catégorie suivante. Ce n'est
pas très académique...

Par ailleurs,
Worksheets("recap1").Range("A" & firstlignecategorie & ":E" &
ligne).Select
donne aussi une erreur pour créer le cadre
la méthode select de la classe range a échoué.(ca c'est pas important,
je le fais en manuel)

Et
.Interior.TintAndShade = 0
.Interior.PatternTintAndShade = 0
donne propriete ou methode non gérée par cet objet
(pas important non plus)


OK, ca fait 4 ptites questions, je sais, j'abuse....


Merci
Eric



voici une version adaptée

la feuille recap1 existe-t-elle bien chez toi ? sinon il faut la créer.

http://cjoint.com/?0cruluTnZw



LO,

OK pour effacer la feuille recap1 (elle existe bien au départ).
OK pour le nom des clients, super.

Il reste encore un problème, la ligne
Worksheets("recap1").Range("A" & Trim(Str(firstlignecategorie)) & ":E" &
Trim(Str(ligne))).Select
donne toujours une erreur...
La méthode select de la classe range a échoué.

Pas grave, je fais l'encadrement en manuel :-)

Merci!
Eric
Avatar
h2so4
Je reponds au-dessus, pour être en ligne avec les us de ce newsgroup.


peux-tu rajouter les instructions suivantes dans le code juste avant
l'instruction qui pose probleme et m'envoyer le résultat de l'affichage
?

rz= "A" & Trim(Str(firstlignecategorie)) & ":E" & Trim(Str(ligne))
MsgBox rz

Merci

Worksheets("recap1").Range("A" & Trim(Str(firstlignecategorie)) & ":E" &
Trim(Str(ligne))).Select




Eric C explained on 19/02/2011 :


Il reste encore un problème, la ligne
Worksheets("recap1").Range("A" & Trim(Str(firstlignecategorie)) & ":E" &
Trim(Str(ligne))).Select
donne toujours une erreur...
La méthode select de la classe range a échoué.

Pas grave, je fais l'encadrement en manuel :-)

Merci!
Eric



--
h2so4
ca PAN
pique DORA
.
Avatar
Eric C
Bonsoir,

J'ai ajouté tes instructions, et je recois A2:E22 comme message, cad
exactement la zone à encadrer dans recap1...
Puis, message d'erreur d'exécution 438, propriété ou méthode non gérée
par cet objet...
Trop fort pour moi !
Merci
Eric

Le 19/02/2011 13:17, h2so4 a écrit :
Je reponds au-dessus, pour être en ligne avec les us de ce newsgroup.


peux-tu rajouter les instructions suivantes dans le code juste avant
l'instruction qui pose probleme et m'envoyer le résultat de l'affichage ?

rz= "A" & Trim(Str(firstlignecategorie)) & ":E" & Trim(Str(ligne))
MsgBox rz

Merci

Worksheets("recap1").Range("A" & Trim(Str(firstlignecategorie)) & ":E"
& Trim(Str(ligne))).Select




Eric C explained on 19/02/2011 :


Il reste encore un problème, la ligne
Worksheets("recap1").Range("A" & Trim(Str(firstlignecategorie)) & ":E"
& Trim(Str(ligne))).Select
donne toujours une erreur...
La méthode select de la classe range a échoué.

Pas grave, je fais l'encadrement en manuel :-)

Merci!
Eric



1 2