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

Autres [RÉSOLU] Peut-on faire une macro qui met une seule macro en commentaires puis le contraire!!!

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 !

un internaute

XLDnaute Impliqué
Bonjour le forum
Allo! job75
Ta macro un bijou
Comme dit dans le titre est-ce possible?
Non pas sélectionner la macro puis faire "commenter bloc" puis le contraire "Ne pas commenter bloc" peut-on le faire avec une macro puis un bouton?
C'est certainement IDIOT ou C$N!!!
Te tente quand même .. mais interdit de rigoler!!!


VB:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Dim plage As Range, trim%, txt$, W#, n%
Set plage = Range("D18,D37,D56,D75")
Application.ScreenUpdating = False
Application.EnableEvents = False
For trim = 1 To 4
    txt = "Montant Fonds Travaux " & trim & IIf(trim = 1, "er", "ème") & " Trimestre "
    Set Target = plage.Areas(trim)
    W = Target.ColumnWidth
    n = 0
    Do
        n = n + 1
        Target = txt & String(n, "-") & ">"
        Target.Columns.AutoFit
    Loop While Target.ColumnWidth < W + 1
    Target.ColumnWidth = W
    Target.Characters(Len(txt) - 14, 14).Font.Color = vbRed
Next trim
Application.EnableEvents = True
End Sub
 
re
VB:
Option Explicit

Dim flag As Boolean 'variable flag

Private Sub Worksheet_Change(ByVal Target As Range)
    If flag Then
           Dim plage As Range, trim%, txt$, W#, n%
        Set plage = Range("D18,D37,D56,D75")
        Application.ScreenUpdating = False
        Application.EnableEvents = False
        For trim = 1 To 4
            txt = "Montant Fonds Travaux " & trim & IIf(trim = 1, "er", "ème") & " Trimestre "
            Set Target = plage.Areas(trim)
            W = Target.ColumnWidth
            n = 0
            Do
                n = n + 1
                Target = txt & String(n, "-") & ">"
                Target.Columns.AutoFit
            Loop While Target.ColumnWidth < W + 1
            Target.ColumnWidth = W
            Target.Characters(Len(txt) - 14, 14).Font.Color = vbRed
        Next trim
        Application.EnableEvents = True
    End If
End Sub

'sub du bouton en shape
Sub deflag()
    flag = Not flag
ActiveSheet.DrawingObjects("boutonflag").Text = Array("no", "")(Abs(flag)) & " Flag"
End Sub
au départ l'event change ne fonctionne pas
si tu clique il fonctionnera
si tu re clique il sera à nouveau bloqué
et ainsi de suite
le bouton change de texte pour un visuel sur l'etat du flag
te reste plus qu'a mettre une shape nommée boutonflag dans ta feuille
 
Bonjour @un internaute , @patricktoulon😉,

Un peu en retard (comme d'hab.)... Sinon même solution que @patricktoulon :
La forme sur la feuille est nommée "OKmacro" et sa macro associée a aussi pour nom OKmacro dans le module de la feuille Feuil1.
Les codes :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim plage As Range, trim%, txt$, W#, n%
   ' si AlternativeText est égal à "1", on continue l'exécution de cette macro sinon on quitte cette macro
   If Me.Shapes("OKmacro").AlternativeText <> "1" Then Exit Sub
   Set plage = Range("D18,D37,D56,D75")
   Application.ScreenUpdating = False
   Application.EnableEvents = False
   For trim = 1 To 4
      txt = "Montant Fonds Travaux " & trim & IIf(trim = 1, "er", "ème") & " Trimestre "
      Set Target = plage.Areas(trim)
      W = Target.ColumnWidth
      n = 0
      Do
         n = n + 1
         Target = txt & String(n, "-") & ">"
         Target.Columns.AutoFit
      Loop While Target.ColumnWidth < W + 1
      Target.ColumnWidth = W
      Target.Characters(Len(txt) - 14, 14).Font.Color = vbRed
   Next trim
   Application.EnableEvents = True
End Sub

Sub OKmacro()
Dim shp As Shape
   ' la forme s'appelle "OKmacro". AlternativeText de cette forme vaut "1" si la macro Worksheet_Change
   ' doit être exxécutée
   Set shp = Me.Shapes("OKmacro")      ' shp est la forme nommée "OKmacro" sur la feuille
   ' si AlternativeText de cette forme vaut "1" alors AlternativeText est mis à "0" sinon à "1"
   shp.AlternativeText = IIf(shp.AlternativeText = "1", "0", "1")
   ' On adapte le texte de la forme en fonction de AlternativeText
   shp.TextFrame2.TextRange.Characters.Text = IIf(shp.AlternativeText = 1, "Inhiber Worksheet_Change", "Activer Worksheet_Change")
End Sub
 

Pièces jointes

Bonjour le forum
Je met le fichier car je n'y comprend rien mais alors strictement rien
Si mapomme tu peux le faire fonctionner je suis preneur!!
Pourquoi pas mettre en double click cellule I7 par exemple Mode commentaires et mode non commentaires?
C'est certainement une C$$$$$$E!!!
Bien cordialement à vous tous
PS: je suis sous encore sous Excel 2003 et si le PC lâche moi aussi compte tenu de l'âge et de mes maladies
 

Pièces jointes

Bonjour,
Je ne sais pas, en revanche dans l'éditeur VBA tu peux faire un clic droit sur la barre de menu et ajouter l'option édition.

Après tu pourras sélectionner tout le code de la Macro et la passer en commentaire en un seule click.
 
re:
tu n'avais rien à mettre juste tester le fichier que je t'ai retourné
et je le redit si ta version d'excel n'est pas 2003, laisser le fichier en xls provoque le mode rétrocompatibilité
de ce fait la gestion des shapes peut être légèrement différente (si je me souviens bien )
donc par pitié essaie de travailler avec la bonne version d'excel autrement dit si tu n'es pas en excel 2003 sauve le en xlsm et vire moi ce xls

patrick
 
- 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
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…