Bonjour.
J'ai un souci, je n'arrive pas à supprimer une ligne précise dans Thisworkbook Private Sub Workbook_Open
Après plusieurs recherche sur les forums , je n'ai pas trouvé de solution.
Est-ce possible ???
Merci d'avance pour votre réponse.
Bonjour.
J'ai un souci, je n'arrive pas à supprimer une ligne précise dans Thisworkbook Private Sub Workbook_Open
Après plusieurs recherche sur les forums , je n'ai pas trouvé de solution.
Est-ce possible ???
Merci d'avance pour votre réponse.
Bonjour,
Si il s'agit de supprimer une ligne dans le code de l'évènement Private Sub Workbook_Open(), tu peux faire comme ceci :
par exemple pour supprimer la ligne de code MsgBox "test ligne"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 Sub test() 'Nécéssite d'activer la référence "Visual basic For Application Extensibility 5.3" Dim i As Integer, DebutMacro As Integer, FinMacro As Integer On Error Resume Next With ThisWorkbook.VBProject.VBComponents("Thisworkbook").CodeModule DebutMacro = .ProcStartLine("Workbook_Open", vbext_pk_Proc) FinMacro = .ProcCountLines("Workbook_Open", vbext_pk_Proc) + DebutMacro For i = DebutMacro To FinMacro If .Lines(i, 1) = "MsgBox ""test ligne""" Then .ReplaceLine i, "" End If Next End With End Sub
Bonjour fring
Merci de t’intéresser à mon petit problème.
J’ai trouvé une réponse simple :
J’utilise l'Add-In MZ-Tools pour numéroter rapidement les lignes d'une macro.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Sub SuprimerLIgneModule() With ThisWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule .deleteLines (64) End With End Sub
Hors MZ-Tools numérote les lignes de code uniquement par dizaine, dans mon cas la ligne n°340 correspond à la ligne 64 du Thisworkbook, par conséquent «.deleteLines (340) » provoquait une erreur.
Pour pallier à cette situation, je souhaiterais utiliser la procédure pour « Automatiser la numérotation des lignes » que j’ai trouvée dans le tuto Visual Basic Editor de Silkyroad.developpez.com, elle fonctionne parfaitement.
Par contre la procédure pour supprimer la numérotation bug et affiche le message suivant « Erreur de compilation : Instruction incorrecte à l’extérieure d’une procédure ».
Là, ça coince, je n’arrive à régler ce problème.
As-tu une solution car ces 2 procédures de Silkyroad sont très pratiques lorsque le nombre de lignes de code est important.
As-tu une solution stp.
Là franchement je ne procéderais pas comme ça, supprimer une ligne de code par son n° sans se soucier de ce qu'elle contient afin de vérifier que c'est la bonne ligne (et dans la bonne procédure) c'est aller droit dans le mur...
Par contre, dans le code que je te proposais, tu peux en effet remplacer .ReplaceLine i, "" par .DeleteLines i
Oups !!!
J'ai pas vérifier, mais sauf erreur de ma part tu as modifier ta première réponse ?
Je test ton code qui est très intéressant et je te réponds.
@ +![]()
Bonjour,
Avant d'accuser des outils excellents et de plus gratuits, ça serait bien de faire l'effort de lire les notices ou de scanner les possibilités de ceux-ci....
D'après-toi l'option incrément, à quoi sert-elle ?
juste pour ce point, sinon je suis totalement de l'avis de Fring
cordialement,Là franchement je ne procéderais pas comme ça, supprimer une ligne de code par son n° sans se soucier de ce qu'elle contient afin de vérifier que c'est la bonne ligne (et dans la bonne procédure) c'est aller droit dans le mur...
Didier
J'insiste un peu
Chez moi lorsque la ligne de code est indentée çà fonctionne pas, par contre si elle l'est çà fonctionne ?non désolé, je ne vois pas où est le problème, en reprenant ta ligne de code chez moi elle est bel et bien supprimée, les guillemets et les parenthèses sont correctement positionnés.
Bonjour Ormonth
J'accuse pas MZ-Tools qui est un excellent outils, j'utilise rarement la numérotation des lignes et j'ai zappé l'option incrément.
Néanmoins MZ-Tools numérote les lignes de code, il exclu les lignes vides
et commentées, ai-je manqué une option, dans mon cas la ligne n°34 correspond à la ligne 64 du Thisworkbook.
Cordialement modus57
aah oui en effet...je n'avais pas testé avec l'indentation du code, tu as bien fait d'insister
essaie comme ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 For i = DebutMacro To FinMacro If .Lines(i, 1) Like "*Worksheets(""AIDE"").Range(""A1"").Value = ""AIDE Version ("" & Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name)) & "")""" Then .ReplaceLine i, "" End If Next
Partager