Formule imbriquée, macro suite et... fin

léman

XLDnaute Nouveau
Bonjour les Excelnautes,

J'avais un problème avec une formule imbriquée difficile à gérer pour un novice comme moi sur Excel (les défauts d’un ancien utilisateur de 1-2-3 sont revenus au galop). Heureusement pour moi, ce point a résolu grâce l’aide providentielle de BrunoM45, abcd et jmd2. Encore un grand merci à vous trois pour cette super aide. J’ai appris grâce à vous de nouvelles « choses » sur Excel.

Maintenant, mon problème se « corse » si je peux m’exprimer ainsi. J’ai repris la macro de mon prédécesseur en « l’améliorant », mais je ne sais comment faire pour trier dans un premier temps ligne par ligne mes résultats (de la 11 à la 134 sachant que les résultats des colonnes H à L devront être dégressifs : 100 ou 10, étant le maximum (colonne H) et 0 le minimum (colonne L)) et , dans un deuxième temps par colonnes (1. La M ; 2. La K ; 3. La L ; 4. La G), pour finir par une impression automatique du classement.

Vu que je n'arrive plus à trouver seul la solution à ce problème, comme annoncé dans un post précédent, je reviens vers vous les spécialiste des formules et autres Macros sous Excel.

Autre petit problème de « ma » Macro, c’est qu’après le tri et l’impression, mes résultats de base disparaissent. Comment éviter ce problème (mon tableau est assez explicite pour les autres utilisateurs) ?

Merci d'avance à tous pour votre aide. C’est en osant demander que l’on peut comprendre ses erreurs et s’améliorer !

Guy
 

Pièces jointes

  • Bench_1B.zip
    37.1 KB · Affichages: 63
  • Bench_1B.zip
    37.1 KB · Affichages: 53
  • Bench_1B.zip
    37.1 KB · Affichages: 58

Pierrot93

XLDnaute Barbatruc
Re : Formule imbriquée, macro suite et... fin

Bonjour GUy

beaucoup trop de fichiers tout ca... lol..

comprends plus trop... regarde ce dernier fichier, chez moi il fonctionne, enfin je crois... j'ai modifié pour les formules de la colonne m. A voir..

bonne soirée
@+
 

Pièces jointes

  • Bench_1B.zip
    35.4 KB · Affichages: 35
  • Bench_1B.zip
    35.4 KB · Affichages: 32
  • Bench_1B.zip
    35.4 KB · Affichages: 34

léman

XLDnaute Nouveau
Re : Formule imbriquée, macro suite et... fin

Cher Pierrot,

Chez-moi, le fichier était enregistrer au format xlsm (était-ce le problème ?).

Je viens de tester à nouveau, c'est presque parfait sauf que la colonne L trie à l'envers, ce qui fausse le classement (ce détail ne doit pas être trop difficile à résoudre), mais le problème réside dans la colonne M. C'est la formule de la colonne N qui est reprise après le print final. Donc impossible de sauvegarder de nouvelles informations (nouveaux résultats).

Voilà pour mes observations actuelles.

D'avance merci pour ta réponse. On arrive gentiment à la fin du problème.

A+

Guy
 

léman

XLDnaute Nouveau
Re : Formule imbriquée, macro suite et... fin

Re-salut Pierrot,

J'ai identifié le problème de la colonne M :

Range("M11").FormulaLocal = m (et non n)
Range("M11").AutoFill Range("M11:M" & Range("M65536").End(xlUp).Row)

Pour ce qui est du tri de la colonne L, je n'arrive pas à trouver dans la macro cette référence pour la modifier comme suit : de 100 à 0.

Pour le reste, le fichier fontionne très bien en xls en non en xlsm (pourquoi ?).

Le retour de macro après le print est parfait. Je peux maintenant charger d'autres résultats et les sauvegarder et à nouveau lancer la macro.

Peux-tu juste expliquer par post sur cette discussion, le détail des tris de ta macro pour pouvoir la modifier à souhait et la re-tester à nouveau, sans venir toujours t'ennuyer avec ce genre de détail.

Encore un grand merci pour ta formidable aide.

Comme je ne suis pas trop foot (maman française, épouse italienne) je m'abstiens de TV ces jours et je lis les posts du forum. Il y a une foule de choses très intéressantes...

A bientôt

Guy
 

