GNT sans publicité, site mobile, fonctionnalitées exclusives...

VBA - lancer une macro de la copie depuis le classeur original

Le
twinley
Bonsoir à tous

La dernière ligne de sauvenouveaubook fait une err 424 code requis

Le but de la manip :

fermer les fenêtres de code du VBE puis fermer le VBE d'un classeur
faire la copie conforme d'un classeur en changeant de nom
garder l'original ouvert
ouvrir la copie du classeur
les deux classeurs sont dans le même répertoire
lancer une macro de la copie depuis le classeur original
la macro videlesdonnees doit nettoyer les pages de la copie

du coup la macro videlesdonnes a le même nom dans les deux classeurs,
mais pas le même chemin. L'err se trouve bien dans la macro de la copie.


Sub sauvenouveaubook()
Dim strNewnamepath As String
Dim strNewnameshort As String

' ferme les CodePanes et le VBE avant la copie
Ferme_CodeWindow
' "C:\aapublic\2005carole.xls"
strNewnamepath = "C:\aapublic" & Sheets("clients").[A1] & "\" _
& Sheets("clients").[A2] & Sheets("clients").[A1] & ".xls"
' "2005carole.xls"
strNewnameshort = Sheets("clients").[A2] & Sheets("clients").[A1] _
& ".xls"
' crée une copie du Wbk dans le même rep
ActiveWorkbook.SaveCopyAs strNewnamepath
' ouvre la copie en même temps que l'original
Workbooks.Open Filename:=strNewnamepath
' lance depuis l'original la sub de la copie !videlesdonnes
xlApp.Run xlBook.Name & "'strNewnameshort'!videlesdonnees"
End Sub



Sub videlesdonnees()
Application.EnableEvents = False
' supprime les donneés dans les 13 feuilles Janv à RECAP
Application.ScreenUpdating = False
Dim oSheet As Worksheet
For Each oSheet In Worksheets
If oSheet.Name <> "clients" Then
oSheet.Activate
Range(Range("A1"),
Range("A1").SpecialCells(xlCellTypeLastCell)).ClearContents
ActiveWindow.FreezePanes = False
Range("A1").Select
End If
Next
Worksheets("clients").Activate
Application.EnableEvents = True
End Sub


Je ne trouve pas d'info sur
xlApp.Run xlBook.Name & "'strNewnameshort'!videlesdonnees"

Je vous remercie pour votre aide.

--
à+twinley
Lire les 10 réponses

Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
FxM
Le #1929908
Bonsoir,

Et si tu fais l'inverse, à savoir executer la macro depuis l'original et
la faire agir dans la copie ?

(non testé)

Sub sauvenouveaubook()
Dim strNewnamepath As String
Dim strNewnameshort As String
Dim awb As String '¬tiveworkbook.name

' ferme les CodePanes et le VBE avant la copie
Ferme_CodeWindow
' "C:aapublic2005carole.xls"
strNewnamepath = "C:aapublic" & Sheets("clients").[A1] & "" _
& Sheets("clients").[A2] & Sheets("clients").[A1] & ".xls"
' "2005carole.xls"
strNewnameshort = Sheets("clients").[A2] & Sheets("clients").[A1] _
& ".xls"

awb = activeworkbook.name

' crée une copie du Wbk dans le même rep
ActiveWorkbook.SaveCopyAs strNewnamepath

' ouvre la copie en même temps que l'original
Workbooks.Open Filename:=strNewnamepath

Workbooks(awb).activate
videlesdonnees(strnewnameshort)
End Sub

Sub videlesdonnees(fil)
Application.EnableEvents = False
' supprime les donneés dans les 13 feuilles Janv à RECAP
Application.ScreenUpdating = False
Dim oSheet As Worksheet
with workbooks(fil)
for Each oSheet In .Worksheets
If oSheet.Name <> "clients" Then
.oSheet.Activate
.activesheet.Range(Range("A1"), _
.activesheet.Range("A1"). _
SpecialCells(xlCellTypeLastCell)).ClearContents
' ActiveWindow.FreezePanes = False
.activesheet.Range("A1").Select
End If
Next oSheet
.Worksheets("clients").Activate
Application.EnableEvents = True
Application.ScreenUpdating = False
end with
End Sub

