Problème de filtre avec cellules de taille différente sous Excel

Fermé
drakar3 Messages postés 16 Date d'inscription lundi 18 janvier 2016 Statut Membre Dernière intervention 31 août 2016 - 18 janv. 2016 à 11:40
Theo.R Messages postés 575 Date d'inscription vendredi 11 juillet 2014 Statut Membre Dernière intervention 30 mars 2016 - 27 janv. 2016 à 12:37
Bonjour à tous,

J'ai déjà vu cette question posée et j'ai l'impression que la solution n'existe pas, ce qui me semble surprenant pour un logiciel comme Excel.

J'ai donc créé un classement par équipe de 2 à 4 coureurs :
- chaque coureur marque des points pour l'équipe et l'idée est de filtrer par rapport au total de points de l'équipe.

Je souhaite donc que le filtre déplace toutes les cellules de l'équipe, qui sont bien évidemment de taille différente. Et forcément, Excel me dit que ce n'est pas possible !

Du coup, je me trouve obligé de rentrer une formule à droite pour trier par ordre de classement puis de couper coller une à une les équipes dans un nouveau tableau... Il n'y a vraiment rien de mieux à faire en 2016 sous Excel ????

Un grand merci par avance,

6 réponses

drakar3 Messages postés 16 Date d'inscription lundi 18 janvier 2016 Statut Membre Dernière intervention 31 août 2016
18 janv. 2016 à 11:42


Voici le fichier concerné... :)
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 412
18 janv. 2016 à 11:43
Bonjour
qu'appelez vous des cellules de tailles différentes. S'il s'agit de cellule fusionnées, le filtre ne fonctionnera pas!
Mais dans ce cas, qu'est ce qui vous oblige à les fusionner "bien évidemment"?

à vous lire
0
drakar3 Messages postés 16 Date d'inscription lundi 18 janvier 2016 Statut Membre Dernière intervention 31 août 2016
18 janv. 2016 à 11:45
Sur l'image jointe, il y a donc un logo, puis à droite le score global (sous points) et les noms des 4 coureurs avec ensuite leur score respectif... il faudrait pouvoir trier sur le seul score global...
0
Theo.R Messages postés 575 Date d'inscription vendredi 11 juillet 2014 Statut Membre Dernière intervention 30 mars 2016 31
18 janv. 2016 à 16:11
Bonjour,

Je pense que c'est possible, mais pas par une solution "standard" préconçue par Excel. J'ai en tête une macro qu'il suffirait de lancer via un bouton pour regénérer le classement selon les points de chaque équipe.

En soit ça n'est pas un code très compliqué, mais étant données les particularités de votre demande (taille des cellules, etc.), je préfèrerais avoir un document excel de votre part et une demande précise sur ce que vous attendez avant de me lancer sous VBA :-)

En bref :
- Merci de poster un document de base via www.cjoint.com
- Merci de lister vos attentes PRECISES (souhaits, contraintes, etc.). Pensez notamment à la manière dont vous allez remplir votre document. Celle-ci va définir la manière dont nous devrons concevoir la solution ;)

Bien à vous,
0
drakar3 Messages postés 16 Date d'inscription lundi 18 janvier 2016 Statut Membre Dernière intervention 31 août 2016 > Theo.R Messages postés 575 Date d'inscription vendredi 11 juillet 2014 Statut Membre Dernière intervention 30 mars 2016
18 janv. 2016 à 16:15
C'est très gentil de votre part.
Je vous joins donc le document.
Le principe est simple : après chaque épreuve, des points sont attribués à des coureurs.
Ces points alimentent la case total.
L'objectif est ensuite que le classement se mette à jour, du plus au moins grand nombre de points.
Je vous joints le fichier. :)
Un grand merci par avance,
0
drakar3 Messages postés 16 Date d'inscription lundi 18 janvier 2016 Statut Membre Dernière intervention 31 août 2016
18 janv. 2016 à 16:18
Voici le lien :
https://www.cjoint.com/c/FAspqTrS1ni