Pierrot93

XLDnaute Barbatruc
Re : Formule imbriquée, macro suite et... fin

Bonjour Guy


pour le tri sur la colonne L, il se trouve dans la ligne de code ci dessous :

Code:
maplage.Sort maplage(1, 13), xlDescending, maplage(1, 11), , xlDescending, [B][COLOR="Blue"]maplage(1, 12), xlDescending, [/COLOR][/B]xlNo, , , xlSortColumns

"maplage" étant une variable de type range, définie plus haut dans le code comme suit :

Code:
Set maplage = Range("A11:N" & Range("A65536").End(xlUp).Row)

on se réfère ensuite au numéro de ligne et de colonne de cette même variable(maplage) pour le tri, auquel on ajoute un argument "xlDescending" pour indiquer le sens du tri.

place ton curseur sur le mot "sort" dans le code et touche F1 pour plus de détails.

concernant ton problème, sur le fait que la macro ne fonctionne pas si le classeur est au format "xlsm", je pense que c'est un problème de niveau de sécurité, mais je ne pourrais pas t'en dire plus sur le sujet, n'ayant pas Excel2007...

te souhaitant un bon dimanche.
@+
 

léman

XLDnaute Nouveau
Re : Formule imbriquée, macro suite et... fin

Bonjour Pierrot,

Pas facile d'être nul (lol)

J'ai bien changé la macro selon tes conseils comme suit :

Option Explicit
Sub test()
Dim maplage As Range, l As Long, t As Variant, f As String, n As String, m As String
Set maplage = Range("A11:N" & Range("A65536").End(xlUp).Row)
t = maplage
f = Range("G11").FormulaLocal
n = Range("N11").FormulaLocal
m = Range("M11").FormulaLocal
For l = 1 To maplage.Rows.Count
Range(maplage(l, 8), maplage(l, 12)).Sort Key1:=maplage(l, 8), Order1:=xlDescending, Orientation:=xlLeftToRight
Next l
maplage.Sort maplage(1, 13), xlDescending, maplage(1, 11), , xlDescending, maplage(1, 12), xlDescending, xlNo, , , xlSortColumns
maplage.Sort maplage(1, 13), xlDescending, maplage(1, 11), , xlDescending, maplage(1, 7), xlDescending, xlNo, , , xlSortColumns
With ActiveSheet
.PageSetup.PrintArea = Range("Q135:AE" & 142 + maplage.Rows.Count - 1).Address
.PrintOut
'.PrintPreview
End With
maplage = t
Range("G11").FormulaLocal = f
Range("G11").AutoFill Range("G11:G" & Range("G65536").End(xlUp).Row)
Range("N11").FormulaLocal = n
Range("N11").AutoFill Range("N11:N" & Range("N65536").End(xlUp).Row)
Range("M11").FormulaLocal = n
Range("M11").AutoFill Range("M11:M" & Range("M65536").End(xlUp).Row)

End Sub


résultat des courses (lol :confused:), la colonne L (12) ne se trie toujours pas et le bouton de la macro (lancer la macro) reste ouvert après le print comme si... il y avait une erreur ?

Merci d'avance pour ta réponse et tes nouveaux conseils à ce sujet.

J'ai bien compris le principe des clés de tri suite à tes explications, mais ce n'est pas très simple pour un novice sur Excel.

A bientôt et bon dimanche

Guy

PS je ne pensais pas qu'il était aussi difficile de créer et de comprendre une macro avec des tris multiples et autre print sous Excel (trop de différence entre les versions 97-2007). Bien que je ne veux pas rester sur un échec, à l'avenir, je pense que je vais reprendre les tris du bon vieux temps dans le futur... (manuellement pour des fichiers simples).
 

léman

XLDnaute Nouveau
Re : Formule imbriquée, macro suite et... fin

Re-Bonjour ami Pierrot,

Pour être certain que je ne dîsais plus trop de bêtises sur le tri de la colonne L, j'ai rerpris le fichier Bench-1B (le dernier), j'ai re-contrôlé la macro pour à niveau (OK), puis j'ai changé les résultats des colonnes 11 et 12 (K et L) soit pour J.-F Aubert : j'ai mis 79 et 73 et pour S. Perrin, 80 et 72. Le résultat de tous mes tests reste identique. Pas de tri sur la colonne L. Donc classement final légèrement "faux"...

