× Aidez la recherche contre le COVID-19 avec votre ordi ! Rejoignez l'équipe PC Astuces Folding@home
 > Tous les forums > Forum Bureautique
 Probleme excel - tri dans macro Excel 2007Sujet résolu
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
djambo
  Posté le 13/06/2013 @ 17:26 
Aller en bas de la page 
Petit astucien

Bonjour,

Après de nombreuses recherche je n'arrive pas à trouver comment trier les dix plus grandes valeurs et les placer dans cette macro

La colonne B est la désignation et P la colonne a triée qui représente un pourcentage

Je voudrais placer la valeur du tri dans cette fonction à la place des "range" car là, j'ai la totalité des lignes

.SetSourceData Source:=Sheets(1).Application.Union(Range("B14:B128"), Range("P14:P128"))

Subgraphique()
'
' graphique Macro
'
'Création d'un graphique dans la feuille active.
ActiveSheet.Shapes.AddChart
'Activation du graphique
ActiveSheet.ChartObjects(1).Activate
'Propriétés du graphique
With ActiveChart
' Titre du Graphique
.HasTitle = True
.ChartTitle.Text = "Comparatif"
'Selection de la source des données
.SetSourceData Source:=Sheets(1).Application.Union(Range("B14:B28"), Range("P14:P28"))
'Définition du Type du Graphique en colonne
.ChartType = xl3DColumn
ActiveChart.ChartType = xlColumnClustered
ActiveChart.PlotArea.Select
ActiveChart.ClearToMatchStyle
ActiveChart.ChartStyle = 43
ActiveChart.ChartArea.Select

End With

EndSub



Modifié par djambo le 13/06/2013 17:31
Publicité
rj390111
 Posté le 13/06/2013 à 21:46 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Bonsoir,

Il faudrait trier les données par ordre décroissant avant de sélectionner les 10 premières lignes de la plage.

djambo
 Posté le 13/06/2013 à 21:57 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Bonoir,

j'en conviens mais je ne sais pas comme remplacer les definition de cellules dans range dans cette instruction

.SetSourceData Source:=Sheets(1).Application.Union(Range("B14:B28"), Range("P14:P28"))


il y a bien ce type SORT

Range("B14:P28").Sort Key1:=Range("P1"), Order1:=xlAscending,,, Header:=xlGuess, OrderCustom:=1,MatchCase:= False, Orientation:=xlTopToBottom

mais son utilisation n'est pas simple

comment l'utiliser, peut-on dire variable range(....).sort....., mais ensuite dans le .setsourcedate comment l'intégrer

cordialement

rj390111
 Posté le 14/06/2013 à 10:47 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Bonjour,

Je viens de remarquer

.SetSourceData Source:=Sheets(1).Application.Union(Range("B14:B128"), Range("P14:P128"))

et dans la procédure

.SetSourceData Source:=Sheets(1).Application.Union(Range("B14:B28"), Range("P14:P28"))

De plus entre B14 et B28 il y 15 lignes et pas 10

djambo
 Posté le 14/06/2013 à 14:34 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Bonjour,

Oui tu as raison, mais c'était pour un affichage du graphique pour y voir la dimension pour dix sélections.

Je voudrais cette instruction remplacer le contenu du range par un tableau qui représente les données triés et si on ne peux placer un tableau, chose que je n'ai pas réussis à faire, il y a la fonction Sort, mais là encore comme faire.

P étant la colonne à trier

B étant la désignation de la zone triée

.SetSourceData Source:=Sheets(1).Application.Union(Range("tableau"), Range("tableau"))

Cette application permet de donner un comparatif sur les antivirus en teste personnel, l'image devrais te faire comprendre mieux.

Les données dans le tableau ne sont pas réelles, rien que du teste.

Cordialement,



Modifié par djambo le 14/06/2013 14:52
rj390111
 Posté le 14/06/2013 à 18:04 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Re,

Voilà un exemple de tri par âge d'une liste d'enfants. Je ne sais pas si cela t'aidera, mais tu peux voir comment je délimite la plage à trier.

Sub Tri_Age() ' ' Tri par age croissant dans Excel 2007

''Lig1 = première ligne derlig = dernière ligne du tableau col1 1ère colonne dercol = dernière colonne du tableau