@+
FxM













Bonsoir à tous

La dernière ligne de sauvenouveaubook fait une err 424 code requis

Le but de la manip :

fermer les fenêtres de code du VBE puis fermer le VBE d'un classeur
faire la copie conforme d'un classeur en changeant de nom
garder l'original ouvert
ouvrir la copie du classeur
les deux classeurs sont dans le même répertoire
lancer une macro de la copie depuis le classeur original
la macro videlesdonnees doit nettoyer les pages de la copie

du coup la macro videlesdonnes a le même nom dans les deux classeurs,
mais pas le même chemin. L'err se trouve bien dans la macro de la copie.


Sub sauvenouveaubook()
Dim strNewnamepath As String
Dim strNewnameshort As String

' ferme les CodePanes et le VBE avant la copie
Ferme_CodeWindow
' "C:aapublic2005carole.xls"
strNewnamepath = "C:aapublic" & Sheets("clients").[A1] & "" _
& Sheets("clients").[A2] & Sheets("clients").[A1] & ".xls"
' "2005carole.xls"
strNewnameshort = Sheets("clients").[A2] & Sheets("clients").[A1] _
& ".xls"
' crée une copie du Wbk dans le même rep
ActiveWorkbook.SaveCopyAs strNewnamepath
' ouvre la copie en même temps que l'original
Workbooks.Open Filename:=strNewnamepath
' lance depuis l'original la sub de la copie !videlesdonnes
xlApp.Run xlBook.Name & "'strNewnameshort'!videlesdonnees"
End Sub



Sub videlesdonnees()
Application.EnableEvents = False
' supprime les donneés dans les 13 feuilles Janv à RECAP
Application.ScreenUpdating = False
Dim oSheet As Worksheet
For Each oSheet In Worksheets
If oSheet.Name <> "clients" Then
oSheet.Activate
Range(Range("A1"),
Range("A1").SpecialCells(xlCellTypeLastCell)).ClearContents
ActiveWindow.FreezePanes = False
Range("A1").Select
End If
Next
Worksheets("clients").Activate
Application.EnableEvents = True
End Sub


Je ne trouve pas d'info sur
xlApp.Run xlBook.Name & "'strNewnameshort'!videlesdonnees"

Je vous remercie pour votre aide.



twinley
Le #1929904
Bonsoir FxM

Je viens de trouver que c'est ma variable strNewnameshort qui met la
pagaille. Si j'écris le nom du fichier, je vais plus loin. C'est la
première chose.

Et je vais sérieusement prendre en considération ton idée car je tue les
données de l'original, la copie n'est pas modifiée. C'est l'inverse que
je souhaite.

Mais pas ce soir, j'ai les synapses tendues comme des baguettes...

Merci pour ton aide et bonne nuit

à+twinley

Bonsoir,

Et si tu fais l'inverse, à savoir executer la macro depuis l'original et
la faire agir dans la copie ?

(non testé)

Sub sauvenouveaubook()
Dim strNewnamepath As String
Dim strNewnameshort As String
Dim awb As String '¬tiveworkbook.name

' ferme les CodePanes et le VBE avant la copie
Ferme_CodeWindow
' "C:aapublic2005carole.xls"
strNewnamepath = "C:aapublic" & Sheets("clients").[A1] & "" _
& Sheets("clients").[A2] & Sheets("clients").[A1] & ".xls"
' "2005carole.xls"
strNewnameshort = Sheets("clients").[A2] & Sheets("clients").[A1] _
& ".xls"

awb = activeworkbook.name

' crée une copie du Wbk dans le même rep
ActiveWorkbook.SaveCopyAs strNewnamepath

' ouvre la copie en même temps que l'original
Workbooks.Open Filename:=strNewnamepath

Workbooks(awb).activate
videlesdonnees(strnewnameshort)
End Sub