Avec ces nouveaux chiffres, j'ai pu tester et re-tester comme discuté: maplage(1, 12), xlDescending, ou maplage(1, 12), xlAscending,. Le résultat reste identique. Toujours pas de tri sur la colonne L (12) ...

Je suis plus que navré de te donner tant à réfléchir, mais je n'aime pas trop rester sur un échec et, je pense que toi non plus ! Pas facile Excel, même pour les spécialistes... (lol)

Amitiés et @ bientôt

Guy
 

Pierrot93

XLDnaute Barbatruc
Re : Formule imbriquée, macro suite et... fin

Re

pour moi le tri ne se fait pas sur L, mais sur M => K => L et ensuite la liste ainsi triée, un autre tri sur M => K => G... Pour moi cela semble correspondre à ta 1ère demande, ou bien il y a vraiment quelque chose qui m'échappe, fort possible du reste...

D'autre part qu'entends tu pas le bouton de la macro reste ouver ? chez moi lorsque je clique dessus la macro est lancée..

bonne soirée
@+

Edition : en fait c'est le tri sur la colonne G qui perturbe, perso vois pas trop de solution.
 
Dernière édition:

léman

XLDnaute Nouveau
Re : Formule imbriquée, macro suite et... fin

Re-bonjour Pierrot,

Le tri se fait, si je prends le fichier Bench_1B :

1) par ligne (toutes les lignes) en tenant compte des résultats des colonnes 8 à 12 (H à L) qui seront triés dans un ordre décroissant (de 100 à 0) - de gauche à droite (colonne H = 100, colonne I = 90, colonne J = 80, colonne K = 70 et colonne L = 60 pour l'exemple), les totaux des colonnes 13-14 (M et N) ne rentrent pas dans ce 1er tri)

2) le 2ème tri se fait sur la base du total de la colonne 13 (M) dans un ordre décroissant (100 à 0) 100 étant le 1er classé et 0 le dernier classé. La colonne 14 (N) n'est pas utile (elle n'est ici qu'à titre de référence pour moi, elle peut être éliminée !)

3) si égalité sur plusieurs totaux dans la colonne 13 (M), le 3ème tri se fera sur la colonne 11 (K) (100 à 0) et si encore égalité sur les totaux de la colonne 13 (M) et les résultats de la colonne 11 (K), un 4ème tri se fera sur la colonne 12 (L) (100 à 0).

4) si l'égalité persiste toujours au niveau des totaux de la colonne 13 (M), des chiffres des colonnes 11 (K) (ex. 70) et 12 (L) (ex. 60), la catégorie d'âge sera déterminante (colonne 7 (G) par ordre : V S J E) pour le tri final.

5) puis print et retour pour l'enregistrement d'autres résultats

Me suis-je bien expliqué cette fois ?

Si tu clicks sur la macro pour lancer le tri et l'impression, il faut déplacer le curseur sur une autre cellule pour que le bouton retrouve son appenrence primaire...

Merci d'avance pour ta réponse et encore toutes mes excuses pour ce travail de f...

Amitiés

Guy
 

léman

XLDnaute Nouveau
Re : Formule imbriquée, macro suite et... fin

Re

Ou plus simplement :

le tri se fait sur M => K => et ensuite la liste ainsi triée, un autre tri sur M => L => G pour finir ...

La colonne N n'est pas utile, juste un rappel pour la formule addition qui se perdait lors des premiers essais de tris.

Encore un grand merci, même si je suis très (trop) prolixe dans mes explications ! (lol :eek:)

Salutations amicales

Guy
 

léman

XLDnaute Nouveau
Re : Formule imbriquée, macro suite et... fin

Re-re

Je mets le fichier corrigé Bench_1B2 en pied de ce post.

Pour mieux comprendre le problème des clés de tri, j'ai changé le 4ème résultat de S. Perrin : 80, le 5ème reste identique. J'ai changé le 5ème résultat de H. Buttikofer : 73 et celui de J.-F. Aubert : 74.

Après avoir lancer la macro Tri et impression, il y a un réel problème à l'impression du classement : rang 21 et 22 (Buttikofer et Aubert). Ils sont simplement inversés (colonne 12-L), donc le classement est faux (de pas beaucoup, mais tout de même un peu faux sur le principe...).

Merci encore beaucoup pour ton aide.

