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 Léman

si j'ai bien compris, regarde le code ci dessous, cette macro trie tes lignes par ordre décroissant (colonnes H à L à partir de la ligne 11), les valeurs sont ensuite réinitialisées :

Code:
Option Explicit
Sub test()
Dim maplage As Range, l As Long, t As Variant
Set maplage = Range("H11:L" & Range("L65536").End(xlUp).Row)
'sauvegarde des valeurs dans un tableau virtuel
t = maplage
'boucle sur les lignes concernées et tri de chacune d'elles
For l = 1 To maplage.Rows.Count
    Range(maplage(l, 1), maplage(l, 5)).Sort Key1:=maplage(l, 1), Order1:=xlDescending, Orientation:=xlLeftToRight
Next l
'code d'impression
ActiveSheet.PrintOut
'réinitialisation des valeurs à partir du tableau
maplage = t
End Sub

bonne journée
@+
 
Dernière édition:

léman

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

Bonjour,

Merci Pierrot pour ton aide. Tu es génial et formidable et j'ai bien compris le schéma. C'est bien enregistré. Encore une fois vous les spécialistes d'Excel vous sauvez la mise à un ancien de Lotus 1-2-3 et nouvel "utilisateur" d'Excel. Merci !

J'ai toutefois une petite dernière question complémentaire à te poser ou à poser aux autres intervenants : comment demander à cette belle macro de faire en plus :

1) un tri complémentaire sur la colonne M (résultat du plus grand au plus petit - 1000 à 0)

et en cas d'égalité sur les totaux de la colonne M :

2) de trier par les résultats de la colonne K (100 à 0)

et si encore égalité :

3) de trier par les résultats de la colonne L (100 à 0)

et pour finir

4) de trier la colonne G par J S V E (ordre alpha)

Merci d'avance pour cette nouvelle aide providentielle. Je suis très reconnaissant envers tous les membres de ce Forum qui m'ont aidé jusqu'à maintenant.

@+

Guy
 

Pierrot93

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

Re

regarde le code ci dessous, à tester :

Code:
Sub test()
Dim maplage As Range, l As Long, t As Variant
Set maplage = Range("A11:N" & Range("A65536").End(xlUp).Row)
t = maplage
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), xlAscending, xlNo, , , xlSortColumns
ActiveSheet.PrintOut
maplage = t
End Sub

je vois également que tu as ouvert un autre fil sur le même sujet, il est préférable de rester sur le même, plus pratique pour tout le monde...

bon après midi
@+
 

léman

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

Marcie Pierrot,

Merci de ta réponse. Eh oui ! Je suis encore un peu nul avec les forums et je m'en excuse d'avoir doublé par mégarde ma question.

Je vais tester ta réponse.

Meric encore

@+

Guy
 

léman

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

Re-bonjour Pierrot,

J'ai testé ta nouvelle macro, mais la 1ère était presque parfaite, sauf que je n'avais pas de tri (c'est très important pour mon classement) sur les résultats de la colonne M (de 1000 à 0) et qu'en cas d'égalité de points (addition des colonnes H, I, J) sur la colonne M (= résultats identiques), les colonnes K, puis L et enfin G (JSVE = catégorie d'âge) devaient départager tous les participants avant l'impression des résultats provisoires et retour à la feuille d'origine pour tout nouvel enregistrement (classement en temps réel sur papier).

Merci d'avance pour l'aide et... à bientôt.

Reçois encore toutes mes excuses pour le doublon.

Amitiés

Guy
 

léman

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

Mon Cher Pierrot,

J'ai re,re-testé ta macro (brut de brut, sans copier-coller), elle fonctionne maintenant à merveille. Merci et excuses !

Juste une petite correction à faire : le tri de la colonne G est à l'envers. Comment faire pour l'inverser, càd de Z à A ?

Merci d'avance pour la réponse

Amitiés

Guy
 

léman

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

Re-Bonjour Pierrot,

A la force du "poignet", j'ai réussi à trouver la solution !

Voici le résultat :

Dim maplage As Range, l As Long, t As Variant
Set maplage = Range("A11:N" & Range("A65536").End(xlUp).Row)
t = maplage
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), xlAscending, xlNo, , , xlSortColumns
maplage.Sort maplage(1, 13), xlDescending, maplage(1, 11), , xlDescending, maplage(1, 7), xlDescending, xlNo, , , xlSortColumns
ActiveSheet.PrintOut
maplage = t
End Sub

Maintenant, comment puis-je ajouter à cette macro une 5ème clé de tri (par exemple sur la colonne A) - A à Z ?

Comment puis-je faire disparaître automatiquement au moment de l'impression la formule inutilisée des lignes 35 à 134, colonne G :

=CHOISIR(EQUIV(ARRONDI.SUP(((AUJOURDHUI()-E35-1)/365.25);0);{1;21;58;71});"J";"E";"S";"V")

Encore un grand merci pour ton aide si précieuse. Un vrai de plaisir ce Forum !

@+

Guy
 

Pierrot93

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

Re

j'ai modifié la macro, comme suit, comme il y avait déjà une zone d'impression de défini, je la stocke donc dans une variable, pour la remettre en l'état à la fin du code... j'ai supposé une impression à partir de la cellule A1... A voir et à adapter selon ton besoin. j'ai rajouté également le tri sur la colonne A...

