XL 2010 Max dans TCD

  • Initiateur de la discussion Initiateur de la discussion JPHI
  • 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 !

J

JPHI

Guest
Bonjour

Dans le TCD ci-joint, je voudrais pouvoir trouver en VBA la valeur Max en colonne C et qu'une fouis la valeur trouvée, une nouvelle feuille s'ouvre avec les lignes correspondant à ce nombre max
Quelqu'un a une idée SVP?
Merci
 

Pièces jointes

Bonjour

Si ton TCD reste classé dans l'ordre croissant

Code:
    With ActiveSheet.PivotTables(1).DataBodyRange
        y = .Rows.Count + .Cells(1, 1).Row - 2
    End With
    ActiveSheet.Cells(y, 3).ShowDetail = True

ActiveSheet à adapter si ta macro n'est pas appelé de la feuille

Edit : Tu peux aussi adapter le 3 et remplacer par .Cells(1, 1).Column si tu gardes une seule colonne mais que le TCD peux bouger dans la feuille
 
Re
Code:
    With ActiveSheet.PivotTables(1).DataBodyRange
        y = .Rows.Count + .Cells(1, 1).Row - 2
        Nom = ActiveSheet.Cells(y, .Column).Offset(0, -.Columns.Count).Value
        ActiveSheet.Cells(y, .Column).ShowDetail = True
    End With
    ActiveSheet.Name = Nom
A noter qu'il faudrait sans doute tester que le feuille n'existe pas avant... car sinon le renommage va planter...
 
Bonjour

Suite à des modif dans mon fichier, je ne parviens plus à utiliser cette macro 🙁
Dans le premier TCD du fichier joint, je souhaite trouver dans la colonne B l'item qui a la plus grosse valeur dans la colonne C à savoir W76P058.$w$
Et ensuite qu'une fois cette valeur trouvée, une nouvelle feuille s'ouvre avec tous les items associés soit 85 lignes
Peux-tu adapter le code ci-dessous en conséquence?

Sub Max()

Sheets("TCD").Select
With ActiveSheet.PivotTables("Tableau croisé dynamique3").DataBodyRange
y = .Rows.Count + .Cells(1, 1).Row - 2
Nom = ActiveSheet.Cells(y, .Column).Offset(0, -.Columns.Count).Value
ActiveSheet.Cells(y, .Column).ShowDetail = True
End With
ActiveSheet.Name = Nom
Selection.AutoFilter
End Sub

Merci beaucoup!!!
 

Pièces jointes

merci chris
mais la macro plante sur la ligne en rouge...

Sub Max()

Sheets("TCD").Select
With ActiveSheet.PivotTables("Tableau croisé dynamique3").DataBodyRange
'y = .Rows.Count + .Cells(1, 1).Row - 2
y = .Rows.Count + .Cells(1, 1).Row
Nom = ActiveSheet.Cells(y, .Column).Offset(0, -.Columns.Count).Value
ActiveSheet.Cells(y, .Column).ShowDetail = True
End With
ActiveSheet.Name = Nom
Selection.AutoFilter
End Sub
 
Bonjour le forum, Chris
Par contre chris, j'ai besoin d'une dernière évolution
Je voudrais que lorsque je ferme mon classeur principal, cette feuille qui a été nommée automatiquement ActiveSheet.Name = Nom
soit supprimée à la fermeture
Aurais tu une idée stp??
Merci 😉
 
Bonjour

Placer
Code:
Public Nom
en tête du module VBA au-dessus de toute macros

Et dans le module du Workbook :
Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    If Nom = "" Then Exit Sub
    Application.DisplayAlerts = False
    Worksheets(Nom).Delete
    Application.DisplayAlerts = True
End Sub

Voir s'il faut enregistrer au cas où une sauvegarde aurait été faite pendant que la feuille existait.
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
18
Affichages
183
Réponses
3
Affichages
548
Réponses
4
Affichages
132
Réponses
2
Affichages
427
Retour