Bonjour !
Je veux copier des feuilles d'un classeur dans un autre sans code, c'est à
dire sans macros et sans le code des feuilles (style SelectionChange,
etc.).
Si je sélectionne le contenu, copie, puis recopie les tailles des lignes
et colonnes, c'est trop long (... et pas de belle programmation, beuh).
Si je copie les feuilles, j'élimine les macros, mais pas le code des
feuilles. En revanche, c'est relativement rapide (moins que de copier le
classeur, mais alors il me reste tout le code...).
Quelle est la bonne solution ?
Dois-je copier les feuilles puis en éliminer le code ? Mais comment ?
Dois-je copier le classeur puis en éliminer tout le code ? Mais comment ?
Merci des bons conseils de ceux qui savent !
Bonjour !
Je veux copier des feuilles d'un classeur dans un autre sans code, c'est à
dire sans macros et sans le code des feuilles (style SelectionChange,
etc.).
Si je sélectionne le contenu, copie, puis recopie les tailles des lignes
et colonnes, c'est trop long (... et pas de belle programmation, beuh).
Si je copie les feuilles, j'élimine les macros, mais pas le code des
feuilles. En revanche, c'est relativement rapide (moins que de copier le
classeur, mais alors il me reste tout le code...).
Quelle est la bonne solution ?
Dois-je copier les feuilles puis en éliminer le code ? Mais comment ?
Dois-je copier le classeur puis en éliminer tout le code ? Mais comment ?
Merci des bons conseils de ceux qui savent !
Bonjour !
Je veux copier des feuilles d'un classeur dans un autre sans code, c'est à
dire sans macros et sans le code des feuilles (style SelectionChange,
etc.).
Si je sélectionne le contenu, copie, puis recopie les tailles des lignes
et colonnes, c'est trop long (... et pas de belle programmation, beuh).
Si je copie les feuilles, j'élimine les macros, mais pas le code des
feuilles. En revanche, c'est relativement rapide (moins que de copier le
classeur, mais alors il me reste tout le code...).
Quelle est la bonne solution ?
Dois-je copier les feuilles puis en éliminer le code ? Mais comment ?
Dois-je copier le classeur puis en éliminer tout le code ? Mais comment ?
Merci des bons conseils de ceux qui savent !
Salut,
J'ai un début d'idée, je me suis amusé à développer un petit truc :
1°) Je copie la feuille dans un nouveau classeur (on peut facilement
adapter le code si on souhaite copier dans un classeur existant).
2°) J'efface tous les codes de module attachés à des feuilles (si le
classeur qui reçoit la nouvelle feuille contient déjà déjà des feuilles
ayant du code il se trouvera également effacé : dans ce cas je pourrais
adapter ma macro).
Il doit être possible de faire plus court (peut-être) ...
Bon courage,
Bruno
Sub Macro()
Dim O As Object
Sheets("Feuil2").Copy 'à adapater en fonction de l'existence
'ou non classeur
With ActiveWorkbook.VBProject
For Each O In .VBComponents
If O.Type = 4 Then
With O.CodeModule
If .CountOfLines > 0 Then .DeleteLines 1, .CountOfLines
End With
End If
Next
End With
End Sub
Salut,
J'ai un début d'idée, je me suis amusé à développer un petit truc :
1°) Je copie la feuille dans un nouveau classeur (on peut facilement
adapter le code si on souhaite copier dans un classeur existant).
2°) J'efface tous les codes de module attachés à des feuilles (si le
classeur qui reçoit la nouvelle feuille contient déjà déjà des feuilles
ayant du code il se trouvera également effacé : dans ce cas je pourrais
adapter ma macro).
Il doit être possible de faire plus court (peut-être) ...
Bon courage,
Bruno
Sub Macro()
Dim O As Object
Sheets("Feuil2").Copy 'à adapater en fonction de l'existence
'ou non classeur
With ActiveWorkbook.VBProject
For Each O In .VBComponents
If O.Type = 4 Then
With O.CodeModule
If .CountOfLines > 0 Then .DeleteLines 1, .CountOfLines
End With
End If
Next
End With
End Sub
Salut,
J'ai un début d'idée, je me suis amusé à développer un petit truc :
1°) Je copie la feuille dans un nouveau classeur (on peut facilement
adapter le code si on souhaite copier dans un classeur existant).
2°) J'efface tous les codes de module attachés à des feuilles (si le
classeur qui reçoit la nouvelle feuille contient déjà déjà des feuilles
ayant du code il se trouvera également effacé : dans ce cas je pourrais
adapter ma macro).
Il doit être possible de faire plus court (peut-être) ...
Bon courage,
Bruno
Sub Macro()
Dim O As Object
Sheets("Feuil2").Copy 'à adapater en fonction de l'existence
'ou non classeur
With ActiveWorkbook.VBProject
For Each O In .VBComponents
If O.Type = 4 Then
With O.CodeModule
If .CountOfLines > 0 Then .DeleteLines 1, .CountOfLines
End With
End If
Next
End With
End Sub
Bonjour !
Je veux copier des feuilles d'un classeur dans un autre sans code,
c'est à
dire sans macros et sans le code des feuilles (style
SelectionChange, etc.).
Si je sélectionne le contenu, copie, puis recopie les tailles des
lignes et
colonnes, c'est trop long (... et pas de belle programmation, beuh).
Si je copie les feuilles, j'élimine les macros, mais pas le code des
feuilles. En revanche, c'est relativement rapide (moins que de
copier le
classeur, mais alors il me reste tout le code...).
Quelle est la bonne solution ?
Dois-je copier les feuilles puis en éliminer le code ? Mais comment
?
Dois-je copier le classeur puis en éliminer tout le code ? Mais
comment ?
Merci des bons conseils de ceux qui savent !
Bonjour !
Je veux copier des feuilles d'un classeur dans un autre sans code,
c'est à
dire sans macros et sans le code des feuilles (style
SelectionChange, etc.).
Si je sélectionne le contenu, copie, puis recopie les tailles des
lignes et
colonnes, c'est trop long (... et pas de belle programmation, beuh).
Si je copie les feuilles, j'élimine les macros, mais pas le code des
feuilles. En revanche, c'est relativement rapide (moins que de
copier le
classeur, mais alors il me reste tout le code...).
Quelle est la bonne solution ?
Dois-je copier les feuilles puis en éliminer le code ? Mais comment
?
Dois-je copier le classeur puis en éliminer tout le code ? Mais
comment ?
Merci des bons conseils de ceux qui savent !
Bonjour !
Je veux copier des feuilles d'un classeur dans un autre sans code,
c'est à
dire sans macros et sans le code des feuilles (style
SelectionChange, etc.).
Si je sélectionne le contenu, copie, puis recopie les tailles des
lignes et
colonnes, c'est trop long (... et pas de belle programmation, beuh).
Si je copie les feuilles, j'élimine les macros, mais pas le code des
feuilles. En revanche, c'est relativement rapide (moins que de
copier le
classeur, mais alors il me reste tout le code...).
Quelle est la bonne solution ?
Dois-je copier les feuilles puis en éliminer le code ? Mais comment
?
Dois-je copier le classeur puis en éliminer tout le code ? Mais
comment ?
Merci des bons conseils de ceux qui savent !
Autant pour moi, j'ai commis une erreur dans mon code, mieux vaut essayer
ce qui suit :
Sub Macro()
Dim O As Object
Sheets("Feuil2").Copy 'à adapater en fonction de l'existence
'ou non classeur
With ActiveWorkbook.VBProject
For Each O In .VBComponents
If O.Type <> 1 And O.Type <> 2 Then
With O.CodeModule
If .CountOfLines > 0 Then .DeleteLines 1, .CountOfLines
End With
End If
Next
End With
End Sub
Salutations
Bruno
"Bruno LOUIS" a écrit dans le message de news:
41b720f9$0$3437$Salut,
J'ai un début d'idée, je me suis amusé à développer un petit truc :
1°) Je copie la feuille dans un nouveau classeur (on peut facilement
adapter le code si on souhaite copier dans un classeur existant).
2°) J'efface tous les codes de module attachés à des feuilles (si le
classeur qui reçoit la nouvelle feuille contient déjà déjà des feuilles
ayant du code il se trouvera également effacé : dans ce cas je pourrais
adapter ma macro).
Il doit être possible de faire plus court (peut-être) ...
Bon courage,
Bruno
Sub Macro()
Dim O As Object
Sheets("Feuil2").Copy 'à adapater en fonction de l'existence
'ou non classeur
With ActiveWorkbook.VBProject
For Each O In .VBComponents
If O.Type = 4 Then
With O.CodeModule
If .CountOfLines > 0 Then .DeleteLines 1, .CountOfLines
End With
End If
Next
End With
End Sub
Autant pour moi, j'ai commis une erreur dans mon code, mieux vaut essayer
ce qui suit :
Sub Macro()
Dim O As Object
Sheets("Feuil2").Copy 'à adapater en fonction de l'existence
'ou non classeur
With ActiveWorkbook.VBProject
For Each O In .VBComponents
If O.Type <> 1 And O.Type <> 2 Then
With O.CodeModule
If .CountOfLines > 0 Then .DeleteLines 1, .CountOfLines
End With
End If
Next
End With
End Sub
Salutations
Bruno
"Bruno LOUIS" <_BrunoLOUIS@free.fr> a écrit dans le message de news:
41b720f9$0$3437$8fcfb975@news.wanadoo.fr...
Salut,
J'ai un début d'idée, je me suis amusé à développer un petit truc :
1°) Je copie la feuille dans un nouveau classeur (on peut facilement
adapter le code si on souhaite copier dans un classeur existant).
2°) J'efface tous les codes de module attachés à des feuilles (si le
classeur qui reçoit la nouvelle feuille contient déjà déjà des feuilles
ayant du code il se trouvera également effacé : dans ce cas je pourrais
adapter ma macro).
Il doit être possible de faire plus court (peut-être) ...
Bon courage,
Bruno
Sub Macro()
Dim O As Object
Sheets("Feuil2").Copy 'à adapater en fonction de l'existence
'ou non classeur
With ActiveWorkbook.VBProject
For Each O In .VBComponents
If O.Type = 4 Then
With O.CodeModule
If .CountOfLines > 0 Then .DeleteLines 1, .CountOfLines
End With
End If
Next
End With
End Sub
Autant pour moi, j'ai commis une erreur dans mon code, mieux vaut essayer
ce qui suit :
Sub Macro()
Dim O As Object
Sheets("Feuil2").Copy 'à adapater en fonction de l'existence
'ou non classeur
With ActiveWorkbook.VBProject
For Each O In .VBComponents
If O.Type <> 1 And O.Type <> 2 Then
With O.CodeModule
If .CountOfLines > 0 Then .DeleteLines 1, .CountOfLines
End With
End If
Next
End With
End Sub
Salutations
Bruno
"Bruno LOUIS" a écrit dans le message de news:
41b720f9$0$3437$Salut,
J'ai un début d'idée, je me suis amusé à développer un petit truc :
1°) Je copie la feuille dans un nouveau classeur (on peut facilement
adapter le code si on souhaite copier dans un classeur existant).
2°) J'efface tous les codes de module attachés à des feuilles (si le
classeur qui reçoit la nouvelle feuille contient déjà déjà des feuilles
ayant du code il se trouvera également effacé : dans ce cas je pourrais
adapter ma macro).
Il doit être possible de faire plus court (peut-être) ...
Bon courage,
Bruno
Sub Macro()
Dim O As Object
Sheets("Feuil2").Copy 'à adapater en fonction de l'existence
'ou non classeur
With ActiveWorkbook.VBProject
For Each O In .VBComponents
If O.Type = 4 Then
With O.CodeModule
If .CountOfLines > 0 Then .DeleteLines 1, .CountOfLines
End With
End If
Next
End With
End Sub
"Erreur 1004 : L'accès par programme au projet VB n'est pas fiable"
Merci Bruno ! Merci Clément !
C'est ce que je cherchais. Merci beaucoup beaucoup.
Mais j'ai un problème de mise en oeuvre (nul n'est parfait, pas même
microsoft... et même le code de Frédéric Sigonneau...).
Quand j'arrive sur :
With ActiveWorkbook.VBProject
....VBA plante. Premier message :
"Erreur 1004 : L'accès par programme au projet VB n'est pas fiable"
Je refais F8 pour exécuter à nouveau la ligne. Second message : La méthode
VBProject de ... a échoué.
Je me suis imaginé que je devrais peut-être commencer par donner un nom et
sauvegarder le classeur qui reçoit la copie. (C'est ça la naïveté ??) Je
fais et je place l'effacement des lignes de codes après.
Et là, mystère, mystère, il passe sur la ligne ci-dessus puis saute plus
loin dans la sub, passant gaillardement au dessus du end with et même d'un
end sub.
Au total, donc, ça ne marche pas pour l'instant. Je demeure avec les codes
de mes feuilles.
Je suis pourtant persuadé que ce que vous m'avez indiqué est la bonne
méthode, rapide et nette...
Je soumets donc ce pb à la sagacité des experts !
"Bruno LOUIS" a écrit dans le message de news:
41b730e2$0$22176$Autant pour moi, j'ai commis une erreur dans mon code, mieux vaut essayer
ce qui suit :
Sub Macro()
Dim O As Object
Sheets("Feuil2").Copy 'à adapater en fonction de l'existence
'ou non classeur
With ActiveWorkbook.VBProject
For Each O In .VBComponents
If O.Type <> 1 And O.Type <> 2 Then
With O.CodeModule
If .CountOfLines > 0 Then .DeleteLines 1, .CountOfLines
End With
End If
Next
End With
End Sub
Salutations
Bruno
"Bruno LOUIS" a écrit dans le message de news:
41b720f9$0$3437$Salut,
J'ai un début d'idée, je me suis amusé à développer un petit truc :
1°) Je copie la feuille dans un nouveau classeur (on peut facilement
adapter le code si on souhaite copier dans un classeur existant).
2°) J'efface tous les codes de module attachés à des feuilles (si le
classeur qui reçoit la nouvelle feuille contient déjà déjà des feuilles
ayant du code il se trouvera également effacé : dans ce cas je pourrais
adapter ma macro).
Il doit être possible de faire plus court (peut-être) ...
Bon courage,
Bruno
Sub Macro()
Dim O As Object
Sheets("Feuil2").Copy 'à adapater en fonction de l'existence
'ou non classeur
With ActiveWorkbook.VBProject
For Each O In .VBComponents
If O.Type = 4 Then
With O.CodeModule
If .CountOfLines > 0 Then .DeleteLines 1, .CountOfLines
End With
End If
Next
End With
End Sub
"Erreur 1004 : L'accès par programme au projet VB n'est pas fiable"
Merci Bruno ! Merci Clément !
C'est ce que je cherchais. Merci beaucoup beaucoup.
Mais j'ai un problème de mise en oeuvre (nul n'est parfait, pas même
microsoft... et même le code de Frédéric Sigonneau...).
Quand j'arrive sur :
With ActiveWorkbook.VBProject
....VBA plante. Premier message :
"Erreur 1004 : L'accès par programme au projet VB n'est pas fiable"
Je refais F8 pour exécuter à nouveau la ligne. Second message : La méthode
VBProject de ... a échoué.
Je me suis imaginé que je devrais peut-être commencer par donner un nom et
sauvegarder le classeur qui reçoit la copie. (C'est ça la naïveté ??) Je
fais et je place l'effacement des lignes de codes après.
Et là, mystère, mystère, il passe sur la ligne ci-dessus puis saute plus
loin dans la sub, passant gaillardement au dessus du end with et même d'un
end sub.
Au total, donc, ça ne marche pas pour l'instant. Je demeure avec les codes
de mes feuilles.
Je suis pourtant persuadé que ce que vous m'avez indiqué est la bonne
méthode, rapide et nette...
Je soumets donc ce pb à la sagacité des experts !
"Bruno LOUIS" <_BrunoLOUIS@free.fr> a écrit dans le message de news:
41b730e2$0$22176$8fcfb975@news.wanadoo.fr...
Autant pour moi, j'ai commis une erreur dans mon code, mieux vaut essayer
ce qui suit :
Sub Macro()
Dim O As Object
Sheets("Feuil2").Copy 'à adapater en fonction de l'existence
'ou non classeur
With ActiveWorkbook.VBProject
For Each O In .VBComponents
If O.Type <> 1 And O.Type <> 2 Then
With O.CodeModule
If .CountOfLines > 0 Then .DeleteLines 1, .CountOfLines
End With
End If
Next
End With
End Sub
Salutations
Bruno
"Bruno LOUIS" <_BrunoLOUIS@free.fr> a écrit dans le message de news:
41b720f9$0$3437$8fcfb975@news.wanadoo.fr...
Salut,
J'ai un début d'idée, je me suis amusé à développer un petit truc :
1°) Je copie la feuille dans un nouveau classeur (on peut facilement
adapter le code si on souhaite copier dans un classeur existant).
2°) J'efface tous les codes de module attachés à des feuilles (si le
classeur qui reçoit la nouvelle feuille contient déjà déjà des feuilles
ayant du code il se trouvera également effacé : dans ce cas je pourrais
adapter ma macro).
Il doit être possible de faire plus court (peut-être) ...
Bon courage,
Bruno
Sub Macro()
Dim O As Object
Sheets("Feuil2").Copy 'à adapater en fonction de l'existence
'ou non classeur
With ActiveWorkbook.VBProject
For Each O In .VBComponents
If O.Type = 4 Then
With O.CodeModule
If .CountOfLines > 0 Then .DeleteLines 1, .CountOfLines
End With
End If
Next
End With
End Sub
"Erreur 1004 : L'accès par programme au projet VB n'est pas fiable"
Merci Bruno ! Merci Clément !
C'est ce que je cherchais. Merci beaucoup beaucoup.
Mais j'ai un problème de mise en oeuvre (nul n'est parfait, pas même
microsoft... et même le code de Frédéric Sigonneau...).
Quand j'arrive sur :
With ActiveWorkbook.VBProject
....VBA plante. Premier message :
"Erreur 1004 : L'accès par programme au projet VB n'est pas fiable"
Je refais F8 pour exécuter à nouveau la ligne. Second message : La méthode
VBProject de ... a échoué.
Je me suis imaginé que je devrais peut-être commencer par donner un nom et
sauvegarder le classeur qui reçoit la copie. (C'est ça la naïveté ??) Je
fais et je place l'effacement des lignes de codes après.
Et là, mystère, mystère, il passe sur la ligne ci-dessus puis saute plus
loin dans la sub, passant gaillardement au dessus du end with et même d'un
end sub.
Au total, donc, ça ne marche pas pour l'instant. Je demeure avec les codes
de mes feuilles.
Je suis pourtant persuadé que ce que vous m'avez indiqué est la bonne
méthode, rapide et nette...
Je soumets donc ce pb à la sagacité des experts !
"Bruno LOUIS" a écrit dans le message de news:
41b730e2$0$22176$Autant pour moi, j'ai commis une erreur dans mon code, mieux vaut essayer
ce qui suit :
Sub Macro()
Dim O As Object
Sheets("Feuil2").Copy 'à adapater en fonction de l'existence
'ou non classeur
With ActiveWorkbook.VBProject
For Each O In .VBComponents
If O.Type <> 1 And O.Type <> 2 Then
With O.CodeModule
If .CountOfLines > 0 Then .DeleteLines 1, .CountOfLines
End With
End If
Next
End With
End Sub
Salutations
Bruno
"Bruno LOUIS" a écrit dans le message de news:
41b720f9$0$3437$Salut,
J'ai un début d'idée, je me suis amusé à développer un petit truc :
1°) Je copie la feuille dans un nouveau classeur (on peut facilement
adapter le code si on souhaite copier dans un classeur existant).
2°) J'efface tous les codes de module attachés à des feuilles (si le
classeur qui reçoit la nouvelle feuille contient déjà déjà des feuilles
ayant du code il se trouvera également effacé : dans ce cas je pourrais
adapter ma macro).
Il doit être possible de faire plus court (peut-être) ...
Bon courage,
Bruno
Sub Macro()
Dim O As Object
Sheets("Feuil2").Copy 'à adapater en fonction de l'existence
'ou non classeur
With ActiveWorkbook.VBProject
For Each O In .VBComponents
If O.Type = 4 Then
With O.CodeModule
If .CountOfLines > 0 Then .DeleteLines 1, .CountOfLines
End With
End If
Next
End With
End Sub
Bonsoir,"Erreur 1004 : L'accès par programme au projet VB n'est pas fiable"
C'est un problème de réglage de séurité par défaut (depuis Excel 2002). Il
faut cocher la case 'Faire confiance au projet Visual Basic' dans
OutilsOptions onglet Sécurité, bouton Sécurité des macros, onglet Sources
Fiables.
FS
---
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://frederic.sigonneau.free.fr
Si votre question sur Excel est urgente, évitez ma bal !Merci Bruno ! Merci Clément !
C'est ce que je cherchais. Merci beaucoup beaucoup.
Mais j'ai un problème de mise en oeuvre (nul n'est parfait, pas même
microsoft... et même le code de Frédéric Sigonneau...).
Quand j'arrive sur :
With ActiveWorkbook.VBProject
....VBA plante. Premier message :
"Erreur 1004 : L'accès par programme au projet VB n'est pas fiable"
Je refais F8 pour exécuter à nouveau la ligne. Second message : La
méthode VBProject de ... a échoué.
Je me suis imaginé que je devrais peut-être commencer par donner un nom
et sauvegarder le classeur qui reçoit la copie. (C'est ça la naïveté ??)
Je fais et je place l'effacement des lignes de codes après.
Et là, mystère, mystère, il passe sur la ligne ci-dessus puis saute plus
loin dans la sub, passant gaillardement au dessus du end with et même
d'un end sub.
Au total, donc, ça ne marche pas pour l'instant. Je demeure avec les
codes de mes feuilles.
Je suis pourtant persuadé que ce que vous m'avez indiqué est la bonne
méthode, rapide et nette...
Je soumets donc ce pb à la sagacité des experts !
"Bruno LOUIS" a écrit dans le message de news:
41b730e2$0$22176$Autant pour moi, j'ai commis une erreur dans mon code, mieux vaut essayer
ce qui suit :
Sub Macro()
Dim O As Object
Sheets("Feuil2").Copy 'à adapater en fonction de l'existence
'ou non classeur
With ActiveWorkbook.VBProject
For Each O In .VBComponents
If O.Type <> 1 And O.Type <> 2 Then
With O.CodeModule
If .CountOfLines > 0 Then .DeleteLines 1, .CountOfLines
End With
End If
Next
End With
End Sub
Salutations
Bruno
"Bruno LOUIS" a écrit dans le message de news:
41b720f9$0$3437$Salut,
J'ai un début d'idée, je me suis amusé à développer un petit truc :
1°) Je copie la feuille dans un nouveau classeur (on peut facilement
adapter le code si on souhaite copier dans un classeur existant).
2°) J'efface tous les codes de module attachés à des feuilles (si le
classeur qui reçoit la nouvelle feuille contient déjà déjà des feuilles
ayant du code il se trouvera également effacé : dans ce cas je pourrais
adapter ma macro).
Il doit être possible de faire plus court (peut-être) ...
Bon courage,
Bruno
Sub Macro()
Dim O As Object
Sheets("Feuil2").Copy 'à adapater en fonction de l'existence
'ou non classeur
With ActiveWorkbook.VBProject
For Each O In .VBComponents
If O.Type = 4 Then
With O.CodeModule
If .CountOfLines > 0 Then .DeleteLines 1, .CountOfLines
End With
End If
Next
End With
End Sub
Bonsoir,
"Erreur 1004 : L'accès par programme au projet VB n'est pas fiable"
C'est un problème de réglage de séurité par défaut (depuis Excel 2002). Il
faut cocher la case 'Faire confiance au projet Visual Basic' dans
OutilsOptions onglet Sécurité, bouton Sécurité des macros, onglet Sources
Fiables.
FS
---
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://frederic.sigonneau.free.fr
Si votre question sur Excel est urgente, évitez ma bal !
Merci Bruno ! Merci Clément !
C'est ce que je cherchais. Merci beaucoup beaucoup.
Mais j'ai un problème de mise en oeuvre (nul n'est parfait, pas même
microsoft... et même le code de Frédéric Sigonneau...).
Quand j'arrive sur :
With ActiveWorkbook.VBProject
....VBA plante. Premier message :
"Erreur 1004 : L'accès par programme au projet VB n'est pas fiable"
Je refais F8 pour exécuter à nouveau la ligne. Second message : La
méthode VBProject de ... a échoué.
Je me suis imaginé que je devrais peut-être commencer par donner un nom
et sauvegarder le classeur qui reçoit la copie. (C'est ça la naïveté ??)
Je fais et je place l'effacement des lignes de codes après.
Et là, mystère, mystère, il passe sur la ligne ci-dessus puis saute plus
loin dans la sub, passant gaillardement au dessus du end with et même
d'un end sub.
Au total, donc, ça ne marche pas pour l'instant. Je demeure avec les
codes de mes feuilles.
Je suis pourtant persuadé que ce que vous m'avez indiqué est la bonne
méthode, rapide et nette...
Je soumets donc ce pb à la sagacité des experts !
"Bruno LOUIS" <_BrunoLOUIS@free.fr> a écrit dans le message de news:
41b730e2$0$22176$8fcfb975@news.wanadoo.fr...
Autant pour moi, j'ai commis une erreur dans mon code, mieux vaut essayer
ce qui suit :
Sub Macro()
Dim O As Object
Sheets("Feuil2").Copy 'à adapater en fonction de l'existence
'ou non classeur
With ActiveWorkbook.VBProject
For Each O In .VBComponents
If O.Type <> 1 And O.Type <> 2 Then
With O.CodeModule
If .CountOfLines > 0 Then .DeleteLines 1, .CountOfLines
End With
End If
Next
End With
End Sub
Salutations
Bruno
"Bruno LOUIS" <_BrunoLOUIS@free.fr> a écrit dans le message de news:
41b720f9$0$3437$8fcfb975@news.wanadoo.fr...
Salut,
J'ai un début d'idée, je me suis amusé à développer un petit truc :
1°) Je copie la feuille dans un nouveau classeur (on peut facilement
adapter le code si on souhaite copier dans un classeur existant).
2°) J'efface tous les codes de module attachés à des feuilles (si le
classeur qui reçoit la nouvelle feuille contient déjà déjà des feuilles
ayant du code il se trouvera également effacé : dans ce cas je pourrais
adapter ma macro).
Il doit être possible de faire plus court (peut-être) ...
Bon courage,
Bruno
Sub Macro()
Dim O As Object
Sheets("Feuil2").Copy 'à adapater en fonction de l'existence
'ou non classeur
With ActiveWorkbook.VBProject
For Each O In .VBComponents
If O.Type = 4 Then
With O.CodeModule
If .CountOfLines > 0 Then .DeleteLines 1, .CountOfLines
End With
End If
Next
End With
End Sub
Bonsoir,"Erreur 1004 : L'accès par programme au projet VB n'est pas fiable"
C'est un problème de réglage de séurité par défaut (depuis Excel 2002). Il
faut cocher la case 'Faire confiance au projet Visual Basic' dans
OutilsOptions onglet Sécurité, bouton Sécurité des macros, onglet Sources
Fiables.
FS
---
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://frederic.sigonneau.free.fr
Si votre question sur Excel est urgente, évitez ma bal !Merci Bruno ! Merci Clément !
C'est ce que je cherchais. Merci beaucoup beaucoup.
Mais j'ai un problème de mise en oeuvre (nul n'est parfait, pas même
microsoft... et même le code de Frédéric Sigonneau...).
Quand j'arrive sur :
With ActiveWorkbook.VBProject
....VBA plante. Premier message :
"Erreur 1004 : L'accès par programme au projet VB n'est pas fiable"
Je refais F8 pour exécuter à nouveau la ligne. Second message : La
méthode VBProject de ... a échoué.
Je me suis imaginé que je devrais peut-être commencer par donner un nom
et sauvegarder le classeur qui reçoit la copie. (C'est ça la naïveté ??)
Je fais et je place l'effacement des lignes de codes après.
Et là, mystère, mystère, il passe sur la ligne ci-dessus puis saute plus
loin dans la sub, passant gaillardement au dessus du end with et même
d'un end sub.
Au total, donc, ça ne marche pas pour l'instant. Je demeure avec les
codes de mes feuilles.
Je suis pourtant persuadé que ce que vous m'avez indiqué est la bonne
méthode, rapide et nette...
Je soumets donc ce pb à la sagacité des experts !
"Bruno LOUIS" a écrit dans le message de news:
41b730e2$0$22176$Autant pour moi, j'ai commis une erreur dans mon code, mieux vaut essayer
ce qui suit :
Sub Macro()
Dim O As Object
Sheets("Feuil2").Copy 'à adapater en fonction de l'existence
'ou non classeur
With ActiveWorkbook.VBProject
For Each O In .VBComponents
If O.Type <> 1 And O.Type <> 2 Then
With O.CodeModule
If .CountOfLines > 0 Then .DeleteLines 1, .CountOfLines
End With
End If
Next
End With
End Sub
Salutations
Bruno
"Bruno LOUIS" a écrit dans le message de news:
41b720f9$0$3437$Salut,
J'ai un début d'idée, je me suis amusé à développer un petit truc :
1°) Je copie la feuille dans un nouveau classeur (on peut facilement
adapter le code si on souhaite copier dans un classeur existant).
2°) J'efface tous les codes de module attachés à des feuilles (si le
classeur qui reçoit la nouvelle feuille contient déjà déjà des feuilles
ayant du code il se trouvera également effacé : dans ce cas je pourrais
adapter ma macro).
Il doit être possible de faire plus court (peut-être) ...
Bon courage,
Bruno
Sub Macro()
Dim O As Object
Sheets("Feuil2").Copy 'à adapater en fonction de l'existence
'ou non classeur
With ActiveWorkbook.VBProject
For Each O In .VBComponents
If O.Type = 4 Then
With O.CodeModule
If .CountOfLines > 0 Then .DeleteLines 1, .CountOfLines
End With
End If
Next
End With
End Sub