Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Modifier code par Macro

3 réponses
Avatar
JulieH
Bonjour à toutes et tous,

J'ai un fichier original avec une feuille "Accueil" qui permet, après
saisie de date - Nom..., de générer un nouveau fichier.
Dans le fichier original, il y a une macro à l'ouverture qui permet de
retrouver la feuille "Accueil" quelque soit la manière dont a été fermé
le fichier

Private Sub Workbook_Open()

Application.ScreenUpdating = False
On Error Resume Next
For Each sh In Worksheets
If sh.Name <> "Accueil" Then sh.Visible = False
Next sh

[Feuil8].[B15].ClearContents
[Feuil8].[B18].ClearContents
End Sub


Mon problème est le suivant :
Dans le fichier que j'ai crée, la feuille "Accueil" n'existe plus et
donc lors de l'ouverture cela pose problème.
En revanche, je souhaite bien avoir la même macro pour faire la même
chose avec une autre feuille "Données".

Voilà ce que j'ai imaginé :
Je supprime par macro la ligne 6 et je la remplace par une nouvelle ligne :

Sub SupprimerLigneMacroThisworkbook()

Dim LigneAModifier As Long
With ThisWorkbook.VBProject.VBComponents("Thisworkbook").CodeModule
LigneAModifier = .ProcBodyLine("Workbook_Open", 0) + 1
.DeleteLines 6
.InsertLines 6, " If sh.Name <> Données Then sh.Visible = False"
End With

End Sub

Tout paraît correct, malheureusement, cela ne fonctionne pas car il
faudrait mettre "Données" et cela la macro ne veut pas l'accepter.

Si quelqu'un peu résoudre cela où me donner une autre idée (ligne
désactivée par apostrophe qu'on enlève par Macro par exemple).

Merci d'avance

Julie

3 réponses

Avatar
JulieH
Bonsoir et merci pour ta réponse,

Effectivement, c'était si simple. J'avais testé de nombreuses choses
mais pas celle-ci.

Si je peux me permettre de prendre encore un peu de ton temps, l'autre
piste m'intéresse aussi : est-il possible d'enlever l'apostrophe d'une
ligne (la ligne 6 par exemple) et d'en mettre un sur une autre ligne (7 ?

Merci pour ton aide comme d'habitude très précieuse.

Julie

MichDenis a écrit :
| car il faudrait mettre "Données" et cela la macro ne veut pas l'accepter.

Si c'est ton seul problème, utilise la syntaxe suivante :

.InsertLines 6, " If sh.Name <> ""Données"" Then sh.Visible = False"




"JulieH" a écrit dans le message de news: %23UfL$
Bonjour à toutes et tous,

J'ai un fichier original avec une feuille "Accueil" qui permet, après
saisie de date - Nom..., de générer un nouveau fichier.
Dans le fichier original, il y a une macro à l'ouverture qui permet de
retrouver la feuille "Accueil" quelque soit la manière dont a été fermé
le fichier

Private Sub Workbook_Open()

Application.ScreenUpdating = False
On Error Resume Next
For Each sh In Worksheets
If sh.Name <> "Accueil" Then sh.Visible = False
Next sh

[Feuil8].[B15].ClearContents
[Feuil8].[B18].ClearContents
End Sub


Mon problème est le suivant :
Dans le fichier que j'ai crée, la feuille "Accueil" n'existe plus et
donc lors de l'ouverture cela pose problème.
En revanche, je souhaite bien avoir la même macro pour faire la même
chose avec une autre feuille "Données".

Voilà ce que j'ai imaginé :
Je supprime par macro la ligne 6 et je la remplace par une nouvelle ligne :

Sub SupprimerLigneMacroThisworkbook()

Dim LigneAModifier As Long
With ThisWorkbook.VBProject.VBComponents("Thisworkbook").CodeModule
LigneAModifier = .ProcBodyLine("Workbook_Open", 0) + 1
.DeleteLines 6
.InsertLines 6, " If sh.Name <> Données Then sh.Visible = False"
End With

End Sub

