Macro tri automatique sr plusieurs feuilles

Coco33 -  
NicoDisso Messages postés 231 Statut Membre -
Bonjour à tous,

j'aimerais faire une macro qui puisse trier automatiquement et alphabétiquement les données sur plusieurs feuilles qui sont elles-même déjà trier avec une mise en forme conditionnelle sur 3 colonnes...

Les tableaux sont identiques, donc les entêtes de la ligne 1 sont les mêmes sur toutes les feuilles, seules les données à trier changent.

mon code actuel qui marche sur une feuille seulement est :

Private Sub Worksheet_Change(ByVal adrcel As Range)

Range("Alpha").Sort _
Key1:=Range("Nom"), Order1:=xlAscending, _
Key2:=Range("Date"), Order2:=xlAscending, _
Key3:=Range("Ref"), Order3:=xlAscending, _
Header:=xlYes

End Sub

Chaque "zone" est définit telle que :
Alpha : Tout le document
Nom : Colonne C
Date : Colonne B
Ref : Colonne A

De plus, je ne sais pas si c'est utile dans le cas de macro, ma formule de mise en forme conditionnelle est la suivante :
=SI($B8<>"";SOMMEPROD(($B$2:$B$2009=$B8)*($C$2:$C$2009=$C8))>1)

J'aimerais bien donc :

- Soit une macro qui puisse réagir sur toutes les feuilles du classeur
- Soit si ce n'est pas possible une formule de mise en forme conditionnelle qui puisse agir sur les colonnes entières B et C (car ma formule va jusqu'à la ligne 2009).

Le tableau est amené à se remplir extrêmement vite et à être donc très imposant.

Un grand merci d'avance si vous pouviez m'aider !!!
Configuration: Mac OS X
Firefox 2.0.0.1

1 réponse

  1. NicoDisso Messages postés 231 Statut Membre 32
     
    Pour info, tu ne peux pas donner le meme nom à plusieurs plages de données dans un meme classeur

    Dans VBA, ajoute un module et copies y cette procedure ( tout ce qui es en gras ).

    Public Sub Tri_MultiFeuille()

    Dim Sh As Worksheet

    For Each Sh In Worksheets

    Sh.Activate
    Cells.Select
    Selection.Sort _
    Key1:=Range("C2"), _
    Order1:=xlAscending, _
    Key2:=Range("B2"), _
    Order2:=xlAscending, _
    Key3:=Range("A2"), _
    Order3:=xlAscending, _
    Header:=xlYes, _

    Range("A1").Select

    Next Sh

    MsgBox "Tri Multi-Feuille terminé...", vbInformation, "Information"

    End Sub


    Et Voila...
    0