Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Module macro à appliquer sur autres onglets

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

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
 
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
 
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:
- 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

Discussions similaires

Réponses
4
Affichages
211
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
532
Réponses
17
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…