Tout paraît correct, malheureusement, cela ne fonctionne pas car il
faudrait mettre "Données" et cela la macro ne veut pas l'accepter.

Si quelqu'un peu résoudre cela où me donner une autre idée (ligne
désactivée par apostrophe qu'on enlève par Macro par exemple).

Merci d'avance

Julie


Avatar
JulieH
Merci à nouveau,
cela fonctionne même si je ne comprends pas l'intérêt de tout le code,
notamment la ligne "Range("A1") = X". En effet les macros copiaient la
ligne concernée par l'apostrophe en A1. Je l'ai donc enlevée.

Voilà ce que j'ai fait :

J'ai ces deux lignes (en lignes 5 et 6 de Thisworkbook)

If sh.Name <> "Accueil" Then sh.Visible = False
' If sh.Name <> "Données" Then sh.Visible = False

J'ai cumulé les deux macros car je souhaite avoir l'inverse :

' If sh.Name <> "Accueil" Then sh.Visible = False
If sh.Name <> "Données" Then sh.Visible = False

Sub MettreEnlever_Guillemet()
Dim X As String, Xa As String
With ThisWorkbook.VBProject.VBComponents("ThisWorkbook")
With .CodeModule
X = "'" & .Lines(5, 1)
.ReplaceLine 5, X

Xa = Replace(.Lines(6, 1), "'", "")
.ReplaceLine 6, Xa

End With
End With
End Sub

Cela semble fonctionner. Merci de me dire si tu vois un problème.

Bon week end

Julie





MichDenis a écrit :
Ceci est amplement suffisant... en remplacement de celle soumise

Sub Mettre_Guillemet_Simple_Ligne_6()
Dim X As String
With ThisWorkbook.VBProject.VBComponents("ThisWorkbook")
With .CodeModule
X = "'" & .Lines(6, 1)
Range("A1") = X
.ReplaceLine 6, X
End With
End With
End Sub


'------------------------------------------------
Sub Enlever_Guillemet_Simple_Ligne_6()
Dim X As String
With ThisWorkbook.VBProject.VBComponents("ThisWorkbook")
With .CodeModule
X = Replace(.Lines(6, 1), "'", "")
Range("A1") = X
.ReplaceLine 6, X
End With
End With
End Sub
'------------------------------------------------





"JulieH" a écrit dans le message de news:
Bonsoir et merci pour ta réponse,

Effectivement, c'était si simple. J'avais testé de nombreuses choses
mais pas celle-ci.

Si je peux me permettre de prendre encore un peu de ton temps, l'autre
piste m'intéresse aussi : est-il possible d'enlever l'apostrophe d'une
ligne (la ligne 6 par exemple) et d'en mettre un sur une autre ligne (7 ?

Merci pour ton aide comme d'habitude très précieuse.

Julie

MichDenis a écrit :
| car il faudrait mettre "Données" et cela la macro ne veut pas l'accepter.

Si c'est ton seul problème, utilise la syntaxe suivante :

.InsertLines 6, " If sh.Name <> ""Données"" Then sh.Visible = False"




"JulieH" a écrit dans le message de news: %23UfL$
Bonjour à toutes et tous,

J'ai un fichier original avec une feuille "Accueil" qui permet, après
saisie de date - Nom..., de générer un nouveau fichier.
Dans le fichier original, il y a une macro à l'ouverture qui permet de
retrouver la feuille "Accueil" quelque soit la manière dont a été fermé
le fichier

Private Sub Workbook_Open()

Application.ScreenUpdating = False
On Error Resume Next
For Each sh In Worksheets
If sh.Name <> "Accueil" Then sh.Visible = False
Next sh

[Feuil8].[B15].ClearContents
[Feuil8].[B18].ClearContents
End Sub


Mon problème est le suivant :
Dans le fichier que j'ai crée, la feuille "Accueil" n'existe plus et
donc lors de l'ouverture cela pose problème.
En revanche, je souhaite bien avoir la même macro pour faire la même
chose avec une autre feuille "Données".

Voilà ce que j'ai imaginé :
Je supprime par macro la ligne 6 et je la remplace par une nouvelle ligne :

