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

Besoin de votre aide pour une petite macro excel / VBA svp

5 réponses
Avatar
Greg
Bonjour,

je suis +/- debutant en excel VBA et j aimerai faire une petite macro qui m aiderais dans mon travail quotidien.

En gros, pour me permettre d avancer par moi même, j ai juste besoin d 'extraire les infos de la page datas pour obtenir les mêmes rsultats que ceux en rouge dans la page "Results" (resultats que je calculent manuellement pour l instant) du fichier excel que vous pourrez trouver sur à l adresse suivante : http://www.si-la-gi.com/TestMacroGreg.xls :

- Amount (somme des montants par même classe et même value date)
- Class
- Value date

Le probleme est que je ne sais pas vraiment comment faire ca en vba...

Une bonne âme pourrait il m aider sur ce projet ?

Merci d avance,

Gregory

5 réponses

Avatar
AV
Mets des étiquettes de colonnes dans ta feuille "Datas" et fais un Tableau
croisé Dynamique

AV
Avatar
Philippe.R
Bonjour Greg,
Voici une copie du célèbre Message de Bienvenue rédigé par Monique (qui est bien occupée ces derniers
temps par ailleurs), il présente une belle collection de références qui devraient t'aider à progresser.
"=============================début de copie================================="
bienvenue sur mpfe :-)

Sur les sites proposés dans ce message d'accueil, tu découvriras des
cours (avec ou sans VBA), des classeurs d'exemples à télécharger, des
macros, des trucs et astuces...

Pour connaître les habitudes de mpfe (et les erreurs à éviter, comme les
fichiers joints...), tu peux lire ces messages publiés régulièrement
ici, avec l'un de ces intitulés
- FAQ MPFE http://dj.joss.free.fr/netiquet.htm (nétiquette, conseils...)
- [Charte] du forum MPFE
et consulter cette page
http://www.excelabo.net/mpfe/connection.htm
(connexion,conseils...), à consulter absolument si tu suis le forum
depuis un site web (la solution la moins efficace et la moins
confortable) ou avec le serveur de Wanadoo (très peu performant quant au
délai d'affichage et au nombre de messages publiés).
Le serveur à utiliser : news.microsoft.com - ou cliquer directement sur
news:microsoft.public.fr.excel

Pour les débutants, voilà 5 bons trucs pour apprendre vite :
- utiliser souvent l'enregistreur de macro et analyser le code obtenu
- utiliser la touche F1 pour appeler l'aide (à propos du mot-clef, en
VBA, sur lequel se trouve le curseur)
- tester et essayer de comprendre des réponses faites à d'autres
- consulter souvent les sites renseignés
- ne jamais hésiter à poser des questions sur le forum

