[ RESOLU Classer par point et faire afficher la cote..mais...

Guido

XLDnaute Accro
Bonjour le Forum

J'aimerais classer les chx qui se trouvent dans la plage T23:W27 par point

Soit 4 point au 1er

Soit 3 point au 2em

Soit 2 point au 3em

Soit 1 point au 3em


ensuite faire afficher la cote en dessous du numero..

Le classement finale NE DEVRAS PAS CONTENIR un ou plusieurs chx avec une cote inferieur a 2.5 contre un.

Merci d'avance

Guido
 

Pièces jointes

  • Classer par point.xls
    17 KB · Affichages: 44
  • Classer par point.xls
    17 KB · Affichages: 36

job75

XLDnaute Barbatruc
Re : Classer par point et faire afficher la cote..mais...

Bonjour Guido, le forum,

Pas seulement un début :

Code:
Sub Classer()
Dim dest As Range, t, cote, d As Object, i&, j%, k
Set dest = [S29] '1ère cellule de destination
t = [T23:W27].Resize(, 4) '.Resize au cas où...
cote = [N17:O31] 'à adapter
Set d = CreateObject("Scripting.Dictionary")
Application.ScreenUpdating = False
For i = 1 To UBound(t)
  For j = 1 To 4
    If t(i, j) <> "" Then d(t(i, j)) = d(t(i, j)) + 5 - j
Next j, i
dest.Resize(2, Columns.Count - dest.Column + 1) = "" 'RAZ
If d.Count = 0 Then Exit Sub
With dest.Resize(2, d.Count)
  '---restitution---
  .Rows(1) = d.keys
  .Rows(2) = d.items
  '---tri horizontal---
  .Sort .Rows(2), 2, .Rows(1), , 1, Orientation:=2
  '---cotes avec élimination si < 2,5
  t = .Value: j = 0
  For i = 1 To d.Count
    k = Application.VLookup(t(1, i), cote, 2, 0)
    If IsNumeric(k) Then If k >= 2.5 Then _
      j = j + 1: t(1, j) = t(1, i): t(2, j) = k
  Next i
  .Value = "" 'RAZ
  .Resize(, j) = t
End With
End Sub
A+
 

Guido

XLDnaute Accro
Re : Classer par point et faire afficher la cote..mais...

Re

Bonjour job75

Merci pour le fichier.

j'ai fais la macros ,et j'ai un bug.

ou est mon erreur ,

Merci

Guido
 

Pièces jointes

  • Classer par point.xls
    27.5 KB · Affichages: 18
  • Classer par point.xls
    27.5 KB · Affichages: 28

job75

XLDnaute Barbatruc
Re : Classer par point et faire afficher la cote..mais...

Re, hello thebenoit59,

Alors c'est encore le foutoir chez vous Guido ?

Il saute pourtant aux yeux (c'est en rouge) que le guillemet d'un commentaire a été effacé...

Edit : cela dit je ne sais pas comment vous avez copié la macro :confused: je joins le fichier.

A+
 

Pièces jointes

  • Classer par point(1).xls
    39 KB · Affichages: 34

job75

XLDnaute Barbatruc
Re : Classer par point et faire afficher la cote..mais...

Re,

On aura remarqué que le tri déplace les formats des cellules.

De toute façon il est bien de faire une mise en forme à la fin :

Code:
'---mises en forme---
  .Interior.ColorIndex = xlNone
  .Resize(, 7).Interior.Color = .Cells(0, 0).Interior.Color
  .Rows(1).Resize(, j).Interior.Color = .Cells(1, 0).Interior.Color
  .Rows(2).Resize(, j).Interior.Color = .Cells(2, 0).Interior.Color
  .Font.ColorIndex = xlAutomatic
  .Font.Bold = True
  .HorizontalAlignment = xlCenter
Fichier (2).

A+
 

Pièces jointes

  • Classer par point(2).xls
    40 KB · Affichages: 37

Guido

XLDnaute Accro
Re : Classer par point et faire afficher la cote..mais...

Bonsoir thebenoit59,job75,et le Forum


Je te remercie job75 principalement pour ton travail en ma faveur,et ta patience...

une fois de plus ,quand je ne sais pas ...ou je ne sais pas faire ,ben je fait BUGUER.

et ce n'est pas vonlontaire de ma part.

Donc j'ai affecté la macros avec le bouton et CA MARCHE,Merci

Petite question ,peut tu m'ecrire la macro,pour que la selection me montre la selection

avec visuellement la selection complete avec les chx qui on la cote inferieur a 2.5.

comme dans le fichier Ci dessous.

Merci d'avance

Amitiées

Guido
 

Pièces jointes

  • Classer-par-point-et-faire-afficher-la-cote-mais-classer-par-point.BIS.xls
    17 KB · Affichages: 21

Guido

XLDnaute Accro
Re : Classer par point et faire afficher la cote..mais...

Re,

Désolé mais j'en resterai là :



Bonne nuit.

Bonjour le forum

Apparament job75 ne veut pas repondre a ma demande pour le visuelle de la plage avant la selection finale.


Pourkoi???ben parce qu'il pense que je ne sais pas ce que je veut...

Donc ...la macro de job75 me convient a 100pour 100.oui 100%.

Dans la fichier ci dessus la selection est faite MANUELLENT,et j'aurais aimer la macro pour arriver au meme résultats

Voila le pourkoi,Merci de votre future aide.

Ensuitele post seras clos

slts

Guido
 

job75

XLDnaute Barbatruc
Re : Classer par point et faire afficher la cote..mais...

Bonjour Guido, le forum,

De bon matin ça va mieux :

Code:
Const seuil = 2.5 'cote minimum
Const maxi = 6 'nombre maximum de chevaux à afficher

Private Sub CommandButton1_Click()
CommandButton1.Caption = "Classement avec cotes" & _
  IIf(CommandButton1.Caption Like "*>*", "", " >= " & seuil)
Classer CommandButton1.Caption Like "*>*"
End Sub

Sub Classer(affiche As Boolean)
Dim dest As Range, t, cote, d As Object, i&, j%, k
Set dest = [S29] '1ère cellule de destination
t = [T23:W27].Resize(, 4) '.Resize au cas où...
cote = [N17:O31] 'à adapter
Set d = CreateObject("Scripting.Dictionary")
Application.ScreenUpdating = False
For i = 1 To UBound(t)
  For j = 1 To 4
    If t(i, j) <> "" Then d(t(i, j)) = d(t(i, j)) + 5 - j
Next j, i
dest.Resize(2, Columns.Count - dest.Column + 1) = "" 'RAZ
If d.Count = 0 Then Exit Sub
With dest.Resize(2, d.Count)
  '---restitution---
  .Rows(1) = d.keys
  .Rows(2) = d.items
  '---tri horizontal---
  .Sort .Rows(2), 2, .Rows(1), , 1, Orientation:=2
  '---cotes avec éliminations éventuelles---
  t = .Value: j = 0
  For i = 1 To d.Count
    k = Application.VLookup(t(1, i), cote, 2, 0)
    If IsNumeric(k) Then If (k >= seuil Or affiche) And j < maxi _
      Then j = j + 1: t(1, j) = t(1, i): t(2, j) = k
  Next i
  .Value = "" 'RAZ
  If j Then .Resize(, j) = t
  '---mises en forme---
  .Interior.ColorIndex = xlNone
  .Resize(, maxi + 1).Interior.Color = .Cells(0, 0).Interior.Color
  If j Then .Rows(1).Resize(, j).Interior.Color = .Cells(1, 0).Interior.Color
  If j Then .Rows(2).Resize(, j).Interior.Color = .Cells(2, 0).Interior.Color
  .Font.ColorIndex = xlAutomatic
  .Font.Bold = True
  .HorizontalAlignment = xlCenter
  For i = 1 To j
    If .Cells(2, i) < seuil Then
      .Cells(2, i).Interior.Color = vbRed
      .Cells(2, i).Font.ColorIndex = 2
    End If
  Next i
End With
End Sub
Le seuil (2,5) et le nombre maximum de chevaux à afficher sont paramétrables, les inscrire en haut du code.

Bien sur on pourrait aussi mettre ces paramètres dans 2 cellules.

Fichier (3).

Bonne journée.
 

Pièces jointes

  • Classer par point(3).xls
    45.5 KB · Affichages: 65

Guido

XLDnaute Accro
Re : Classer par point et faire afficher la cote..mais...

Bonjour job75

Merci pour le fichier.

dans la vie il y as des hauts et des bas...et le dialogue est fais pour faire avancés les choses...Donc Merci

Amitiées

Guido
 

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 493
Messages
2 088 956
Membres
103 990
dernier inscrit
lamiadebz