Module macro à appliquer sur autres onglets

patouman

XLDnaute Occasionnel
Bonjour,

je souhaiterais que la macro ci dessous (tri et mise en forme), qui fonctionne parfaitement pour l'onglet "Secteur 0", puisse aussi fonctionner pleinement pour les autres onglets et onglets futurs. Pour l'instant celle ci ne fonctionne que sur la mise en forme, mais pas sur le tri dans les onglets "Secteur 1" et autres.
je sais qu'il y a une erreur sur l'assignation des feuilles, mais comment résoudre ce problème ?

Sub tri_noms()
'
' tri_noms Macro
'

'
Range("C11:C250").Select
ActiveWorkbook.Worksheets("Secteur 0").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Secteur 0").Sort.SortFields.Add Key:=Range("C12"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Secteur 0").Sort
.SetRange Range("A11:m250")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range("A5").Select
Dim i As Long
For i = 11 To 655536
If Cells(i, 3) = "" Then
Exit For
Else:
Cells(i, 3).Value = UCase(Cells(i, 3).Value): Cells(i, 4).Value = Application.Proper(Cells(i, 4).Value)
End If
Next i
End Sub
 

jp14

XLDnaute Barbatruc
Re : Module macro à appliquer sur autres onglets

Bonjour

Quand on écrit "Range("A5").Select", le code porte uniquement sur la feuille active.
".SetRange Range("A11:m250")" ce code pour la feuille indiqué par With.

Pour utiliser la procédure qui fonctionne sur toutes les feuilles il faut écrire

Sub tri_noms(Feuille1 as string)
et remplacer dans le code "Secteur 0" par "Feuille1"

Pour terminer il faut créer une procédure qui listera toues les feuilles
Code:
Dim Sh As Worksheet
    For Each Sh In Worksheets
        tri_noms Sh.Name ' appel de la procédure de tri avec le passage d'un paramètre : nom de la feuille
    Next Sh

A modifier et à tester

JP
 

Lone-wolf

XLDnaute Barbatruc
Re : Module macro à appliquer sur autres onglets

Bonjour patouman :)

Sur quelle colonne tu veux faire le tri, C ou A? Et qu'elle est la plage? Sinon, un exemple:

Code:
Dim Ws As Worksheet, i As Long

For each Ws in Worksheets
With Ws
.Range("A11:M250").Sort  .Range("C12"), xlAscending
For i = 11 To 65536
If .Cells(i, 3) = "" Then
Exit For
Else
.Cells(i, 3).Value = UCase(.Cells(i, 3).Value): .Cells(i, 4).Value = Application.Proper(.Cells(i, 4).Value)
End If
Next i
End With
Next Ws



EDIT: Bonjour JP :)
 
Dernière édition:

patouman

XLDnaute Occasionnel
Re : Module macro à appliquer sur autres onglets

Bjr jp et lonewolf

le tri doit se faire sur la ligne C (le nom) étendu à la plage a11:m250

ci joint fichier
 

Pièces jointes

  • Suivi visites médicales aa01.xlsm
    129.9 KB · Affichages: 21

Discussions similaires

Réponses
0
Affichages
137
Réponses
3
Affichages
569

Statistiques des forums

Discussions
312 105
Messages
2 085 350
Membres
102 871
dernier inscrit
Maïmanko