Comme vous le verrez, toutes les équipes ne sont pas créées, et le total de points est donc dans les 30 cases situées sous "Pts".
0
drakar3 Messages postés 16 Date d'inscription lundi 18 janvier 2016 Statut Membre Dernière intervention 31 août 2016
18 janv. 2016 à 16:21
Dernière précision : la case total ne contient pas encore la formule à jour mais ce n'est pas important. L'objectif est de créer la macro qui permettra de trier dans l'ordre décroissant à partir de ces 30 totaux, tout en respectant l'ordre des logo, noms de teams et coureurs concernés. Merci, :)
0
Theo.R Messages postés 575 Date d'inscription vendredi 11 juillet 2014 Statut Membre Dernière intervention 30 mars 2016 31
18 janv. 2016 à 16:24
Les équipes feront-elles TOUTES le même nombre de lignes ? (donc de coureurs)
0
Effectivement, 4 coureurs maximum dont 4 lignes et 5 non de lequipe compris.
0
Theo.R Messages postés 575 Date d'inscription vendredi 11 juillet 2014 Statut Membre Dernière intervention 30 mars 2016 31
18 janv. 2016 à 16:29
Autre question : je vois sur le document joint qu'il y a plusieurs tableaux, il faut les garder séparer ? Il ne faut faire qu'un seul classement ou chaque tableau constitue un classement indépendant ?...
0
Theo.R Messages postés 575 Date d'inscription vendredi 11 juillet 2014 Statut Membre Dernière intervention 30 mars 2016 31
18 janv. 2016 à 17:35
Encore une autre question en attendant la réponse de la dernière :

que voulez-vous faire des équipes qui ont le même score ? On garde l'égalité et on saute une place (pour deux 1er exéquo on aurait : 1er - 1er - 3ème ...) ou autre ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
drakar3 Messages postés 16 Date d'inscription lundi 18 janvier 2016 Statut Membre Dernière intervention 31 août 2016
20 janv. 2016 à 17:11
Bonjour Theo,

En fait, ça ne colle pas complètement :
- l'idée est que les 30 équipes soient classés par ordre décroissant : 1er au 10è en 1ère page (ligue 1), 11è au 20è en 2è page (ligue 2) et 21è au 30 en 3è page (ligue 3).
- sachant que j'ai amélioré quelques aspects du documents.
- et qu'il est possible que je rajoute une ou deux ligues à l'avenir (donc ligue 4 et ligue 5).

Cela te semble possible d'adapter ta macro ?
Merci encore :)

Le document : https://www.cjoint.com/c/FAuqjgSh3fi
0
Theo.R Messages postés 575 Date d'inscription vendredi 11 juillet 2014 Statut Membre Dernière intervention 30 mars 2016 31
27 janv. 2016 à 12:37
Bonjour,

Pas de souci pour le délai de réponse, la seule chose est que je n'ai plus le temps actuellement avec mon travail pour reprendre mon code et l'adapter à vos précisions..

Mais il y a de grandes chances qu'il faille plus ou moins repartir de 0, mon code était spécifique à une situation avec un mode opératoire précis.

Bref, désolé mais je ne pourrai pas traiter votre demande pour le moment, j'espère que d'autres adeptes des macros sur-mesures verront ce msg et pourront prendre le relai ;)

Bonne continuation,

NB: si le topic tombe dans les méandres de l'oubli, vous pouvez le fermer et en ouvrir un nouveau avec une description synthétique et complète de votre demande ;)
0
Theo.R Messages postés 575 Date d'inscription vendredi 11 juillet 2014 Statut Membre Dernière intervention 30 mars 2016 31
18 janv. 2016 à 18:34
En l'absence de plus de détails sur la demande, ci-dessous le code que j'ai pu faire.

