Appliquer une macro en même temps sur toutes les feuilles
Résolu
Dromois26000
Messages postés
10
Date d'inscription
Statut
Membre
Dernière intervention
-
Zayx59530 Messages postés 3 Date d'inscription Statut Membre Dernière intervention -
Zayx59530 Messages postés 3 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- Appliquer une macro sur plusieurs feuilles
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Comment faire un livret avec des feuilles a4 - Guide
- Nommez une application d'appel vidéo ou de visioconférence - Guide
- Regrouper plusieurs feuilles excel en une seule - Guide
- Comment supprimer une application préinstallée sur android - Guide
10 réponses
Bonjour Patrick. Pour répondre à ta question, il faut que tu utilises la fonction « Next » pour que ta macro puisse interpréter tous les onglets. Tu trouveras ci-dessous un exemple :
Sub MAJ()
Dim ws As Worksheet
Sheets("Sheet1").Select 'Ici met ton premier onglet
Application.ScreenUpdating = False
For Each ws In ActiveWorkbook.Worksheets
ws.Activate
'Ici ta macro
Next ws
End Sub
Voilà, tu me laisses savoir si ça t'aide ! Bonne journée.
Sub MAJ()
Dim ws As Worksheet
Sheets("Sheet1").Select 'Ici met ton premier onglet
Application.ScreenUpdating = False
For Each ws In ActiveWorkbook.Worksheets
ws.Activate
'Ici ta macro
Next ws
End Sub
Voilà, tu me laisses savoir si ça t'aide ! Bonne journée.
Salut Patrick, tu trouveras ci-dessous ta macro complete :-)
Sub supprligne()
Dim ws As Worksheet
Sheets("Journaliers").Select
Application.ScreenUpdating = False
For Each ws In ActiveWorkbook.Worksheets
ws.Activate
'macro
if ws.Name <> "toto" Then
Dim Lg%, Plg As Range
Lg = Cells.Find("*", , , , xlByRows, xlPrevious).Row
Range("x2").Formula = "=or($a2=0,$a2="""",$c2=0,$c2="""")"
Range("a1:c" & Lg).AdvancedFilter Action:=xlFilterInPlace, _
CriteriaRange:=Range("x1:x2"), Unique:=False
On Error Resume Next
Set Plg = Range("a2:a" & Lg).SpecialCells(xlCellTypeVisible)
Plg.EntireRow.Delete
Range("x2").ClearContents
ActiveSheet.ShowAllData
ActiveSheet.PrintOut
End if
Next ws
End Sub
A+
Sub supprligne()
Dim ws As Worksheet
Sheets("Journaliers").Select
Application.ScreenUpdating = False
For Each ws In ActiveWorkbook.Worksheets
ws.Activate
'macro
if ws.Name <> "toto" Then
Dim Lg%, Plg As Range
Lg = Cells.Find("*", , , , xlByRows, xlPrevious).Row
Range("x2").Formula = "=or($a2=0,$a2="""",$c2=0,$c2="""")"
Range("a1:c" & Lg).AdvancedFilter Action:=xlFilterInPlace, _
CriteriaRange:=Range("x1:x2"), Unique:=False
On Error Resume Next
Set Plg = Range("a2:a" & Lg).SpecialCells(xlCellTypeVisible)
Plg.EntireRow.Delete
Range("x2").ClearContents
ActiveSheet.ShowAllData
ActiveSheet.PrintOut
End if
Next ws
End Sub
A+
Bonjour,
On progresse, effectivement ça semble s'appliquer à toutes les feuilles mais il ma faudrait exclure la première qui contient les formules et qui ne doit ni être modifiée ni être imprimée.
J'ai bien essayé d'indiquer le nom de la deuxième feuille au début mais visiblement ça prend quand même la première en compte et du coup ça me flingue complètement ce qui devrait rester imprimé sur les autres...
Comment exclure une feuille et ou mettre l'instruction, je patauge.
Merci en tout cas pour ta réponse rapide.
On progresse, effectivement ça semble s'appliquer à toutes les feuilles mais il ma faudrait exclure la première qui contient les formules et qui ne doit ni être modifiée ni être imprimée.
J'ai bien essayé d'indiquer le nom de la deuxième feuille au début mais visiblement ça prend quand même la première en compte et du coup ça me flingue complètement ce qui devrait rester imprimé sur les autres...
Comment exclure une feuille et ou mettre l'instruction, je patauge.
Merci en tout cas pour ta réponse rapide.
Bonjour
si la feuille nommée "toto" est à exclure
si la feuille nommée "toto" est à exclure
Sub xxx() Dim ws As Worksheet Application.ScreenUpdating = False For Each ws In ActiveWorkbook.Worksheets If ws.Name <> "toto" Then MsgBox "pour faire qq chose" End If Next End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Encore merci mais, honte à moi je ne comprends pas où mettre ce complément.
Voilà ce que j'ai actuellement, la feuille à exclure est "Journaliers".
Est-ce que j'abuse si je te demande de rectifier ma macro ?
Sub supprligne()
Dim ws As Worksheet
Sheets("Journaliers").Select
Application.ScreenUpdating = False
For Each ws In ActiveWorkbook.Worksheets
ws.Activate
'macro
Dim Lg%, Plg As Range
Lg = Cells.Find("*", , , , xlByRows, xlPrevious).Row
Range("x2").Formula = "=or($a2=0,$a2="""",$c2=0,$c2="""")"
Range("a1:c" & Lg).AdvancedFilter Action:=xlFilterInPlace, _
CriteriaRange:=Range("x1:x2"), Unique:=False
On Error Resume Next
Set Plg = Range("a2:a" & Lg).SpecialCells(xlCellTypeVisible)
Plg.EntireRow.Delete
Range("x2").ClearContents
ActiveSheet.ShowAllData
ActiveSheet.PrintOut
Next ws
End Sub
Voilà ce que j'ai actuellement, la feuille à exclure est "Journaliers".
Est-ce que j'abuse si je te demande de rectifier ma macro ?
Sub supprligne()
Dim ws As Worksheet
Sheets("Journaliers").Select
Application.ScreenUpdating = False
For Each ws In ActiveWorkbook.Worksheets
ws.Activate
'macro
Dim Lg%, Plg As Range
Lg = Cells.Find("*", , , , xlByRows, xlPrevious).Row
Range("x2").Formula = "=or($a2=0,$a2="""",$c2=0,$c2="""")"
Range("a1:c" & Lg).AdvancedFilter Action:=xlFilterInPlace, _
CriteriaRange:=Range("x1:x2"), Unique:=False
On Error Resume Next
Set Plg = Range("a2:a" & Lg).SpecialCells(xlCellTypeVisible)
Plg.EntireRow.Delete
Range("x2").ClearContents
ActiveSheet.ShowAllData
ActiveSheet.PrintOut
Next ws
End Sub
Oups ! Désolé, j'étais tellement content d'avoir la solution que j'ai même pas pensé à remercier les précédents.
Alors merci aussi à toi bien sur :-)
Alors merci aussi à toi bien sur :-)
Merci à tous, en lisant vos échanges j'ai pu résoudre un problème similaire!
Bonne année !
Amicalement
Bonne année !
Amicalement
Bonjour le forum! Je recherche une solution à un problème similaire.
Pour ma part mon code ressemble à cela:
Private Sub TextBox1_Change()
Dim ws As Worksheet
For Each ws In Sheets(Array("Sommaire", "Prévisions", "Tableau des téléchargements"))
Dim sCritere As String
sCritere = "=" & TextBox1.Text & "*"
ActiveSheet.Range("$A$18:$J$100000").AutoFilter Field:=1, Criteria1:=sCritere, _
Operator:=xlAnd
Next ws
End Sub
Cependant ma textbox ne filtre que ma première feuille "Sommaire" en gros elle ne traite que ma feuille active.
J'aimerai que celle-ci filtre également les deux autres feuilles que j'ai ajouté en "Sheets(Array(" sans toucher aux autres feuilles du classeurs (j'ai plus de 600feuilles mais seulement ces trois à traiter).
C'est possible? En espérant avoir une réponse :) Merci d'avance!
Pour ma part mon code ressemble à cela:
Private Sub TextBox1_Change()
Dim ws As Worksheet
For Each ws In Sheets(Array("Sommaire", "Prévisions", "Tableau des téléchargements"))
Dim sCritere As String
sCritere = "=" & TextBox1.Text & "*"
ActiveSheet.Range("$A$18:$J$100000").AutoFilter Field:=1, Criteria1:=sCritere, _
Operator:=xlAnd
Next ws
End Sub
Cependant ma textbox ne filtre que ma première feuille "Sommaire" en gros elle ne traite que ma feuille active.
J'aimerai que celle-ci filtre également les deux autres feuilles que j'ai ajouté en "Sheets(Array(" sans toucher aux autres feuilles du classeurs (j'ai plus de 600feuilles mais seulement ces trois à traiter).
C'est possible? En espérant avoir une réponse :) Merci d'avance!