Code:
Option Explicit
Sub test()
Dim maplage As Range, l As Long, t As Variant, zi As String
Set maplage = Range("A11:N" & Range("A65536").End(xlUp).Row)
t = maplage
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), xlAscending, xlNo, , , xlSortColumns
maplage.Sort maplage(1, 13), xlDescending, maplage(1, 11), , xlDescending, maplage(1, 7), xlDescending, xlNo, , , xlSortColumns
maplage.Sort maplage(1, 13), xlDescending, maplage(1, 11), , xlDescending, maplage(1, 1), xlAscending, xlNo, , , xlSortColumns
With ActiveSheet
    zi = .PageSetup.PrintArea
    .PageSetup.PrintArea = Range("A1:N" & Range("A65536").End(xlUp).Row).Address
    .PrintOut
    .PageSetup.PrintArea = zi
End With
maplage = t
End Sub

pas de problème pour le doublon, défaut de jeunesse... lol:rolleyes:

@+

Edition : pas trop sur que la dernière clé donne le résultat attendu... A voir...
 
Dernière édition:

léman

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

Re-Bonjour Pierrot,

J'ai testé ta nouvelle macro, mais le résultat est moins bon. Je garde la précédente, sauf que pour la colonne G c'est parfait. La formule imbriquée a disparu à l'impression si les cellules ne sont pas activées par la colonne E (date de naissance).

Donc en résumé, 1) peux-tu éliminer le tri sur la colonne A qui n'est pas trop utile 2)donner l'ordre à la macro d'imprimer la feuille (résultats définitifs ou provisoire) qui se situe de la cellule Q135 à la cellule AE xyz.

Encore un grand merci pour ton aide.

De retour vers 20h30 sur le Forum.

Amitiés et @+

Guy
 

Pierrot93

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

Re

macro modifiée ci dessous, j'ai mis en commentaire(vert dans l'éditeur vba) le tri sur la colonne A et les lignes de code permettant de remettre la zone d'impression en l'état.

Code:
Option Explicit
Sub test()
Dim maplage As Range, l As Long, t As Variant ', zi As String
Set maplage = Range("A11:N" & Range("A65536").End(xlUp).Row)
t = maplage
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), xlAscending, xlNo, , , xlSortColumns
maplage.Sort maplage(1, 13), xlDescending, maplage(1, 11), , xlDescending, maplage(1, 7), xlDescending, xlNo, , , xlSortColumns
'maplage.Sort maplage(1, 13), xlDescending, maplage(1, 11), , xlDescending, maplage(1, 1), xlAscending, xlNo, , , xlSortColumns
With ActiveSheet
    'zi = .PageSetup.PrintArea
    .PageSetup.PrintArea = Range("Q135:AE" & 142 + maplage.Rows.Count).Address
    .PrintOut
    '.PageSetup.PrintArea = zi
End With
maplage = t
End Sub

bonne soirée
@+
 

léman

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

Bonsoir Pierrot,

Depuis mon retour d'assemblée, j'ai testé, testé et re-testé ta dernière macro et voici mes commentaires :

1) le tri général est parfait
2) après le dernier tri l'impression s'arrête à la ligne 207 Pourquoi ???
3) la colonne G perd en partie toutes les formules Pourquoi ???

si ce n'est ces quelques petits problèmes "mineurs" encore à régler, c'est le top cette macro. Un bel exemple pour tous. Merci pour le travail !

Mis à part, ces petits problèmes, pourrais-tu pour le bien des internautes, développer (un peu plus) toutes les commandes qui interviennent dans cette macro pour bien la comprendre et pouvoir la modifier en toute connaissance. Merci d'avance.

Autre chose, pour bien te rendre compte du problème résident qui m'occupe encore à cette heure (colonne G et print), je te joins ma feuille.

D'avance, merci pour tes nouvelles interventions dans cette discussion.

Bonne nuit et... peut-être à demain !

Amitiés

Guy
 

Pièces jointes

  • Bench.zip
    43.1 KB · Affichages: 55
  • Bench.zip
    43.1 KB · Affichages: 39
  • Bench.zip
    43.1 KB · Affichages: 55

Pierrot93

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

Bonjour Guy

regarde le fichier joint, j'ai modifié le code afin de conserver la formule en colonne G. Pour ton problème d'impression, la solution la plus simple que j'ai trouvé est de modifier la mise en page en renseignant la zone "lignes à répéter en haut", à voir si cela peut te convenir...

pour ton info, lorsque tu es dans l'éditeur vba, tu peux utiliser la touche F1 pour avoir plus de détails sur un mot utilisé, en placant le curseur sur celui ci.

bonne journée
@+
 

Pièces jointes

  • Bench_1B 2.zip
    41.1 KB · Affichages: 74

léman

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

Bonjour Pierrot ou Pierre ??

Encore un grand merci pour ton aide. Toutefois je dois avoir créé un problème avec le fichier Zip. Peux-tu le renvoyer ou le remettre sur le Forum. Merci d'avance à toi.

A près de 60 ans, ont est parfois (souvent) gauche avec l'informatique actuelle, surtout en tant que retraité. Parfois, je me mets à regretter mon bon vieux PC et son DOS. Il était plus lent à utiliser mais excellent sur le fond. Les plantages assez rares...

Avec toutes mes excuses et amitiés

Guy
 

Statistiques des forums

Discussions
312 405
Messages
2 088 130
Membres
103 733
dernier inscrit
MARIE 59