Fonctionnement préalable : - la feuille avec les résultats doit impérativement être nommée "CLASSEMENT"
- Il ne doit y avoir que 10 équipes (cellules B6:B12 à B60:B64 dans l'exemple)
- En cas de score égal, c'est l'équipe qui apparaît en premier dans la liste qui prend la place supérieure (peut être injuste mais bon!)

Bonne continuation :

Sub Classement()
Application.ScreenUpdating = False

For i = 6 To 60 Step 6
Range("B" & i).Value = WorksheetFunction.Rank(Range("E" & i).Value, Range("E:E"))
Next i

For j = 60 To 6 Step -6
If WorksheetFunction.CountIf(Range("B:B"), "=" & Range("B" & j).Value) = 1 Then
Else
Range("B" & j).Value = Range("B" & j).Value + 1
End If
Next j


Set Originale = Sheets(2)
Originale.Copy Before:=Sheets(2)
Set Copie = Sheets(2)

Originale.Select
ActiveSheet.Pictures.Delete

For k = 6 To 60 Step 6


If Copie.Range("B" & k).Value = 1 Then
Copie.Select
Range("B" & k & ":V" & k + 4).Select
Selection.Copy
Sheets("CLASSEMENT").Select
Range("B6:B10").Select
ActiveSheet.Paste
End If

If Copie.Range("B" & k).Value = 2 Then
Copie.Select
Range("B" & k & ":V" & k + 4).Select
Selection.Copy
Sheets("CLASSEMENT").Select
Range("B12:V16").Select
ActiveSheet.Paste
End If

If Copie.Range("B" & k).Value = 3 Then
Copie.Select
Range("B" & k & ":V" & k + 4).Select
Selection.Copy
Sheets("CLASSEMENT").Select
Range("B18:V22").Select
ActiveSheet.Paste
End If

If Copie.Range("B" & k).Value = 4 Then
Copie.Select
Range("B" & k & ":V" & k + 4).Select
Selection.Copy
Sheets("CLASSEMENT").Select
Range("B24:V28").Select
ActiveSheet.Paste
End If

If Copie.Range("B" & k).Value = 5 Then
Copie.Select
Range("B" & k & ":V" & k + 4).Select
Selection.Copy
Sheets("CLASSEMENT").Select
Range("B30:V34").Select
ActiveSheet.Paste
End If

If Copie.Range("B" & k).Value = 6 Then
Copie.Select
Range("B" & k & ":V" & k + 4).Select
Selection.Copy
Sheets("CLASSEMENT").Select
Range("B36:V40").Select
ActiveSheet.Paste
End If

If Copie.Range("B" & k).Value = 7 Then
Copie.Select
Range("B" & k & ":V" & k + 4).Select
Selection.Copy
Sheets("CLASSEMENT").Select
Range("B42:V46").Select
ActiveSheet.Paste
End If

If Copie.Range("B" & k).Value = 8 Then
Copie.Select
Range("B" & k & ":V" & k + 4).Select
Selection.Copy
Sheets("CLASSEMENT").Select
Range("B48:V52").Select
ActiveSheet.Paste
End If

If Copie.Range("B" & k).Value = 9 Then
Copie.Select
Range("B" & k & ":V" & k + 4).Select
Selection.Copy
Sheets("CLASSEMENT").Select
Range("B54:V58").Select
ActiveSheet.Paste
End If

If Copie.Range("B" & k).Value = 10 Then
Copie.Select
Range("B" & k & ":V" & k + 4).Select
Selection.Copy
Sheets("CLASSEMENT").Select
Range("B60:V64").Select
ActiveSheet.Paste
End If

Next k
Application.CutCopyMode = False
Application.DisplayAlerts = False
Originale.Range("B2").Select
Copie.Select
ActiveWindow.SelectedSheets.Delete
Application.DisplayAlerts = True

Application.ScreenUpdating = True
End Sub
-1
Bonjour Theo, désolé de répondre tardivement mais je n'ai pas eu d'alerte de réponse... je vais tester ça et te tiens au courant :)
0