Voici la liste des sites dédiés à Excel, réalisés par des mpfie(ne)s et
que nous devons tous avoir dans nos favoris.
Débutant ou utilisateur confirmé, tu y trouveras de quoi apprendre,
progresser et résoudre bien des problèmes.
(la date d'une mise à jour est signalée par ** ** )
http://dj.joss.free.fr/faq.htm ** 04/03/04 **
la FAQ du forum, mise en oeuvre par Daniel et à lire absolument par tout
nouveau sur mpfe : la bonne manière de participer au forum (charte,
souriettes, abréviations...), liens, bibliographie, les réponses aux
questions le plus souvent posées, des trucs et astuces, un moteur de
recherche interne et externe (Yahoo), une page débutants
http://www.excelabo.net/xl/debuter.php ** 30/05/04 **
le site humoro-ludique de Misange : une importante rubrique "Trucs et
astuces", des classeurs à télécharger, un glossaire, une page débutants,
des jeux en VBA... et un méta-moteur de recherche sur 6 sites de cette
liste...
mais aussi tout ce qui fait "l'esprit mpfe", les perles, les gifs...
et,sur http://fotoflo.free.fr/ les photos des soupers/dîners de mpfe
http://longre.free.fr/ ** 19/03/03 **
le site de Laurent, notre Grand Chef à Quatre Plumes : de très nombreux
liens commentés, les macros pointues de Laurent... (techniques de
programmation, calculs de dates et d'heures, Api...)
http://jacxl.free.fr/mpfe/ ** 01/03/03 **
le site de : les graphiques, la bourse, le Web, un cours VBA, un
moteur de recherche à la page Aide... et le trombinoscope des
mpfien(ne)s
http://ericrenaud.free.fr/index.html ** 18/06/03 **
le site d'Eric : particulièrement destiné aux débutants (UserForm...)
http://perso.wanadoo.fr/frederic.sigonneau ** 24/04/04**
le site de Frédéric : gestions de temps, VBA pour Excel... une mine d'or
de macros
http://xlbysteph.free.fr/aideinformatique/web.htm ** 24/04/03 **
le site de Stéphane : cours VBA, Excel 4 (ou 5) et Excel 97/2000...
http://perso.club-internet.fr/bdafonse
le site de Bruno : formules, classeurs à télécharger...
http://cherbe.free.fr/ ** 26/02/04 **
le site de Christian : initiation à Excel, initiation à VBA, Excel
avancé sans VBA... (cours à télécharger)
http://www.ilyapa.net/excel/ ** 18/05/04 **
le site de Pascal : procédures VBA, composants par
l'exemple,calendriers, jeux
http://intendant.free.fr/ ** 13/03/02 **
le site de Thierry : cours VBA (début et perfectionnement), graphique,
Excel en bureautique...
http://www.polykromy.com/ ** 24/03/04**
le site de Gaëtan : cours sur Excel sans VBA, les couleurs, des astuces
animées...
http://www.gaboly.com ** 05/02/03 **
le site de Michel, cours Excel et VBA (avec un Mac)...
http://www.excel-downloads.com ** 08/03/04**
le site de David, des programmes Excel à télécharger
http://mapage.noos.fr/pnoss/excel.html ** 23/08/02 **
le site de Philippe, trucs et astuces, Exoutils (barre d'outils pour
Excel à télécharger)...
http://www.champey.com/
le site de Patrice : les langages de programmation (VB, VBS et VBA)
http://www.anthony-penel.fr.st
le site d'Anthony : des macros appliquées à la finance
http://www.fundp.ac.be/~jmlamber/
le site de Jean-Marie : initiation VBA, TCD, listes, solveur...
http://www.ibelgique.com/OfficeAssistant ** 08/08/01 **
le site de Bureauticien : nombreux exemples résolus par VBA,fonctions...
http://www.cathyastuce.com/index.htm ** 28/02/04**
le site de Cathy : cours Excel avec ou sans VBA...
http://perso.wanadoo.fr/jean.duprat
le site de Papy Jean : fiches Excel pour débutants...
http://www.ifrance.com/fleguen/excel.html
le site de Konga : des classeurs d'exercices (fonctions, macros)


Pour une collection très fouillée d'adresses (avec commentaires) :
le classeur de Clément M, à télécharger sur disciplus (Excelabo)
Favoris.xls
Et un lien à y ajouter, la liste des constantes intrinsèques de VBA avec
leur valeur numérique (par versions d'Excel) :
http://support.microsoft.com/support/kb/articles/Q112/6/71.ASP
(télécharger: wc0993.exe)

Pour le passage de Excel 4 à Excel 97, un lien proposé par Geo
http://www.microsoft.com/FRANCE/officedev/infotech/info.asp?mar=/FRANCE/
officedev/infotech/MacroXLtoVBA.html
(le lien tient sur plusieurs lignes, il se termine par html)
ou http://minilien.com/?5vyhNUG62R

Enfin, pour retrouver d'anciens messages, tu peux aller sur
http://groups.google.com/advanced_group_search
avec les conseils de Clément M pour obtenir les meilleurs résultats :
--- Là, il y a un écran "bilingue" qui permet de faire une recherche
plus ou moins pointue, selon les informations dont l'on dispose.
Une fois que l'on a repéré un message, il est possible de récupérer
l'ensemble de la ficelle, en cliquant sur "Voyez Fil de Discussion (x
articles)".
Je me suis aperçu que Google fonctionnait très mal quand on fait une
recherche avec un nom qui contient des accents. Il semble donc
préférable d'utiliser l'adresse électronique comme nom d'auteur.
Auteur => 3.450 messages
Auteur Clément Marcotte => 1 message
Auteur Clément_Marcotte => 0 message ---

Bonne lecture et à bientôt sur mpfe.

"================================fin de copie================================="


--
Amicales Salutations
Retirer A_S_ pour répondre.
XL 97 / 2000 / 2002
Pour suivre le forum :
news://msnews.microsoft.com/microsoft.public.fr.excel
(Voulez-vous vous abonner ? -> Oui)

"Greg" a écrit dans le message de
news:40e6bbfe$0$16321$
Bonjour,

je suis +/- debutant en excel VBA et j aimerai faire une petite macro qui m aiderais dans mon travail
quotidien.


En gros, pour me permettre d avancer par moi même, j ai juste besoin d 'extraire les infos de la page
datas pour obtenir les mêmes rsultats que ceux en rouge dans la page "Results" (resultats que je

calculent manuellement pour l instant) du fichier excel que vous pourrez trouver sur à l adresse
suivante : http://www.si-la-gi.com/TestMacroGreg.xls :

- Amount (somme des montants par même classe et même value date)
- Class
- Value date

Le probleme est que je ne sais pas vraiment comment faire ca en vba...

Une bonne âme pourrait il m aider sur ce projet ?

Merci d avance,

Gregory




Avatar
Greg
Salut,

Merci pour ta reponse.

Cependant, une solution en vba ne serait elle pas plus flexible sachant que
les donnees de la feulle "Datas" seront deifferentes chaque jour, avec des
nouvelles classes, des nouvelles dates,... (mais tjr le même format)
Il n y a pas moyen en vba de faire qqchose du style "Pour chaque classe
[247,... faire la somme des montant ayant la même value date, et copié le
resultat ainsi que la classe et la value date dans la feuille "results" ?

Merci

Greg



"AV" a écrit dans le message de
news:
Mets des étiquettes de colonnes dans ta feuille "Datas" et fais un Tableau
croisé Dynamique

AV




Avatar
AV
Cependant, une solution en vba ne serait elle pas plus flexible


** Je ne le crois pas...

sachant que les donnees de la feulle "Datas" seront
deifferentes chaque jour, avec des
nouvelles classes, des nouvelles dates,... (mais tjr le même format)


** Il suffit pour cela que la plage des données source du TCD soit dynamique et
actualisée à chaque saisie (proc évènementielle)

Il n y a pas moyen en vba de faire qqchose du style "Pour chaque classe
[247,... faire la somme des montant ayant la même value date, et copié le
resultat ainsi que la classe et la value date dans la feuille "results" ?


** Bien sur on peut le faire mais ce sera beaucoup moins performant (boucle) !

AV

Avatar
Joel
Bonjour,

Va pour la solution VBA .....

Option Explicit

Sub FiltreInitial()
Application.ScreenUpdating = False
Worksheets("Results").Select
Range(Range("A3"), Range("A3").SpecialCells(xlCellTypeLastCell).Offset(1,
0)).ClearContents
Range(Range("A2").End(xlToRight).Offset(-1, 1),
Range("A3").SpecialCells(xlCellTypeLastCell).Offset(1, 1)).Clear

Worksheets("Datas").Select
If Range("A1") = "" Then
MsgBox "Aucune données"
Exit Sub
End If

Range("A2").End(xlToRight).Offset(0, 4).Name = "CelluleRef"

Range(Range("A1"), Range("A65536").End(xlUp)).Copy
Worksheets("Results").Select
Range("A3").Offset(0, 3 + Range("A3").CurrentRegion.Columns.Count +
1).PasteSpecial xlPasteValues

Worksheets("Datas").Select
Range(Range("J1"), Range("J65536").End(xlUp)).Copy
Worksheets("Results").Select
Range("B3").Offset(0, 3 + Range("A3").CurrentRegion.Columns.Count +
1).PasteSpecial xlPasteValues


Worksheets("Datas").Select
Range(Range("C1"), Range("C65536").End(xlUp)).Copy
Worksheets("Results").Select
Range("C3").Offset(0, 3 + Range("A3").CurrentRegion.Columns.Count +
1).PasteSpecial xlPasteValues

Worksheets("Datas").Select
Range(Range("G1"), Range("G65536").End(xlUp)).Copy
Worksheets("Results").Select
Range("E3").Offset(0, 3 + Range("A3").CurrentRegion.Columns.Count +
1).PasteSpecial xlPasteValues

Worksheets("Datas").Select
Range(Range("J1"), Range("J65536").End(xlUp)).Copy
Worksheets("Results").Select
Range("F3").Offset(0, 3 + Range("A3").CurrentRegion.Columns.Count +
1).PasteSpecial xlPasteValues

Worksheets("Datas").Select
Range(Range("F1"), Range("F65536").End(xlUp)).Copy
Worksheets("Results").Select
Range("H3").Offset(0, 3 + Range("A3").CurrentRegion.Columns.Count +
1).PasteSpecial xlPasteValues

Worksheets("Datas").Select
Range(Range("I1"), Range("I65536").End(xlUp)).Copy
Worksheets("Results").Select
Range("I3").Offset(0, 3 + Range("A3").CurrentRegion.Columns.Count +
1).PasteSpecial xlPasteValues
Selection.NumberFormat = "DD/MM/YYYY"
Range("A2").End(xlToRight).Offset(0, 5).Name = "CelluleRef"

Range(Range("A2"), Range("A2").End(xlToRight)).Copy
Range("CelluleRef").PasteSpecial xlPasteValues
Range("A2").Copy
Range("IV2").End(xlToLeft).Offset(0, 5).PasteSpecial xlPasteValues
Range("I2").Copy
Range("IV2").End(xlToLeft).Offset(0, 1).PasteSpecial xlPasteValues
Range(Range("IV2").End(xlToLeft).Offset(0, -1),
Range("IV2").End(xlToLeft)).Name = "Destination"

Application.CutCopyMode = False
Range("A3").End(xlToRight).Offset(0, 5).Select
ActiveCell.CurrentRegion.Select
Selection.AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range( _
"Destination"), Unique:=True

'Rappatriement des données
Dim oCell As Range
If Range("Destination").Range("A1").Offset(1, 0) = "" Then
MsgBox "Aucune donnée trouvées !!! Pas normal !!!"
Exit Sub
End If

For Each oCell In Range(Range("Destination").Range("A1").Offset(1, 0),
Cells(65536, Range("Destination").Range("A1").Column).End(xlUp))
Range("A65536").End(xlUp).Offset(1, 0).Value = oCell.Value
Range("I65536").End(xlUp).Offset(1, 0).Value = oCell.Offset(0, 1).Value
Range("B65536").End(xlUp).Offset(1, 0).Value Application.WorksheetFunction.Lookup( _
Range("B65536").End(xlUp).Offset(1, -1).Value,
Range(Range("CelluleRef").Offset(1, 0), Range("CelluleRef").End(xlDown)),
Range(Range("CelluleRef").Offset(1, 1), Range("CelluleRef").Offset(0,
1).End(xlDown)))
Range("C65536").End(xlUp).Offset(1, 0).Value Application.WorksheetFunction.Lookup( _
Range("C65536").End(xlUp).Offset(1, -2).Value,
Range(Range("CelluleRef").Offset(1, 0), Range("CelluleRef").End(xlDown)),
Range(Range("CelluleRef").Offset(1, 2), Range("CelluleRef").Offset(0,
2).End(xlDown)))
Range("F65536").End(xlUp).Offset(1, 0).Value Application.WorksheetFunction.Lookup( _
Range("F65536").End(xlUp).Offset(1, -5).Value,
Range(Range("CelluleRef").Offset(1, 0), Range("CelluleRef").End(xlDown)),
Range(Range("CelluleRef").Offset(1, 5), Range("CelluleRef").Offset(0,
5).End(xlDown)))
Range("H65536").End(xlUp).Offset(1, 0).Value Application.WorksheetFunction.Lookup( _
Range("H65536").End(xlUp).Offset(1, -7).Value,
Range(Range("CelluleRef").Offset(1, 0), Range("CelluleRef").End(xlDown)),
Range(Range("CelluleRef").Offset(1, 7), Range("CelluleRef").Offset(0,
7).End(xlDown)))

Range("E65536").End(xlUp).Offset(1, 0).Value = Application.Evaluate( _
"=SUMPRODUCT((" & Range(Range("CelluleRef").Offset(1, 0),
Range("CelluleRef").End(xlDown)).AddressLocal & _
"=" & Range("E65536").End(xlUp).Offset(1, -4).AddressLocal & ")*(" &
Range(Range("CelluleRef").Offset(1, 8), Range("CelluleRef").Offset(0,
8).End(xlDown)).AddressLocal & "=" & _
Range("E65536").End(xlUp).Offset(1, 4).AddressLocal & ")*" &
Range(Range("CelluleRef").Offset(1, 4), Range("CelluleRef").Offset(0,
4).End(xlDown)).AddressLocal & ")")


Next

End Sub



--

Bien cordialement,

Joël GARBE
www.joelgarbe.fr
"Greg" a écrit dans le message de
news:40e6bbfe$0$16321$
Bonjour,

je suis +/- debutant en excel VBA et j aimerai faire une petite macro qui
m aiderais dans mon travail quotidien.


En gros, pour me permettre d avancer par moi même, j ai juste besoin d
'extraire les infos de la page datas pour obtenir les mêmes rsultats que

ceux en rouge dans la page "Results" (resultats que je calculent
manuellement pour l instant) du fichier excel que vous pourrez trouver sur à
l adresse suivante : http://www.si-la-gi.com/TestMacroGreg.xls :

- Amount (somme des montants par même classe et même value date)
- Class
- Value date

Le probleme est que je ne sais pas vraiment comment faire ca en vba...

Une bonne âme pourrait il m aider sur ce projet ?

Merci d avance,

Gregory