Sub videlesdonnees(fil)
Application.EnableEvents = False
' supprime les donneés dans les 13 feuilles Janv à RECAP
Application.ScreenUpdating = False
Dim oSheet As Worksheet
with workbooks(fil)
for Each oSheet In .Worksheets
If oSheet.Name <> "clients" Then
.oSheet.Activate
.activesheet.Range(Range("A1"), _
.activesheet.Range("A1"). _
SpecialCells(xlCellTypeLastCell)).ClearContents
' ActiveWindow.FreezePanes = False
.activesheet.Range("A1").Select
End If
Next oSheet
.Worksheets("clients").Activate
Application.EnableEvents = True
Application.ScreenUpdating = False
end with
End Sub

@+
FxM














Bonsoir à tous

La dernière ligne de sauvenouveaubook fait une err 424 code requis

Le but de la manip :

fermer les fenêtres de code du VBE puis fermer le VBE d'un classeur
faire la copie conforme d'un classeur en changeant de nom
garder l'original ouvert
ouvrir la copie du classeur
les deux classeurs sont dans le même répertoire
lancer une macro de la copie depuis le classeur original
la macro videlesdonnees doit nettoyer les pages de la copie

du coup la macro videlesdonnes a le même nom dans les deux classeurs,
mais pas le même chemin. L'err se trouve bien dans la macro de la copie.


Sub sauvenouveaubook()
Dim strNewnamepath As String
Dim strNewnameshort As String

' ferme les CodePanes et le VBE avant la copie
Ferme_CodeWindow
' "C:aapublic2005carole.xls"
strNewnamepath = "C:aapublic" & Sheets("clients").[A1] & "" _
& Sheets("clients").[A2] & Sheets("clients").[A1] & ".xls"
' "2005carole.xls"
strNewnameshort = Sheets("clients").[A2] & Sheets("clients").[A1] _
& ".xls"
' crée une copie du Wbk dans le même rep
ActiveWorkbook.SaveCopyAs strNewnamepath
' ouvre la copie en même temps que l'original
Workbooks.Open Filename:=strNewnamepath
' lance depuis l'original la sub de la copie !videlesdonnes
xlApp.Run xlBook.Name & "'strNewnameshort'!videlesdonnees"
End Sub



Sub videlesdonnees()
Application.EnableEvents = False
' supprime les donneés dans les 13 feuilles Janv à RECAP
Application.ScreenUpdating = False
Dim oSheet As Worksheet
For Each oSheet In Worksheets
If oSheet.Name <> "clients" Then
oSheet.Activate
Range(Range("A1"),
Range("A1").SpecialCells(xlCellTypeLastCell)).ClearContents
ActiveWindow.FreezePanes = False
Range("A1").Select
End If
Next
Worksheets("clients").Activate
Application.EnableEvents = True
End Sub


Je ne trouve pas d'info sur
xlApp.Run xlBook.Name & "'strNewnameshort'!videlesdonnees"

Je vous remercie pour votre aide.





twinley
Le #1926101
Bonjour,

Désolé pour FxM de t'avoir planté là très tôt ce matin.
Merci pour tes modifs qui m'amènent progressivement vers la solution.
J'ai testé tes sub.
Je suis surpris par ta façon de passer une variable en ne tenant pas
compte du nom ni de sa déclarartion. VBA à l'air de si reconnaître.

Mais dans la deuxième sub videlesdonnees, ça passe pas sur le code :

with workbooks(fil)
for Each oSheet In .Worksheets
If oSheet.Name <> "clients" Then
.oSheet.Activate


Err d'execution 438 : propriété ou méthode non gérée par cet objet
sur le ligne if

pourtant fil contient bien le nom du classeur destination 2005carole.xls.
Mais j'ai l'impression qu'il ne trouve pas le chemin correct
workbook.sheet. ou quelque chose car la première feuille c'est clients
puis la deuxième c'est Janv.

