Récupérer les 3 plus grosses valeur d'1 colonne [EXCEL] - Logiciels - Windows & Software
Marsh Posté le 09-01-2007 à 15:22:00
Salut
A condition que tes données seoint présentées ainsi:
Colonne A
Fournisseur
Fourn.1
....
Colonne B
CA
3000
....
Sub Macro()
Range("A1" ).Select
Selection.CurrentRegion.Select
Selection.Sort Key1:=Range("B2" ), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, Orientation:=xlTopToBottom
ActiveSheet.Range("B1" ).End(xlDown).Offset(1, -1).Select
ActiveCell.Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.Offset(-2, 2)).Select
Selection.Copy
Sheets("Feuil1" ).Select
Range("A1" ).Select
ActiveSheet.Paste
Range("A1" ).Select
End Sub
Marsh Posté le 09-01-2007 à 18:28:28
Merci TAM136. J'essaierai ce code dès demain matin.
Juste une question : cette macro ne modifie pas mon tableau ? Il ne fait que récupérer ses données !?
J'te tiens au courant !
Marsh Posté le 09-01-2007 à 22:52:42
andlio a écrit : Merci TAM136. J'essaierai ce code dès demain matin. J'te tiens au courant ! |
Si.En fait, sur la seconde page, les valeurs sont triées par ordre croissant mais sans séparation entre fournisseur et CA.Par exemple, tu dois avoir
----------------------------------
| Fournisseurs | CA |
-----------------+----------------
| Fourn. 3 | 2000 |
-----------------+----------------
| Fourn. 1 | 3000 |
-----------------+----------------
| Fourn. 4 | 3550 |
-----------------+----------------
| Fourn. 2 | 5000 |
-----------------+----------------
Je vais regarder pour faire en sorte que ton tableau soit récupéré tel qu'à l'origine.Par contre, il faudrait que tu me précises si toutes les cases de ton tableau sont toujours remplies et si le nombre de lignes est fixe ou non (je suppose que non)
Marsh Posté le 10-01-2007 à 08:15:39
Re,
Cette fois-ci avec ce code, ton tableau sur la feuille 2 est tel que tu l'avais avant le lancement de la macro.
Sheets("Feuil2" ).Select
Range("A1" ).Select
Selection.CurrentRegion.Select
Selection.Copy
Sheets("Feuil3" ).Select
ActiveSheet.Paste
Sheets("Feuil2" ).Select
Range("A1" ).Select
Selection.CurrentRegion.Select
Selection.Sort Key1:=Range("B2" ), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, Orientation:=xlTopToBottom
ActiveSheet.Range("B1" ).End(xlDown).Offset(1, -1).Select
ActiveCell.Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.Offset(-2, 2)).Select
Selection.Copy
Sheets("Feuil1" ).Select
Range("A1" ).Select
ActiveSheet.Paste
Range("A1" ).Select
Sheets("Feuil3" ).Select
Selection.Copy
Sheets("Feuil2" ).Select
Range("A1" ).Select
ActiveSheet.Paste
Sheets("Feuil3" ).Select
Selection.ClearContents
Le code est un peu long. Il est peut-être possible de le faire avec une formule mais honnêtement, je ne vois pas.
Marsh Posté le 11-01-2007 à 09:26:19
Merci TAM pour ce bout de code. Je vais voir ce que ça donne!
Marsh Posté le 08-01-2007 à 15:32:53
Salut !
J'ai un classeur excel avec 2 feuilles. La première représente une sorte de synthèse de la deuxième.
Dans la 2e j'ai un tableau du genre :
----------------------------------
| Fournisseurs | CA |
-----------------+----------------
| Fourn. 1 | 3000 |
-----------------+----------------
| Fourn. 2 | 5000 |
-----------------+----------------
| Fourn. 3 | 2000 |
-----------------+----------------
| Fourn. 4 | 3550 |
-----------------+----------------
Dans ma feuille 1 (la feuille de synthèse), je voudrais afficher les 3 fournisseurs ayant le plus gros CA.
Est-ce possible ?
Merci