Ajouter/retirer du code dans le VBE par macro

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

dionys0s

XLDnaute Impliqué
Bonjour tout le monde

je souhaiterais qu'en fonction de valeurs remplies dans mes cellules, mes macros apparaissent en vert ou non dans le VBE, i.e qu'une coche ' s'insère ou se retire au début de chaque ligne de la macro, mais pas la première (Sub...) ni la dernière (End Sub). Le fichier exemple et les 3 macros toutes nulles du module 1 devraient être parlantes.

D'avance merci pour vos réponses 😎

Bonne journée à tous

Dionys0s
 

Pièces jointes

Dernière édition:
Re : Ajouter/retirer du code dans le VBE par macro

Autre chose.. toujours pour la suite...
si tu lances les macro telles qu'elles.. deux fois de suite: par exemple: décommenter deux fois de suite.. tu vas te retrouver avec des macros inutilisables puisque pour décommenter. on enlève le premier caractère..
il faut donc décommenter une macro si et seulement si elle ne l'est pas déjà..
pour cela. il suffit dans CHAQUE macro ajoutter son état (Active ou Inactive) juste sous le nom de la macro
puis faire un test dessus:

tes macros ressemblent donc à ca
sub NomMacro()
'Inactive
code
.
.
.
end sub

et donc les macros commenter et décommenter deviennent:
Code:
    Dim Debut As Long, Fin As Long, Ligne As Long, Texte As String
    Dim NomModule As String
    
    With ThisWorkbook
        With .VBProject.VBComponents("Module1").CodeModule   'Module 1
            Debut = .ProcStartLine(NomMacro, vbext_pk_Proc)
            Fin = .ProcCountLines(NomMacro, 0) + Debut - 1
            If Left(.Lines(Debut + 1, 1), 4) = "'Ina" Then
                MsgBox ("déjà inactive")
            Else
            .ReplaceLine Debut + 1, "'Inactive"
            
            For Ligne = Debut + 2 To Fin - 1
                If .Lines(Ligne, 1) <> "" And Left(.Lines(Ligne, 1), 3) <> "Sub" Then
                    Texte = "'" & .Lines(Ligne, 1)
                    .ReplaceLine (Ligne), Texte
                End If
            Next
            End If
        End With
    End With
End Sub

Sub DéCommenter(NomMacro As String)
    Dim Debut As Long, Fin As Long, Ligne As Long, Texte As String
    Dim NomModule As String
    
    With ThisWorkbook
        With .VBProject.VBComponents("Module1").CodeModule   'Module 1
            Debut = .ProcStartLine(NomMacro, vbext_pk_Proc)
            Fin = .ProcCountLines(NomMacro, 0) + Debut - 1
            If Left(.Lines(Debut + 1, 1), 4) = "'Act" Then
                MsgBox ("déjà active")
            Else
            .ReplaceLine Debut + 1, "'Active"
            For Ligne = Debut + 2 To Fin - 1
                If .Lines(Ligne, 1) <> "" Then
                    Texte = .Lines(Ligne, 1)
                    Texte = Right(Texte, Len(Texte) - 1)
                    .ReplaceLine (Ligne), Texte
                End If
            Next
            End If
        End With
    End With
End Sub
 
- 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
Retour