Or If oSheet.Name ce qui indique qu'il a fait le test sur clients. Tant que je reste hors
de la boucle, c'est ok. Mais quand la condition l'amène dans la boucle,
l'objet n'est pas correct.
J'ai fait plusieurs variantes avec point ou pas devant oSheet, mais je
n'ai pas encore trouvé.

Merci pour ton aide.

à+twinley

Bonsoir,

Et si tu fais l'inverse, à savoir executer la macro depuis l'original et
la faire agir dans la copie ?

(non testé)

Sub sauvenouveaubook()
Dim strNewnamepath As String
Dim strNewnameshort As String
Dim awb As String '¬tiveworkbook.name

' ferme les CodePanes et le VBE avant la copie
Ferme_CodeWindow
' "C:aapublic2005carole.xls"
strNewnamepath = "C:aapublic" & Sheets("clients").[A1] & "" _
& Sheets("clients").[A2] & Sheets("clients").[A1] & ".xls"
' "2005carole.xls"
strNewnameshort = Sheets("clients").[A2] & Sheets("clients").[A1] _
& ".xls"

awb = activeworkbook.name

' crée une copie du Wbk dans le même rep
ActiveWorkbook.SaveCopyAs strNewnamepath

' ouvre la copie en même temps que l'original
Workbooks.Open Filename:=strNewnamepath

Workbooks(awb).activate
videlesdonnees(strnewnameshort)
End Sub

Sub videlesdonnees(fil)
Application.EnableEvents = False
' supprime les donneés dans les 13 feuilles Janv à RECAP
Application.ScreenUpdating = False
Dim oSheet As Worksheet
with workbooks(fil)
for Each oSheet In .Worksheets
If oSheet.Name <> "clients" Then
.oSheet.Activate
.activesheet.Range(Range("A1"), _
.activesheet.Range("A1"). _
SpecialCells(xlCellTypeLastCell)).ClearContents
' ActiveWindow.FreezePanes = False
.activesheet.Range("A1").Select
End If
Next oSheet
.Worksheets("clients").Activate
Application.EnableEvents = True
Application.ScreenUpdating = False
end with
End Sub

@+
FxM














Bonsoir à tous

La dernière ligne de sauvenouveaubook fait une err 424 code requis

Le but de la manip :

fermer les fenêtres de code du VBE puis fermer le VBE d'un classeur
faire la copie conforme d'un classeur en changeant de nom
garder l'original ouvert
ouvrir la copie du classeur
les deux classeurs sont dans le même répertoire
lancer une macro de la copie depuis le classeur original
la macro videlesdonnees doit nettoyer les pages de la copie

du coup la macro videlesdonnes a le même nom dans les deux classeurs,
mais pas le même chemin. L'err se trouve bien dans la macro de la copie.


Sub sauvenouveaubook()
Dim strNewnamepath As String
Dim strNewnameshort As String

' ferme les CodePanes et le VBE avant la copie
Ferme_CodeWindow
' "C:aapublic2005carole.xls"
strNewnamepath = "C:aapublic" & Sheets("clients").[A1] & "" _
& Sheets("clients").[A2] & Sheets("clients").[A1] & ".xls"
' "2005carole.xls"
strNewnameshort = Sheets("clients").[A2] & Sheets("clients").[A1] _
& ".xls"
' crée une copie du Wbk dans le même rep
ActiveWorkbook.SaveCopyAs strNewnamepath
' ouvre la copie en même temps que l'original
Workbooks.Open Filename:=strNewnamepath
' lance depuis l'original la sub de la copie !videlesdonnes
xlApp.Run xlBook.Name & "'strNewnameshort'!videlesdonnees"
End Sub



Sub videlesdonnees()
Application.EnableEvents = False
' supprime les donneés dans les 13 feuilles Janv à RECAP
Application.ScreenUpdating = False
Dim oSheet As Worksheet
For Each oSheet In Worksheets
If oSheet.Name <> "clients" Then
oSheet.Activate
Range(Range("A1"),
Range("A1").SpecialCells(xlCellTypeLastCell)).ClearContents
ActiveWindow.FreezePanes = False
Range("A1").Select
End If
Next
Worksheets("clients").Activate
Application.EnableEvents = True
End Sub