Dim lig1 As Integer, derlig As Integer, col1 As Integer, dercol As Integer

ActiveSheet.Unprotect

'Déterminer les limites du tableau

lig1 = 3: derlig = Range("A65536").End(xlUp).Row

col1 = 1: dercol = Range("IV3").End(xlToLeft).Column

'Sélectionner le tableau en fonction des limites trouvées

Range(Cells(lig1, col1), Cells(derlig, dercol)).Select

'Tri par âge de la liste d'enfants les âges sont en colone 7

ActiveWorkbook.Worksheets("Renseignements").Sort.SortFields.Clear

ActiveWorkbook.Worksheets("Renseignements").Sort.SortFields.Add Key:=Range( _

Cells(lig1 + 1, 7), Cells(derlig, 7)), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _

xlSortNormal

With ActiveWorkbook.Worksheets("Renseignements").Sort

.SetRange Range(Cells(lig1, col1), Cells(derlig, dercol))

.Header = xlYes

.MatchCase = False

.Orientation = xlTopToBottom

.SortMethod = xlPinYin

.Apply

End With

'Remet le curseur en A3

Range("A3").Select

ActiveSheet.Protect

End Sub

Si tu pouvais mettre ton fichier avec des données bidons on pourrait programmer la procédure pour fair le tri puis la sélection des données du graphique.

djambo
 Posté le 14/06/2013 à 18:27 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Ok, je te mets le fichier, je suis en version excel 2007

http://www.sendspace.com/file/jscbb7

normalement la version fonctionne sans le tri bien sûr, une amie l'a essayée, donc le voilà

merci de ton aide,

djambo
 Posté le 14/06/2013 à 21:53 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Bonsoir à tous,

Un grand merci à rj390111 sans qui, mon problème ne serais pas résolu.

Cordialement,


Page : [1] 
Page 1 sur 1

Vous devez être connecté pour poster des messages. Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !


Les bons plans du moment PC Astuces

Tous les Bons Plans
3,19 €Jeu PC Among Us à 3,19 €
Valable jusqu'au 04 Décembre

Steam fait une promotion sur le jeu dont tout le monde parle : Among Us qui passe à 3,19 € sur PC. Jouez de 4 à 10 personnes en ligne ou en local. Préparez votre vaisseau au départ mais attention, un ou plusieurs joueurs sont des imposteurs et feront tout pour tuer tout le monde. Notez que s'il n'offre pas le même confort de jeu en mobilité, il est gratuit sous iOS et Android.


> Voir l'offre
14,90 €Windows 10 Pro 32/64 bits OEM à 14,90 €
Valable jusqu'au 04 Décembre

Le vendeur sérieux Digital FR propose sur Amazon la clé d'activation pour Windows 10 professionnel en français 32 bits / 64 bits à 14,90 €. Cette clé livrée par email fonctionne avec l'outil d'installation et de création de support de Microsoft que vous pouvez télécharger ici ou directement avec l'ISO de Windows 10 Pro. De quoi installer légalement Windows 10 Pro sur un PC. Pour en savoir plus sur l'achat et l'installation d'une clé OEM de Windows 10, suivez les indications de notre dossier pratique.


> Voir l'offre
54,99 €SSD Samsung 860 EVO 500 Go à 54,99 €
Valable jusqu'au 04 Décembre

Amazon fait une promotion sur le SSD Samsung 860 EVO 500 Go qui passe à 54,99 € livré gratuitement alors qu'on le trouve ailleurs à partir de 80 €. Ce SSD offre des vitesses de 560 Mo/s en lecture et 520 Mo/s en écriture. Il est garanti 5 ans. Une bonne affaire.


> Voir l'offre

Sujets relatifs
macro majuscule dans excel 2007
probleme avec macro sur excel 2007
2 pages par feuille dans macro excel
Excel 2007 Copier/Coller d’une feuille à l’autre Dans un même classeur.
Creation d' une boucle macro dans fichier EXCEL pour impression
Récupération dates dans tableau excel 2007
besoin d'une macro excel 2007
problème de filtre dans Excel 2010
[Excel 2007] Macro : Sélection d'un tableau selon sa longueur variable
excel 2007 macro mise en page, quadrillage, filtre
Plus de sujets relatifs à Probleme excel - tri dans macro Excel 2007
 > Tous les forums > Forum Bureautique