Sub SupprimerLigneMacroThisworkbook()

Dim LigneAModifier As Long
With ThisWorkbook.VBProject.VBComponents("Thisworkbook").CodeModule
LigneAModifier = .ProcBodyLine("Workbook_Open", 0) + 1
.DeleteLines 6
.InsertLines 6, " If sh.Name <> Données Then sh.Visible = False"
End With

End Sub

Tout paraît correct, malheureusement, cela ne fonctionne pas car il
faudrait mettre "Données" et cela la macro ne veut pas l'accepter.

Si quelqu'un peu résoudre cela où me donner une autre idée (ligne
désactivée par apostrophe qu'on enlève par Macro par exemple).

Merci d'avance

Julie




Avatar
JulieH
Le temps de faire mes essais, je n'avais pas vu ton message. On est
d'accord il me semble.

Merci beaucoup pour ton aide.

Julie
MichDenis a écrit :
Explicitement ce que tu as demandé :


'------------------------------------------------
Sub Enlever_Guillemet_Simple_Ligne_6()
Dim X As String, Y As String
With ThisWorkbook.VBProject.VBComponents("ThisWorkbook")
With .CodeModule
'Enlève aspostrophe ligne 6
X = Replace(.Lines(6, 1), "'", "")
.ReplaceLine 6, X
'Met un apostrophe sur la ligne 7
Y = "'" & .Lines(7, 1)
.ReplaceLine 7, Y
End With
End With
End Sub
'------------------------------------------------




"JulieH" a écrit dans le message de news:
Bonsoir et merci pour ta réponse,

Effectivement, c'était si simple. J'avais testé de nombreuses choses
mais pas celle-ci.

Si je peux me permettre de prendre encore un peu de ton temps, l'autre
piste m'intéresse aussi : est-il possible d'enlever l'apostrophe d'une
ligne (la ligne 6 par exemple) et d'en mettre un sur une autre ligne (7 ?

Merci pour ton aide comme d'habitude très précieuse.

Julie

MichDenis a écrit :
| car il faudrait mettre "Données" et cela la macro ne veut pas l'accepter.

Si c'est ton seul problème, utilise la syntaxe suivante :

.InsertLines 6, " If sh.Name <> ""Données"" Then sh.Visible = False"




"JulieH" a écrit dans le message de news: %23UfL$
Bonjour à toutes et tous,

J'ai un fichier original avec une feuille "Accueil" qui permet, après
saisie de date - Nom..., de générer un nouveau fichier.
Dans le fichier original, il y a une macro à l'ouverture qui permet de
retrouver la feuille "Accueil" quelque soit la manière dont a été fermé
le fichier

Private Sub Workbook_Open()

Application.ScreenUpdating = False
On Error Resume Next
For Each sh In Worksheets
If sh.Name <> "Accueil" Then sh.Visible = False
Next sh

[Feuil8].[B15].ClearContents
[Feuil8].[B18].ClearContents
End Sub


Mon problème est le suivant :
Dans le fichier que j'ai crée, la feuille "Accueil" n'existe plus et
donc lors de l'ouverture cela pose problème.
En revanche, je souhaite bien avoir la même macro pour faire la même
chose avec une autre feuille "Données".

Voilà ce que j'ai imaginé :
Je supprime par macro la ligne 6 et je la remplace par une nouvelle ligne :

Sub SupprimerLigneMacroThisworkbook()

Dim LigneAModifier As Long
With ThisWorkbook.VBProject.VBComponents("Thisworkbook").CodeModule
LigneAModifier = .ProcBodyLine("Workbook_Open", 0) + 1
.DeleteLines 6
.InsertLines 6, " If sh.Name <> Données Then sh.Visible = False"
End With

End Sub

Tout paraît correct, malheureusement, cela ne fonctionne pas car il
faudrait mettre "Données" et cela la macro ne veut pas l'accepter.

Si quelqu'un peu résoudre cela où me donner une autre idée (ligne
désactivée par apostrophe qu'on enlève par Macro par exemple).

Merci d'avance

Julie