Je ne trouve pas d'info sur
xlApp.Run xlBook.Name & "'strNewnameshort'!videlesdonnees"

Je vous remercie pour votre aide.





FxM
Le #1925507
Bonsoir,

J'obtiens aussi des trucs incompréhensibles avec mon code telque "format
de données non valide"; ne manquait plus que cela. On l'oublie :o)

En repartant de ton code, j'obtiens quelque chose qui semble tenir la
route en remplacant
xlApp.Run xlBook.Name & "'strNewnameshort'!videlesdonnees"
par
Application.Run strNewnameshort & "!videlesdonnees"

Le lien qui va bien : http://cjoint.com/?bguJ6pCkHC

@+
FxM





Bonjour,

Désolé pour FxM de t'avoir planté là très tôt ce matin.
Merci pour tes modifs qui m'amènent progressivement vers la solution.
J'ai testé tes sub.
Je suis surpris par ta façon de passer une variable en ne tenant pas
compte du nom ni de sa déclarartion. VBA à l'air de si reconnaître.

Mais dans la deuxième sub videlesdonnees, ça passe pas sur le code :

with workbooks(fil)
for Each oSheet In .Worksheets
If oSheet.Name <> "clients" Then
.oSheet.Activate


Err d'execution 438 : propriété ou méthode non gérée par cet objet
sur le ligne if

pourtant fil contient bien le nom du classeur destination 2005carole.xls.
Mais j'ai l'impression qu'il ne trouve pas le chemin correct
workbook.sheet. ou quelque chose car la première feuille c'est clients
puis la deuxième c'est Janv.

Or If oSheet.Name ce qui indique qu'il a fait le test sur clients. Tant que je reste hors
de la boucle, c'est ok. Mais quand la condition l'amène dans la boucle,
l'objet n'est pas correct.
J'ai fait plusieurs variantes avec point ou pas devant oSheet, mais je
n'ai pas encore trouvé.

Merci pour ton aide.

à+twinley


Bonsoir,

Et si tu fais l'inverse, à savoir executer la macro depuis l'original
et la faire agir dans la copie ?

(non testé)

Sub sauvenouveaubook()
Dim strNewnamepath As String
Dim strNewnameshort As String
Dim awb As String '¬tiveworkbook.name

' ferme les CodePanes et le VBE avant la copie
Ferme_CodeWindow
' "C:aapublic2005carole.xls"
strNewnamepath = "C:aapublic" & Sheets("clients").[A1] & "" _
& Sheets("clients").[A2] & Sheets("clients").[A1] & ".xls"
' "2005carole.xls"
strNewnameshort = Sheets("clients").[A2] & Sheets("clients").[A1] _
& ".xls"

awb = activeworkbook.name

' crée une copie du Wbk dans le même rep
ActiveWorkbook.SaveCopyAs strNewnamepath

' ouvre la copie en même temps que l'original
Workbooks.Open Filename:=strNewnamepath

Workbooks(awb).activate
videlesdonnees(strnewnameshort)
End Sub

Sub videlesdonnees(fil)
Application.EnableEvents = False
' supprime les donneés dans les 13 feuilles Janv à RECAP
Application.ScreenUpdating = False
Dim oSheet As Worksheet
with workbooks(fil)
for Each oSheet In .Worksheets
If oSheet.Name <> "clients" Then
.oSheet.Activate
.activesheet.Range(Range("A1"), _
.activesheet.Range("A1"). _
SpecialCells(xlCellTypeLastCell)).ClearContents
' ActiveWindow.FreezePanes = False
.activesheet.Range("A1").Select
End If
Next oSheet
.Worksheets("clients").Activate
Application.EnableEvents = True
Application.ScreenUpdating = False
end with
End Sub

@+
FxM














Bonsoir à tous

La dernière ligne de sauvenouveaubook fait une err 424 code requis

Le but de la manip :

