Copie de Procédure : erreur quand Ligne avec "Sub"

Scoubi7 Messages postés 88 Date d'inscription vendredi 16 janvier 2004 Statut Membre Dernière intervention 22 février 2017 - 24 juil. 2010 à 04:31
Scoubi7 Messages postés 88 Date d'inscription vendredi 16 janvier 2004 Statut Membre Dernière intervention 22 février 2017 - 7 août 2010 à 05:47
Bonjour !

Ayant un grand nombre de Workbooks dans lesquels je souhaiterais remplacer leur code par un plus récent, je me suis fait la macro suivante (sous Excel 2000) :

Sub Remplacer_Procedure()
Module = "ThisWorkbook"___' Nom du Module à Remplacer ("ThisWorkbook" ou "Module#")
___________________'Copier dans "Module2" le texte de remplacement
For Each WKB In Workbooks
___If WKB.Name <> "Automatisation.xls" Then
______'Supprime le "Module"
______With Workbooks(WKB.Name).VBProject.VBComponents(Module).CodeModule
_________LigneDebut = .CountOfDeclarationLines
_________LigneFin = .countOfLines
_________If LigneFin <> 0 Then .deleteLines LigneDebut, LigneFin
______End With
______'Remplace Ligne par Ligne "Module" par "Module2"
______For Ligne = 1 To Workbooks("Automatisation.xls").VBProject.VBComponents("Module2").CodeModule.countOfLines
_________Texte = Workbooks("Automatisation.xls").VBProject.VBComponents("Module2").CodeModule.Lines(Ligne, 1)
_________Workbooks(WKB.Name).VBProject.VBComponents(Module).CodeModule.InsertLines Line:=Ligne, String:=Texte
______Next
___End If
Next WKB
End Sub

Le souci c'est que lors de la copie ligne par ligne, les lignes avec "Sub" provoquent une erreur !

Si vous pouviez m'aiguiller !?
Merci...

7 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
24 juil. 2010 à 08:48
tu as également possibilité d'utiliser du code placé dans un fichier distant (xla) et ainsi t'eviter ce genre de duplication

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
0
Scoubi7 Messages postés 88 Date d'inscription vendredi 16 janvier 2004 Statut Membre Dernière intervention 22 février 2017
24 juil. 2010 à 11:47
Merci pour ta réponse Renfield !

N'ayant accès que ce soir sur l'ordi où j'ai fait ma macro, peux-tu me confirmer que ce fichier *.xla pourra remplacer le contenu de "ThisWorkbook" (par exemple) et pas seulement être importé en module complémentaire ? Et si mes souvenirs sont bons, quand je fait exporter les fichiers sont *.cls et pas *.xla, n'est-ce pas gênant ?

Autrement (la nuit porte conseil), j'ai pensé traiter les procédures une par une à l'intérieur du module... c'est pas très propre mais si ça marche et que personne n'a d'autre solution à me proposer...
0
Scoubi7 Messages postés 88 Date d'inscription vendredi 16 janvier 2004 Statut Membre Dernière intervention 22 février 2017
24 juil. 2010 à 22:15
J'ai trouvé, je vais me servir de .ProcOfLine qui permet de délimiter les procédures !
0
Scoubi7 Messages postés 88 Date d'inscription vendredi 16 janvier 2004 Statut Membre Dernière intervention 22 février 2017
24 juil. 2010 à 23:52
Oups, j'ai parlé trop vite, j'ai la même erreur !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Scoubi7 Messages postés 88 Date d'inscription vendredi 16 janvier 2004 Statut Membre Dernière intervention 22 février 2017
25 juil. 2010 à 13:14
Je viens juste de voir qu'en fait mon Code marche très bien (quelle perte de temps), c'est juste que lors du remplacement des lignes dans les "ThisWorkbook" cela provoque une erreur lors du traitement du 2ème "Sub"...

Quelqu'un a-t-il une idée ?
0
Scoubi7 Messages postés 88 Date d'inscription vendredi 16 janvier 2004 Statut Membre Dernière intervention 22 février 2017
25 juil. 2010 à 13:17
Et pour info, j'ai le même souci en insérant le module sous forme d'un fichier *.txt (toujours uniquement dans les "ThisWorkbook")
0
Scoubi7 Messages postés 88 Date d'inscription vendredi 16 janvier 2004 Statut Membre Dernière intervention 22 février 2017
7 août 2010 à 05:47
Les pros du VBA sont-ils revenus avec le mois d'août ?
0
Rejoignez-nous