Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Incorporer une condition dans une macro

  • Initiateur de la discussion Initiateur de la discussion bigberge
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

bigberge

XLDnaute Nouveau
Bonjour,

Je cherche à inclure une condition dans une macro mais ne sais pas du tout comment faire. Mon fichier est une compilation des statistiques d'une ligue de balle. J'ai une macro qui permet de trier les différentes statistiques offensives des joueurs, en appuyant sur le bouton approprié.

Ce que j'aimerais c'est que si un joueur ne possède pas au minimum 5 partie de jouées, son nom et ses statistiques de retrouvent à la fin de mon total. Je ne sais pas si mon exemple est clair ou si je m'exprime correctement? Donc un joueur qui a joué 15 partie doit se retrouer devant un joueur qui a 4 parties de jouées, et ce même si le second joueur à une meilleure moyenne au bâton.

Merci à vous!
 
Re : Incorporer une condition dans une macro

Bonjour bigberge,

sans voir ton fichier, il faudrait sans doute trier en fonction du nombre de partie jouées
tout rechercher tous ceux qui ont plus de 5 parties et les trier
ensuite prendre le reste et trier

à+
Philippe

Edit: voir fichier joint
 

Pièces jointes

Dernière édition:
Re : Incorporer une condition dans une macro

Bonsoir,
La technique ne repose pas sur un test dans la macro.
Il suffit de faire un premier tri sur l'ensemble des données par le nombre de matches joués par ordre décroissant, puis de trouver la zone ne contenant que des joueurs ayant plus de cinq matches et de trier sur les performances.
On peut enregistrer les deux macros de tri assez facilement.
Pour délimiter la seconde zone, il faut passer en revue la liste des joueurs pour trouver le premier qui n'a que 5 matches. ON connait alors le haut et le bas de la base. IL suffit de trier.
Un exemple à suivre bientôt....

A +
Hellnar
 
Re : Incorporer une condition dans une macro

Une macro pour démarrer...
J'ai choisi d'utiliser la fonction recherche (fin, ctrl F) d'Excel pour trouver le premier qui n'a que cinq matches. C'est plus rapide, surtout si le nombre de joueurs est important

La première colonne contient les noms, la seconde les matches et la troisième des performances...

Sub tri_super_cinq()
Range("A1").Select
Selection.CurrentRegion.Select
Set base = Selection
ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range("B2") _
, SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Feuil1").Sort
.SetRange base
.Header = xlYes
.Orientation = xlTopToBottom
.Apply
End With

'recherche de la zone de + 5
Columns("B:B").Select
Selection.Find(What:="5", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False).Activate

Set base = Range("A1:C" & ActiveCell.Row)
base.Select
ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range("C2") _
, SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Feuil1").Sort
.SetRange base
.Header = xlYes
.Orientation = xlTopToBottom
.Apply
End With
End Sub

Voir la pièce jointe.
Bon courage
Hellnar
 

Pièces jointes

Re : Incorporer une condition dans une macro

OOOPS,

Je n'avais pas vu la réponse de Phlaurent55 qu'il m'en excuse.
Nos programmes sont très proches mais je ne vois pas l'intérêt de reporter sur le coté une par une les données des joueurs les plus actifs.
Autant trier sur place les meilleurs puis les scores.
J'ai reporté sur ce fichier les deux macros.

Bon lecture
Hellnar
 

Pièces jointes

Re : Incorporer une condition dans une macro

Re,
J'ai reporté sur ce fichier les deux macros.
@ Hellnar
après activation des 2 macros, je constate (dans la partie gauche de la feuille) que le classement n'est plus le même à partir de la ligne 29

ça ne fonctionnait pas dans ton exemple précédent

à+
Philippe

Edit: Modifs du message en bleu
 
Dernière édition:
Re : Incorporer une condition dans une macro

Merci de l'info, je vais vérifier cette différence.
Il y a un pb dans mon fichier qui peut être causé par le fait qu'aucun joueur peut n'en être qu'à 5 matches !
DOnc je remplace la fonction recherche par cela
Sub rechercheminimum()
fin = Range("B1").End(xlDown).Row
While Cells(fin, 2).Value < 5
fin = fin - 1
Wend
Cells(fin, 2).Select
End Sub

et ainsi je peux continuer.

A plus

Hellnar
 
Re : Incorporer une condition dans une macro

Oui, j'ai vu la différence me semble venir du fait que les joueurs les moins actifs ne sont pas triés par performance.
Je ne pense pas que cela ait un intérêt. Si c'est le cas, il suffit de refaire un tri sur les moins actifs.

Qu'en pense le créateur de la question ??

Hellnar
 
Re : Incorporer une condition dans une macro

Bonsoir,
Juste avant de "mettre la viande dans le torchon" comme on dit dans un film culte...
la version la plus courte :

Sub tri_super_cinq()
tri Range("A1").CurrentRegion, "B2", xlYes
finale = Range("B1").End(xlDown).Row
rechercheminimum finale
limite = ActiveCell.Row
tri Range("A1:C" & limite), "C2", xlYes
finale = Range("B1").End(xlDown).Row
tri Range("A" & limite + 1 & ": C" & finale), "C2", xlNo
End Sub
Sub rechercheminimum(fin)
While Cells(fin, 2).Value < 5
fin = fin - 1
Wend
Cells(fin, 2).Select
End Sub

Sub tri(labase, lecritere, lentete)
ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range(lecritere) _
, SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Feuil1").Sort
.SetRange labase
.Header = lentete
.Orientation = xlTopToBottom
.Apply
End With
End Sub

Bonne nuit à tous

Hellnar
 

Pièces jointes

Re : Incorporer une condition dans une macro

Re,

@ Hellnar,

après ta 4ème version, il subsiste toujours des erreurs à partir de la ligne 28
clic sur la miniature ci-dessous


à+
Philippe
 

Pièces jointes

  • 111.jpg
    85 KB · Affichages: 73
  • 111.jpg
    85 KB · Affichages: 78
Re : Incorporer une condition dans une macro

Bonjour,

AU réveil, les yeux sont plus ouverts.
Les différences entre nous viennent, me semble-t-il, de savoir si les joueurs ayant 5 matches sont dans la partie du haut ou du bas.
Il me semble que le demandeur ait mentionné 5 minimum, donc ils font partie du haut du tableau.
QU'en penses-tu @phlaurent55

Bonne journée

Hellnar
 
Re : Incorporer une condition dans une macro

Je vous remercie pour la rapidité de vos réponses. Vous êtes de vrais génis d'excel! Je vais regarder ça et tenter de comprendre. Je doisa vouer que c'est pas mal chinois pour moi. Je vous tiendrai au courant. Merci encore!
 
Re : Incorporer une condition dans une macro

Bonsoir,

C'est une macro qui était demandée. Mais on peut aussi le faire manuellement par trois tris successifs.
Sinon, pour utiliser la macro il faut faire très attention à l'organisation de la base de données.
Pour plus de précision, il faut envoyer au moins les entêtes de la base.
Bon courage

Hellnar
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
0
Affichages
728
Réponses
2
Affichages
738
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…