fermer les fenêtres de code du VBE puis fermer le VBE d'un classeur
faire la copie conforme d'un classeur en changeant de nom
garder l'original ouvert
ouvrir la copie du classeur
les deux classeurs sont dans le même répertoire
lancer une macro de la copie depuis le classeur original
la macro videlesdonnees doit nettoyer les pages de la copie

du coup la macro videlesdonnes a le même nom dans les deux classeurs,
mais pas le même chemin. L'err se trouve bien dans la macro de la copie.


Sub sauvenouveaubook()
Dim strNewnamepath As String
Dim strNewnameshort As String

' ferme les CodePanes et le VBE avant la copie
Ferme_CodeWindow
' "C:aapublic2005carole.xls"
strNewnamepath = "C:aapublic" & Sheets("clients").[A1] & "" _
& Sheets("clients").[A2] & Sheets("clients").[A1] & ".xls"
' "2005carole.xls"
strNewnameshort = Sheets("clients").[A2] & Sheets("clients").[A1] _
& ".xls"
' crée une copie du Wbk dans le même rep
ActiveWorkbook.SaveCopyAs strNewnamepath
' ouvre la copie en même temps que l'original
Workbooks.Open Filename:=strNewnamepath
' lance depuis l'original la sub de la copie !videlesdonnes
xlApp.Run xlBook.Name & "'strNewnameshort'!videlesdonnees"
End Sub



Sub videlesdonnees()
Application.EnableEvents = False
' supprime les donneés dans les 13 feuilles Janv à RECAP
Application.ScreenUpdating = False
Dim oSheet As Worksheet
For Each oSheet In Worksheets
If oSheet.Name <> "clients" Then
oSheet.Activate
Range(Range("A1"),
Range("A1").SpecialCells(xlCellTypeLastCell)).ClearContents
ActiveWindow.FreezePanes = False
Range("A1").Select
End If
Next
Worksheets("clients").Activate
Application.EnableEvents = True
End Sub


Je ne trouve pas d'info sur
xlApp.Run xlBook.Name & "'strNewnameshort'!videlesdonnees"

Je vous remercie pour votre aide.







syra
Le #1925467
Toc toc toc ...

Bonsoir,
etc... etc...



Bonsoir,

J'obtiens aussi des trucs incompréhensibles avec mon code telque "format
de données non valide"; ne manquait plus que cela. On l'oublie :o)

En repartant de ton code, j'obtiens quelque chose qui semble tenir la
route en remplacant
xlApp.Run xlBook.Name & "'strNewnameshort'!videlesdonnees"
par
Application.Run strNewnameshort & "!videlesdonnees"

Le lien qui va bien : http://cjoint.com/?bguJ6pCkHC

@+
FxM





Bonjour,

Désolé pour FxM de t'avoir planté là très tôt ce matin.
Merci pour tes modifs qui m'amènent progressivement vers la solution.
J'ai testé tes sub.
Je suis surpris par ta façon de passer une variable en ne tenant pas
compte du nom ni de sa déclarartion. VBA à l'air de si reconnaître.

Mais dans la deuxième sub videlesdonnees, ça passe pas sur le code :

with workbooks(fil)
for Each oSheet In .Worksheets
If oSheet.Name <> "clients" Then
.oSheet.Activate


Err d'execution 438 : propriété ou méthode non gérée par cet objet
sur le ligne if

pourtant fil contient bien le nom du classeur destination 2005carole.xls.
Mais j'ai l'impression qu'il ne trouve pas le chemin correct
workbook.sheet. ou quelque chose car la première feuille c'est clients
puis la deuxième c'est Janv.

Or If oSheet.Name ce qui indique qu'il a fait le test sur clients. Tant que je reste hors
de la boucle, c'est ok. Mais quand la condition l'amène dans la boucle,
l'objet n'est pas correct.
J'ai fait plusieurs variantes avec point ou pas devant oSheet, mais je
n'ai pas encore trouvé.

Merci pour ton aide.

à+twinley


Bonsoir,

