XL 2013 Macro sur plusieurs feuilles selon critère

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

D10

XLDnaute Junior
Bonjour
J'ai un fichier excel avec une quarantaine de feuille.
J'aimerais faire tourner une macro sur des feuilles qui contiennent un mot dans une cellule précise (à chaque fois la même).
Si la feuille contient le mot alors trier par ordre alphabétique..
Et si la cellule d'une feuille X ne contient pas le mot recherché alors j'aimerais passer à la feuille suivante. Et ainsi de suite

j'ai un début de code mais qui ne fonctionne par encore parfaitement...Il ne fonctionne que sur la feuille sur laquelle je suis, et non pas dans les autres feuilles également..

Code:
Sub Tri()

For Each ws In ActiveWorkbook.Worksheets()
    If ws.Range("B4") = "Valeur_" Then

Range("B4:CI80").Select
Selection.Sort Key1:=Range("B4"), Order1:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:=True, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal
    End If

Next ws
 
End Sub

Encore merci !
 
Bonjour D10,

Essayez ceci ?

Sub Tri()

NbFeuille = ActiveWorkbook.Sheets.Count
Sheets(1).Activate

For i = 1 To NbFeuille
Sheets(i).Activate
If ws.Range("B4") = "Valeur_" Then
Range("B4:CI80").Select
Selection.Sort Key1:=Range("B4"), Order1:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:=True, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal
End If
Next i

End Sub
 
Bonsoir,
Merci pour ta réponse, mais ça ne marche pas.
Petite p/récision, si ça peut aider ou rendre la chose plus simple, les feuilles qui sont concernées par le tri, ont toutes l'onglet de couleur jaune. Peut être, est-il possible de baser la macro en fonction des couleurs des onglets ?
😉
 
Bonsoir,
Code:
Sub Tri()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
    If ws.[B4] = "Valeur_" Then ws.[B4:CI80].Sort ws.[B4], xlAscending
Next
End Sub
A retenir : en VBA il est généralement inutile de sélectionner des plages ou des feuilles.

Il suffit de bien préciser les feuilles et les plages à traiter.

Edit : en général il vaut mieux préciser si la plage a des en-têtes :
Code:
    If ws.[B4] = "Valeur_" Then ws.[B4:CI80].Sort ws.[B4], xlAscending, Header:=xlYes 'xlNo
A+
 
Dernière édition:
Bonjour D10,

Dans un test on peut toujours ajouter des conditions, ici pour la couleur (jaune) de l'onglet :
Code:
Sub Tri()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
    If ws.[B4] = "Valeur_" And ws.Tab.ColorIndex = 6 Then ws.[B4:CI80].Sort ws.[B4], xlAscending
Next
End Sub
A+
 
- 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
8
Affichages
1 K
Réponses
4
Affichages
1 K
Retour