A bientôt, je l'espère !

Amitiés

Guy

ps Les noms ne sont pas réels :rolleyes:
 

Pièces jointes

  • Bench_1B2.zip
    30.4 KB · Affichages: 22
  • Bench_1B2.zip
    30.4 KB · Affichages: 23
  • Bench_1B2.zip
    30.4 KB · Affichages: 22

Pierrot93

XLDnaute Barbatruc
Re : Formule imbriquée, macro suite et... fin

Bonjour Leman

comme je te le disais, perso plus trop de solution, voir si tu ne peux pas concatener les colonnes M K et L dans la colonne O, et ensuite faire le tri sur cette dernière...

Pour ton problème sur le bouton, peut être mettre la propriété "TakeFocusOnClick" de ce dernier sur "False".

bonne journée
@+
 

Pierrot93

XLDnaute Barbatruc
Re : Formule imbriquée, macro suite et... fin

Re,

Fichier joint en utilisant la concatenation en colonne O. A tester, tu peux masquer ensuite la colonne O...

@+
 

Pièces jointes

  • Bench.zip
    37 KB · Affichages: 25
  • Bench.zip
    37 KB · Affichages: 24
  • Bench.zip
    37 KB · Affichages: 26

léman

XLDnaute Nouveau
Re : Formule imbriquée, macro suite et... fin

Bonjour Pierrot,

Merci pour ce dernier fichier que j'ai testé. Il semble à première vue, juste !

Ce matin, à la force du poignet (lol) et plus de 200 essais après (je crois que c'est un minimum vu mes prints), j'ai presque trouvé la solution, certes pas très orthodoxe, mais elle fonctionne !

Conclusions des mes test : tous les résultats sont maintenant justes (avec toutes mes excuses, mais j'ai trifouillé ta macro dans tous les sens). ;)

Mais, il y a un encore mais, le tri sur les catégories (âge - J = 3, E = 4, S = 2, V = 1) ne fonctionne pas (colonne G/7), je pense que ce problème sera vite résolu avec tes compétences...

En ce qui concerne le bouton, le problème est aussi résolu et bien résolu. Moins facile à utiliser Office Pro 2007 qu'Excel 97. :confused:

Encore un grand merci pour ta patience, ainsi que pour tes efforts !

@+

Guy
 

Pièces jointes

  • Bench_1B3.zip
    33.2 KB · Affichages: 36

léman

XLDnaute Nouveau
Re : Formule imbriquée, macro suite et... fin

Re

Dans ma précipitation d'avoir trouvé enfin une bonne solution, je me suis trompé de fichier. Celui-ci est le bon !

Attention, dès que la macro est lancée, les données d'origine disparaissent... Je ne trouve par le pourquoi de cette erreur dans la macro.

Pour le reste, tout est bon, sauf le tri par catégorie d'âge (EJSV ou VSJE) qui reste une énigme pour moi...

Merci et encore toutes mes excuses. :eek:

@+

Guy
 

Pièces jointes

  • Bench_1B3.2.zip
    33.3 KB · Affichages: 29

Pierrot93

XLDnaute Barbatruc
Re : Formule imbriquée, macro suite et... fin

Re Guy

sur le fait que tes données d'origine disparaissent, normal puisque tu redéfini le plage d'origine après le tri :

Code:
[B][COLOR="Red"]t = maplage[/COLOR][/B]
maplage.Sort maplage(1, 14), xlDescending, maplage(1, 11), , xlDescending, maplage(1, 7), xlAscending, xlNo, , , xlSortColumns

supprimes la ligne en rouge, cela devrait être mieux.

quand au tri de la colonne G, à 15h31 tu y associait des numéros, si tu veux trier sur les numéros.... il faudrait remplacer les résultats de la formule (VSJE) par 1 2 3 ou 4...

Mais, il y a un encore mais, le tri sur les catégories (âge - J = 3, E = 4, S = 2, V = 1) ne fonctionne pas (colonne G/7),

je vois que tu n'as pas retenu la solution de passer par la concaténation des colonnes, remarque pourquoi pas si tu obtiens le résultat escompté.. A priori cela permettait également de gérer la colonne B.

bonne soirée
@+
 

Statistiques des forums

Discussions
312 378
Messages
2 087 760
Membres
103 660
dernier inscrit
205 Peugeot