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

Boucle sur plusieurs feuilles

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

Chasse

XLDnaute Occasionnel
Bonjour le forum

J’ai une série d’instruction à appliquer sur plusieurs feuilles selon condition (sur toutes les feuilles don la valeur Range("L1") est supérieur à >= 1
J’aimerais mettre une boucle qui prenne chaque feuille et lui applique ces instructions sans que je sois obligé de les écrire 15 fois



If Range("L1") = "" Then

‘rien à faire Passer à la feuille suivante

If Range("L1") >= 1
Code:
If Range("TMS").Offset(1, 0) >= 1 And Range("retour").Offset(1, 0) >= 1 And Range("Livré_sans_Remb").Offset(1, 0) >= 1 _
And Range("Payé_à_l_expéditeur").Offset(1, 0) >= 1 Then '1/1/1/1
'?????????????????????
    ElseIf Range("TMS").Offset(1, 0) >= 1 And Range("retour").Offset(1, 0) = "" And Range("Livré_sans_Remb").Offset(1, 0) = "" _
    And Range("Payé_à_l_expéditeur").Offset(1, 0) = "" Then '1/0/0/0
      Range("retour").Resize(Selection.Rows.Count + 6, Selection.Columns.Count).EntireRow.Hidden = True

etc.etc. 16 X ElseIf
      
       End Sub

et enfin d'imprimer toutes les feuilles qui ont subit des modifications
Code:
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True

Merci de votre aide et A+
 
Re : Boucle sur plusieurs feuilles

Bonjour Chasse,

Ton code fait référence aux plages nommées TMS, Retour, Livré_sans_Remb et Payé_à_l_expéditeur
Est-ce que ces noms existent sur toutes les feuilles ?
 
Re : Boucle sur plusieurs feuilles

Salut Chasse,
comme il n'y avait pas de classeur exemple, je n'ai pas pu testé. J'ai par contre essayé de mettre un peu d'ordre dans la macro, question de s'y retrouver un peu plus ! Vois si cela remplie ta demande.

VB:
Option Explicit

Sub Test()

Dim Sh

Application.ScreenUpdating = False
For Each Sh In Sheets
    Sh.Select
    If Cells(1, 12).Value <> "" Then
        If Cells(1, 12).Value >= 1 Then
            If Range("TMS").Offset(1, 0) >= 1 Then
                If Range("retour").Offset(1, 0) >= 1 Then
                    If Range("Livré_sans_Remb").Offset(1, 0) >= 1 Then
                        If Range("Payé_à_l_expéditeur").Offset(1, 0) >= 1 Then
                            
                            'Il manque ton code ici
                            
                            ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
                        End If
                    End If
                End If
            Else
                If Range("retour").Offset(1, 0) = "" Then
                    If Range("Livré_sans_Remb").Offset(1, 0) = "" Then
                        If Range("Payé_à_l_expéditeur").Offset(1, 0) = "" Then
                            Range("retour").Resize(Selection.Rows.Count + 6, Selection.Columns.Count).EntireRow.Hidden = True
                            ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
                        End If
                    End If
                End If
            End If
        End If
    End If
Next

End Sub

Cordialement,

Étienne

Édit : Salutations tototiti 🙂
 
Re : Boucle sur plusieurs feuilles

Salut Etienne2323
Merci ça fonctionne

Seulement il n’y a que15 feuilles sur 20 ou il me faut la boucle for Each

Comment nommer ses 15 feuilles

D’avance merci et A+
Cordialement
 
Dernière édition:
Re : Boucle sur plusieurs feuilles

Bonjour,

peut être plus facile d'exclure 5 feuilles... un exemple ci-dessous à adapter :
Code:
Option Explicit
Sub test()
Dim ws As Worksheet, t() As Variant
t = Array("Feuil1", "Feuil2", "Feuil3")
For Each ws In Worksheets
    If IsError(Application.Match(ws.Name, t, 0)) Then
        'instruction si fait pas partie de la liste t
    End If
Next ws
End Sub

bon après midi
@+
 
Re : Boucle sur plusieurs feuilles

Bonjour Pierrot93 et merci

J’ai adapté ton code ça a l’air de fonctionner
Code:
Sub masqué()
Dim ws As Worksheet, t() As Variant
t = Array("Feuil1", "Feuil16", "Feuil7", "Feuil17")
For Each ws In Worksheets
    If IsError(Application.Match(ws.Name, t, 0)) Then
ws.Select

If Range("TMS").Offset(1, 0) = "" And Range("retour").Offset(1, 0) = "" And Range("Livré_sans_Remb").Offset(1, 0) = "" _
And Range("Payé_à_l_expéditeur").Offset(1, 0) = "" Then '0/0/0/0
'?????????????????????
ElseIf Range("TMS").Offset(1, 0) >= 1 And Range("retour").Offset(1, 0) >= 1 And Range("Livré_sans_Remb").Offset(1, 0) >= 1 _
And Range("Payé_à_l_expéditeur").Offset(1, 0) >= 1 Then '1/1/1/1
'?????????????????????
    ElseIf Range("TMS").Offset(1, 0) >= 1 And Range("retour").Offset(1, 0) = "" And Range("Livré_sans_Remb").Offset(1, 0) = "" _
    And Range("Payé_à_l_expéditeur").Offset(1, 0) = "" Then '1/0/0/0
      Range("retour").Resize(Selection.Rows.Count + 6, Selection.Columns.Count).EntireRow.Hidden = True
      
        ElseIf Range("TMS").Offset(1, 0) >= 1 And Range("retour").Offset(1, 0) >= 1 And Range("Livré_sans_Remb").Offset(1, 0) = "" _
        And Range("Payé_à_l_expéditeur").Offset(1, 0) = "" Then ' 1/1/0/0
          Range("retour").End(xlDown).Offset(1, 0).Resize(Selection.Rows.Count + 5, Selection.Columns.Count).EntireRow.Hidden = True
        
            ElseIf Range("TMS").Offset(1, 0) >= 1 And Range("retour").Offset(1, 0) >= 1 And Range("Livré_sans_Remb").Offset(1, 0) >= 1 _
            And Range("Payé_à_l_expéditeur").Offset(1, 0) = "" Then '1/1/1/0
              Range("Livré_sans_Remb").End(xlDown).Offset(1, 0).Resize(Selection.Rows.Count + 2, Selection.Columns.Count).EntireRow.Hidden = True
        
                ElseIf Range("TMS").Offset(1, 0) >= 1 And Range("retour").Offset(1, 0) = "" And Range("Livré_sans_Remb").Offset(1, 0) >= 1 _
                And Range("Payé_à_l_expéditeur").Offset(1, 0) >= 1 Then '1/0/1/1
                  Range("retour").Resize(Selection.Rows.Count + 2, Selection.Columns.Count).EntireRow.Hidden = True
               
ElseIf Range("TMS").Offset(1, 0) >= 1 And Range("retour").Offset(1, 0) = "" And Range("Livré_sans_Remb").Offset(1, 0) = "" _
And Range("Payé_à_l_expéditeur").Offset(1, 0) >= 1 Then '1/0/0/1
  Range("retour").Resize(Selection.Rows.Count + 5, Selection.Columns.Count).EntireRow.Hidden = True
    
    ElseIf Range("TMS").Offset(1, 0) >= 1 And Range("retour").Offset(1, 0) >= 1 And Range("Livré_sans_Remb").Offset(1, 0) = "" _
    And Range("Payé_à_l_expéditeur").Offset(1, 0) >= 1 Then '1/1/0/1
      Range("Livré_sans_Remb").Resize(Selection.Rows.Count + 2, Selection.Columns.Count).EntireRow.Hidden = True
                        
        ElseIf Range("TMS").Offset(1, 0) >= 1 And Range("retour").Offset(1, 0) = "" And Range("Livré_sans_Remb").Offset(1, 0) >= 1 _
        And Range("Payé_à_l_expéditeur").Offset(1, 0) = "" Then '1/0/1/0
          Range("retour").Resize(Selection.Rows.Count + 2, Selection.Columns.Count).EntireRow.Hidden = True
          Range("Livré_sans_Remb").End(xlDown).Offset(1, 0).Resize(Selection.Rows.Count + 2, Selection.Columns.Count).EntireRow.Hidden = True
     
            ElseIf Range("TMS").Offset(1, 0) = "" And Range("retour").Offset(1, 0) = "" And Range("Livré_sans_Remb").Offset(1, 0) = "" _
            And Range("Payé_à_l_expéditeur").Offset(1, 0) >= 1 Then '0/0/0/1
              Range("TMS").Offset(1, 0).Resize(Selection.Rows.Count + 8, Selection.Columns.Count).EntireRow.Hidden = True
                    
                ElseIf Range("TMS").Offset(1, 0) = "" And Range("retour").Offset(1, 0) = "" And Range("Livré_sans_Remb").Offset(1, 0) >= 1 _
                And Range("Payé_à_l_expéditeur").Offset(1, 0) >= 1 Then '0/0/1/1
                  Range("TMS").Offset(1, 0).Resize(Selection.Rows.Count + 5, Selection.Columns.Count).EntireRow.Hidden = True
                  
ElseIf Range("TMS").Offset(1, 0) = "" And Range("retour").Offset(1, 0) >= 1 And Range("Livré_sans_Remb").Offset(1, 0) >= 1 _
And Range("Payé_à_l_expéditeur").Offset(1, 0) >= 1 Then '0/1/1/1
  Range("TMS").Offset(1, 0).Resize(Selection.Rows.Count + 2, Selection.Columns.Count).EntireRow.Hidden = True
                     
    ElseIf Range("TMS").Offset(1, 0) = "" And Range("retour").Offset(1, 0) >= 1 And Range("Livré_sans_Remb").Offset(1, 0) = "" _
    And Range("Payé_à_l_expéditeur").Offset(1, 0) >= 1 Then '0/1/0/1
      Range("TMS").Offset(1, 0).Resize(Selection.Rows.Count + 2, Selection.Columns.Count).EntireRow.Hidden = True
      Range("Livré_sans_Remb").Resize(Selection.Rows.Count + 2, Selection.Columns.Count).EntireRow.Hidden = True
      
        ElseIf Range("TMS").Offset(1, 0) = "" And Range("retour").Offset(1, 0) >= 1 And Range("Livré_sans_Remb").Offset(1, 0) >= 1 _
        And Range("Payé_à_l_expéditeur").Offset(1, 0) = "" Then '0/1/1/0
          Range("TMS").Offset(1, 0).Resize(Selection.Rows.Count + 2, Selection.Columns.Count).EntireRow.Hidden = True
          Range("Livré_sans_Remb").End(xlDown).Offset(1, 0).Resize(Selection.Rows.Count + 2, Selection.Columns.Count).EntireRow.Hidden = True
          
            ElseIf Range("TMS").Offset(1, 0) = "" And Range("retour").Offset(1, 0) = "" And Range("Livré_sans_Remb").Offset(1, 0) >= 1 _
            And Range("Payé_à_l_expéditeur").Offset(1, 0) = "" Then '0/0/1/0
              Range("TMS").Offset(1, 0).Resize(Selection.Rows.Count + 5, Selection.Columns.Count).EntireRow.Hidden = True
              Range("Livré_sans_Remb").End(xlDown).Offset(1, 0).Resize(Selection.Rows.Count + 2, Selection.Columns.Count).EntireRow.Hidden = True
                    
                ElseIf Range("TMS").Offset(1, 0) = "" And Range("retour").Offset(1, 0) >= 1 And Range("Livré_sans_Remb").Offset(1, 0) = "" _
                And Range("Payé_à_l_expéditeur").Offset(1, 0) = "" Then '0/1/0/0
                  Range("TMS").Offset(1, 0).Resize(Selection.Rows.Count + 2, Selection.Columns.Count).EntireRow.Hidden = True
                  Range("retour").End(xlDown).Offset(1, 0).Resize(Selection.Rows.Count + 5, Selection.Columns.Count).EntireRow.Hidden = True
                          
        End If
  
 End If
 Next ws
End Sub

Encore Merci a tous et A + pour un nouveau fil
 
- 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

D
Réponses
4
Affichages
747
D
S
Réponses
5
Affichages
981
D
  • Résolu(e)
Microsoft 365 Boucle Do until
Réponses
16
Affichages
3 K
danpom302
D
E
Réponses
1
Affichages
1 K
Elegancya
E
J
Réponses
3
Affichages
1 K
Janis
J
Réponses
2
Affichages
964
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…