Sub AffecterMacro()
' Début de l'intitulé des formes auxquelles affecter la macro
Const DebutIntituleForme = "Afficher / Masquer"
' Nom de la macro à affecter aux formes dont l'intitulé commence par DebutIntituleForme
' -> mettre la chaine vide "" pour inhiber toute macro associée
Const MacroAaffecter = "AfficherMasquerDistanceMoisPrecedent"
Dim xf As Worksheet, xshp As Shape, Intit As String
On Error Resume Next
For Each xf In ThisWorkbook.Worksheets
For Each xshp In xf.Shapes
Intit = "": Intit = xshp.TextFrame2.TextRange.Characters.Text
If Intit Like DebutIntituleForme & "*" Then xshp.OnAction = MacroAaffecter
Next xshp
Next xf
On Error GoTo 0
MsgBox "Traitement terminé.", vbInformation
End Sub
Sub Affecter()
Dim w As Worksheet, o As Object
For Each w In Worksheets
For Each o In w.DrawingObjects
If o.Text Like "Afficher / Masquer*" Then o.OnAction = "AfficherMasquerDistanceMoisPrecedent"
Next o, w
End Sub
Pas de problème chez moi, mais il faut savoir que TextFrame2 n'existe qu'à partir d'Excel 2013.Peux-tu me dire si la macro du fichier joint à mon premier message #4 fonctionne sur ton PC ?
Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
Dim Ws As Worksheet
If Sh.Name = "MENU" Then Exit Sub
Application.ScreenUpdating = False
For Each Ws In ThisWorkbook.Sheets
With Ws
.Unprotect
.Rows("5:5").Hidden = IIf(.Rows("5:5").Hidden, False, True)
End With
Next Ws
Cancel = True
End Sub
Tu l'as dit juste avant moiEdit : bah il paraît que c'est à partir d'Excel 2007 :
Sub AfficherMasquerDistanceMoisPrecedent()
ActiveSheet.Unprotect
With ActiveSheet
.Rows("5:5").Hidden = Not .Rows("5:5").Hidden
End With
End Sub
Sub Affecter()
Dim w As Worksheet, o As Object
For Each w In Worksheets
For Each o In w.DrawingObjects
If o.Text Like "Afficher / Masquer*" Then o.OnAction = "AfficherMasquerDistanceMoisPrecedent"
Next o, w
End Sub
Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
Application.ScreenUpdating = False
For Each Sh In ThisWorkbook.Sheets
If Sh.Name = "MENU" Then Exit Sub
With Sh
.Unprotect
.Rows("5:5").Hidden = IIf(.Rows("5:5").Hidden, False, True)
End With
Next Sh
Cancel = True
End Sub
PS: J'ai pas le droit à un petit bonjour moi aussi???Bonjour Lone-wolf, job75, Ce lien n'existe plus