Et si tu fais l'inverse, à savoir executer la macro depuis l'original
et la faire agir dans la copie ?

(non testé)

Sub sauvenouveaubook()
Dim strNewnamepath As String
Dim strNewnameshort As String
Dim awb As String '¬tiveworkbook.name

' ferme les CodePanes et le VBE avant la copie
Ferme_CodeWindow
' "C:aapublic2005carole.xls"
strNewnamepath = "C:aapublic" & Sheets("clients").[A1] & "" _
& Sheets("clients").[A2] & Sheets("clients").[A1] & ".xls"
' "2005carole.xls"
strNewnameshort = Sheets("clients").[A2] & Sheets("clients").[A1] _
& ".xls"

awb = activeworkbook.name

' crée une copie du Wbk dans le même rep
ActiveWorkbook.SaveCopyAs strNewnamepath

' ouvre la copie en même temps que l'original
Workbooks.Open Filename:=strNewnamepath

Workbooks(awb).activate
videlesdonnees(strnewnameshort)
End Sub

Sub videlesdonnees(fil)
Application.EnableEvents = False
' supprime les donneés dans les 13 feuilles Janv à RECAP
Application.ScreenUpdating = False
Dim oSheet As Worksheet
with workbooks(fil)
for Each oSheet In .Worksheets
If oSheet.Name <> "clients" Then
.oSheet.Activate
.activesheet.Range(Range("A1"), _
.activesheet.Range("A1"). _
SpecialCells(xlCellTypeLastCell)).ClearContents
' ActiveWindow.FreezePanes = False
.activesheet.Range("A1").Select
End If
Next oSheet
.Worksheets("clients").Activate
Application.EnableEvents = True
Application.ScreenUpdating = False
end with
End Sub

@+
FxM














Bonsoir à tous

La dernière ligne de sauvenouveaubook fait une err 424 code requis

Le but de la manip :

fermer les fenêtres de code du VBE puis fermer le VBE d'un classeur
faire la copie conforme d'un classeur en changeant de nom
garder l'original ouvert
ouvrir la copie du classeur
les deux classeurs sont dans le même répertoire
lancer une macro de la copie depuis le classeur original
la macro videlesdonnees doit nettoyer les pages de la copie

du coup la macro videlesdonnes a le même nom dans les deux classeurs,
mais pas le même chemin. L'err se trouve bien dans la macro de la copie.


Sub sauvenouveaubook()
Dim strNewnamepath As String
Dim strNewnameshort As String

' ferme les CodePanes et le VBE avant la copie
Ferme_CodeWindow
' "C:aapublic2005carole.xls"
strNewnamepath = "C:aapublic" & Sheets("clients").[A1] & "" _
& Sheets("clients").[A2] & Sheets("clients").[A1] & ".xls"
' "2005carole.xls"
strNewnameshort = Sheets("clients").[A2] & Sheets("clients").[A1] _
& ".xls"
' crée une copie du Wbk dans le même rep
ActiveWorkbook.SaveCopyAs strNewnamepath
' ouvre la copie en même temps que l'original
Workbooks.Open Filename:=strNewnamepath
' lance depuis l'original la sub de la copie !videlesdonnes
xlApp.Run xlBook.Name & "'strNewnameshort'!videlesdonnees"
End Sub



Sub videlesdonnees()
Application.EnableEvents = False
' supprime les donneés dans les 13 feuilles Janv à RECAP
Application.ScreenUpdating = False
Dim oSheet As Worksheet
For Each oSheet In Worksheets
If oSheet.Name <> "clients" Then
oSheet.Activate
Range(Range("A1"),
Range("A1").SpecialCells(xlCellTypeLastCell)).ClearContents
ActiveWindow.FreezePanes = False
Range("A1").Select
End If
Next
Worksheets("clients").Activate
Application.EnableEvents = True
End Sub


Je ne trouve pas d'info sur
xlApp.Run xlBook.Name & "'strNewnameshort'!videlesdonnees"

Je vous remercie pour votre aide.










Publicité
Suivre les réponses
Poster une réponse
Anonyme