Macro tri automatique sr plusieurs feuilles

Fermé
Coco33 - 28 mai 2009 à 09:43
NicoDisso Messages postés 230 Date d'inscription mardi 26 mai 2009 Statut Membre Dernière intervention 22 août 2009 - 29 mai 2009 à 08:26
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 !!!
A voir également:

1 réponse

NicoDisso Messages postés 230 Date d'inscription mardi 26 mai 2009 Statut Membre Dernière intervention 22 août 2009 32
29 mai 2009 à 08:26
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