Exécuter une macro pour toutes les feuilles d'un classeur
Résolu
Jef35_0206
Messages postés
4
Date d'inscription
Statut
Membre
Dernière intervention
-
Jef35_0206 Messages postés 4 Date d'inscription Statut Membre Dernière intervention -
Jef35_0206 Messages postés 4 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je sollicite votre aide.
En effet, j'ai écrit une macro et elle fonctionne, mais seulement sur un onglet.
La voici :
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Union([B17:B41], [C17:C41])) Is Nothing Then
If IsEmpty(Target) Then
Target = "X"
Cancel = True
Else
If Target = "X" Then
Target = ""
Cancel = True
End If
End If
End If
End Sub
Or, je voudrais qu'elle s'exécute pour l'ensemble des onglets (200) du classeur.
J'ai fait des recherches et ça donne ça :
Sub Dosomething()
Dim Ws As Worksheet
Application.ScreenUpdating = False
For Each Ws In Worksheets
Ws.Select
Call Runcode
Next
Application.ScreenUpdating = True
End Sub
Sub Runcode()
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Union([B17:B41], [C17:C41])) Is Nothing Then
If IsEmpty(Target) Then
Target = "X"
Cancel = True
Else
If Target = "X" Then
Target = ""
Cancel = True
Next Ws
End Sub
Mais ça ne fonctionne pas (message d'erreur : Erreur de compilation: End Sub attendu).
NOTA : j'ai inséré un module et y ai inscrit ce code.
J'espère avoir clairement formulé mon problème.
Tout comme j'espère que quelqu'un pourra m'aider.
D’avance merci.
Jef
Je sollicite votre aide.
En effet, j'ai écrit une macro et elle fonctionne, mais seulement sur un onglet.
La voici :
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Union([B17:B41], [C17:C41])) Is Nothing Then
If IsEmpty(Target) Then
Target = "X"
Cancel = True
Else
If Target = "X" Then
Target = ""
Cancel = True
End If
End If
End If
End Sub
Or, je voudrais qu'elle s'exécute pour l'ensemble des onglets (200) du classeur.
J'ai fait des recherches et ça donne ça :
Sub Dosomething()
Dim Ws As Worksheet
Application.ScreenUpdating = False
For Each Ws In Worksheets
Ws.Select
Call Runcode
Next
Application.ScreenUpdating = True
End Sub
Sub Runcode()
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Union([B17:B41], [C17:C41])) Is Nothing Then
If IsEmpty(Target) Then
Target = "X"
Cancel = True
Else
If Target = "X" Then
Target = ""
Cancel = True
Next Ws
End Sub
Mais ça ne fonctionne pas (message d'erreur : Erreur de compilation: End Sub attendu).
NOTA : j'ai inséré un module et y ai inscrit ce code.
J'espère avoir clairement formulé mon problème.
Tout comme j'espère que quelqu'un pourra m'aider.
D’avance merci.
Jef
A voir également:
- Exécuter une macro pour toutes les feuilles d'un classeur
- Comment faire un livret avec des feuilles a4 - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Bruler les feuilles de laurier - Guide
- Jitbit macro recorder - Télécharger - Confidentialité
- Regrouper plusieurs feuilles excel en une seule - Guide
3 réponses
Bonjour,
a mettre dans ThisWorkbook:
a mettre dans ThisWorkbook:
Option Explicit Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) 'ton code End Sub
Bonjour cs_Le Pivert,
Tout d'abord merci d'avoir répondu si vite.
J'ai donc écrit dans ThisWorbook :
Option Explicit
Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Union([B17:B41], [C17:C41])) Is Nothing Then
If IsEmpty(Target) Then
Target = "X"
Cancel = True
Else
If Target = "X" Then
Target = ""
Cancel = True
End If
End If
End If
End Sub
Mais lorsque je double clique sur une case concernée, le "X" n'apparaît pas.
J'en suis désolé, car étant novice, je ne perçois forcément pas tout ce qu'il faut faire.
Mais encore merci.
Tout d'abord merci d'avoir répondu si vite.
J'ai donc écrit dans ThisWorbook :
Option Explicit
Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Union([B17:B41], [C17:C41])) Is Nothing Then
If IsEmpty(Target) Then
Target = "X"
Cancel = True
Else
If Target = "X" Then
Target = ""
Cancel = True
End If
End If
End If
End Sub
Mais lorsque je double clique sur une case concernée, le "X" n'apparaît pas.
J'en suis désolé, car étant novice, je ne perçois forcément pas tout ce qu'il faut faire.
Mais encore merci.
Tout à fait !
J'ai forcément fait un truc de travers.
Donc, j'ai refait la manip'.
Dans le classeur, j'ouvre VBA (clik droit, visualiser le code).
Je double-clique sur ThisWorkbook. Un champ s'ouvre et j'y inscris le code en question.
Et ensuite j'enregistre dans le format prenant en charge les macros.
Et oui, ça fonctionne !
Magnifique !
Merci 1000 fois et bonne continuation.
Jef
J'ai forcément fait un truc de travers.
Donc, j'ai refait la manip'.
Dans le classeur, j'ouvre VBA (clik droit, visualiser le code).
Je double-clique sur ThisWorkbook. Un champ s'ouvre et j'y inscris le code en question.
Et ensuite j'enregistre dans le format prenant en charge les macros.
Et oui, ça fonctionne !
Magnifique !
Merci 1000 fois et bonne continuation.
Jef