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

Probleme pour conception d une macro

14 réponses
Avatar
BntMICHEL
Bonjour,

Voilà j ai actuellement un problème pour faire une macro
mon souhait était de prendre une feuille excel protégé et la copier sur une
autre feuille (cela marche en faisant copier coller) ensuite selectionner 3
colonnes et les copier pour les mettre dans une autre feuille puis ensuite
enregistrer cette feuille en format "prn"

j ai donc créé une nouvelle macro qui est celle ci

Sub test()
'
' test Macro
' Macro enregistrée le 21/08/2006 par sobotram
'

'
Cells.Select
Selection.Copy
Workbooks.Add
Application.Run Range("ScOnWindow")
ActiveSheet.Paste
Rows("1:7").Select
Range("BA7").Activate
Application.CutCopyMode = False
Selection.Delete Shift:=xlUp
Columns("AM:AR").Select
Selection.Copy
Workbooks.Add
Application.Run Range("ScOnWindow")
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveWorkbook.SaveAs Filename:= _
"\\Srvdata\users\Sobotram Trs et
Log\Informatique\pde\Classeur2.prn", _
FileFormat:=xlTextPrinter, CreateBackup:=False
ActiveWorkbook.Close
Application.Run Range("ScOnWindow")
ActiveWorkbook.Close
Application.Run Range("ScOnWindow")
End Sub

et là j ai une erreur a la ligne

Application.Run Range("ScOnWindow")

puis

ActiveSheet.Paste


Pouvez vous m aidez s il vous plait

Cordialement

BntMICHEL

10 réponses

1 2
Avatar
FxM
Bonjour,

La macro que tu donnes fait plus de choses que tu n'en décris et est un
mélange entre des actions vues par l'enregistreur de macros et des
choses tapées au clavier. Ainsi :

- il y a aussi suppression de ligne(s) par :
Rows("1:7").Select
Range("BA7").Activate
Application.CutCopyMode = False
Selection.Delete Shift:=xlUp


- ajout d'un classeur (et non d'une feuille)
Workbooks.Add


- une instruction qui plante :
Application.Run Range("ScOnWindow")


Application.Run "classeur.xls!toto" sert à démarrer la macro toto du
classeur 'classeur.xls'. Si le nom du classeur n'est pas précisé, Excel
considère le classeur actif.
Lorsque tu crées un classeur, il devient le classeur actif. Ensuite tu
tentes de lancer une macro d'après un nom qui n'existe pas dans ce
classeur puisque tout fraîchement créé.
Il conviendrait d'éclaircir ce que fait cette macro "ScOnWindow" qui est
activé à chaque création et sortie d'un classeur.

Sans garantie aucune quant au fonctionnement, et absolument non testée
(travailler sur des copies !!!) :

Sub test()
awb = ActiveWorkbook.Name
Workbooks.Add

'ce qui suit est sur une seule ligne!)
ActiveWorkbook.SaveAs Filename:="SrvdatausersSobotram Trs et
LogInformatiquepdeClasseur2.prn", FileFormat:=xlTextPrinter,
CreateBackup:úlse
'jusque-là

'ce qui suit est sur une seule ligne!)
Workbooks(awb).ActiveSheet.Columns("AM:AR").Copy ActiveSheet.Range("A1")
'jusque-là

Application.CutCopyMode = False
Rows("1:7").Delete Shift:=xlUp

'ce qui suit est sur une seule ligne!)
ActiveWorkbook.SaveAs Filename:="SrvdatausersSobotram Trs et
LogInformatiquepdeClasseur2.prn", FileFormat:=xlTextPrinter,
CreateBackup:úlse
'jusque-là

ActiveWorkbook.Close
End Sub


@+
FxM




Bonjour,

Voilà j ai actuellement un problème pour faire une macro
mon souhait était de prendre une feuille excel protégé et la copier sur une
autre feuille (cela marche en faisant copier coller) ensuite selectionner 3
colonnes et les copier pour les mettre dans une autre feuille puis ensuite
enregistrer cette feuille en format "prn"

j ai donc créé une nouvelle macro qui est celle ci

Sub test()
'
' test Macro
' Macro enregistrée le 21/08/2006 par sobotram
'

'
Cells.Select
Selection.Copy
Workbooks.Add
Application.Run Range("ScOnWindow")
ActiveSheet.Paste
Rows("1:7").Select
Range("BA7").Activate
Application.CutCopyMode = False
Selection.Delete Shift:=xlUp
Columns("AM:AR").Select
Selection.Copy
Workbooks.Add
Application.Run Range("ScOnWindow")
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveWorkbook.SaveAs Filename:= _
"SrvdatausersSobotram Trs et
LogInformatiquepdeClasseur2.prn", _
FileFormat:=xlTextPrinter, CreateBackup:úlse
ActiveWorkbook.Close
Application.Run Range("ScOnWindow")
ActiveWorkbook.Close
Application.Run Range("ScOnWindow")
End Sub

et là j ai une erreur a la ligne

Application.Run Range("ScOnWindow")

puis

ActiveSheet.Paste


Pouvez vous m aidez s il vous plait

Cordialement

BntMICHEL


Avatar
BntMICHEL
voici ce que je veux qu elle fasse

1 copier la feuille
2 ouvrir une feuille vierge
3 copie de la feuille
4 suppression des 7 premieres lignes
5 selectionner les colonnes A jusqu a U
6 copier cette selection
7 ouvrir une autre feuille vierge
8 coller la selection dans cette nouvelle feuille
9 enregistrer cette dernier feuille au format prn

Voici la description exact

Je vous remercie


Bonjour,

La macro que tu donnes fait plus de choses que tu n'en décris et est un
mélange entre des actions vues par l'enregistreur de macros et des
choses tapées au clavier. Ainsi :

- il y a aussi suppression de ligne(s) par :
Rows("1:7").Select
Range("BA7").Activate
Application.CutCopyMode = False
Selection.Delete Shift:=xlUp


- ajout d'un classeur (et non d'une feuille)
Workbooks.Add


- une instruction qui plante :
Application.Run Range("ScOnWindow")


Application.Run "classeur.xls!toto" sert à démarrer la macro toto du
classeur 'classeur.xls'. Si le nom du classeur n'est pas précisé, Excel
considère le classeur actif.
Lorsque tu crées un classeur, il devient le classeur actif. Ensuite tu
tentes de lancer une macro d'après un nom qui n'existe pas dans ce
classeur puisque tout fraîchement créé.
Il conviendrait d'éclaircir ce que fait cette macro "ScOnWindow" qui est
activé à chaque création et sortie d'un classeur.

Sans garantie aucune quant au fonctionnement, et absolument non testée
(travailler sur des copies !!!) :

Sub test()
awb = ActiveWorkbook.Name
Workbooks.Add

'ce qui suit est sur une seule ligne!)
ActiveWorkbook.SaveAs Filename:="SrvdatausersSobotram Trs et
LogInformatiquepdeClasseur2.prn", FileFormat:=xlTextPrinter,
CreateBackup:úlse
'jusque-là

'ce qui suit est sur une seule ligne!)
Workbooks(awb).ActiveSheet.Columns("AM:AR").Copy ActiveSheet.Range("A1")
'jusque-là

Application.CutCopyMode = False
Rows("1:7").Delete Shift:=xlUp

'ce qui suit est sur une seule ligne!)
ActiveWorkbook.SaveAs Filename:="SrvdatausersSobotram Trs et
LogInformatiquepdeClasseur2.prn", FileFormat:=xlTextPrinter,
CreateBackup:úlse
'jusque-là

ActiveWorkbook.Close
End Sub


@+
FxM




Bonjour,

Voilà j ai actuellement un problème pour faire une macro
mon souhait était de prendre une feuille excel protégé et la copier sur une
autre feuille (cela marche en faisant copier coller) ensuite selectionner 3
colonnes et les copier pour les mettre dans une autre feuille puis ensuite
enregistrer cette feuille en format "prn"

j ai donc créé une nouvelle macro qui est celle ci

Sub test()
'
' test Macro
' Macro enregistrée le 21/08/2006 par sobotram
'

'
Cells.Select
Selection.Copy
Workbooks.Add
Application.Run Range("ScOnWindow")
ActiveSheet.Paste
Rows("1:7").Select
Range("BA7").Activate
Application.CutCopyMode = False
Selection.Delete Shift:=xlUp
Columns("AM:AR").Select
Selection.Copy
Workbooks.Add
Application.Run Range("ScOnWindow")
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveWorkbook.SaveAs Filename:= _
"SrvdatausersSobotram Trs et
LogInformatiquepdeClasseur2.prn", _
FileFormat:=xlTextPrinter, CreateBackup:úlse
ActiveWorkbook.Close
Application.Run Range("ScOnWindow")
ActiveWorkbook.Close
Application.Run Range("ScOnWindow")
End Sub

et là j ai une erreur a la ligne

Application.Run Range("ScOnWindow")

puis

ActiveSheet.Paste


Pouvez vous m aidez s il vous plait

Cordialement

BntMICHEL





Avatar
FxM
et voici ce à quoi je suis arrivé avec l'enregistreur de macros :o)
Teste et dis-nous si c'est OK.

@+
FxM


Sub test2()
'1 copier la feuille
'2 ouvrir une feuille vierge
'3 copie de la feuille

'-> copie de la feuille active en fin de classeur, sous le nom "zaza1"
ActiveSheet.Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = "zaza1"

'4 suppression des 7 premieres lignes
Range("A1:A7").EntireRow.Delete

'5 selectionner les colonnes A jusqu a U
'6 copier cette selection
'7 ouvrir une autre feuille vierge
'8 coller la selection dans cette nouvelle feuille
'-> création de la feuille "zaza2" et copie des colonnes
Sheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Name = "zaza2"
'attention, ce qui suit est sur une seule ligne !
Sheets("zaza1").Range("A1:U1").EntireColumn.Copy ActiveSheet.Range("A1")
'jusque-là

'9 enregistrer cette dernier feuille au format prn
'attention, ce qui suit est sur une seule ligne !
ActiveSheet.SaveAs Filename:="SrvdatausersSobotram Trs et
LogInformatiquepdeClasseur2.prn", FileFormat:=xlTextPrinter,
CreateBackup:úlse
'jusque-là

'ensuite il faut enlever les feuilles en trop
' Application.DisplayAlerts = False
' ActiveSheet.Delete
' Sheets("zaza1").Delete
' Application.DisplayAlerts = True

'voire fermer le classeur dans le sauvegarder
'activeworkbook.close false (car il s'appelle classeur2.prn !

End Sub







voici ce que je veux qu elle fasse

1 copier la feuille
2 ouvrir une feuille vierge
3 copie de la feuille
4 suppression des 7 premieres lignes
5 selectionner les colonnes A jusqu a U
6 copier cette selection
7 ouvrir une autre feuille vierge
8 coller la selection dans cette nouvelle feuille
9 enregistrer cette dernier feuille au format prn

Voici la description exact

Je vous remercie


Bonjour,

La macro que tu donnes fait plus de choses que tu n'en décris et est un
mélange entre des actions vues par l'enregistreur de macros et des
choses tapées au clavier. Ainsi :

- il y a aussi suppression de ligne(s) par :
Rows("1:7").Select
Range("BA7").Activate
Application.CutCopyMode = False
Selection.Delete Shift:=xlUp


- ajout d'un classeur (et non d'une feuille)
Workbooks.Add


- une instruction qui plante :
Application.Run Range("ScOnWindow")


Application.Run "classeur.xls!toto" sert à démarrer la macro toto du
classeur 'classeur.xls'. Si le nom du classeur n'est pas précisé, Excel
considère le classeur actif.
Lorsque tu crées un classeur, il devient le classeur actif. Ensuite tu
tentes de lancer une macro d'après un nom qui n'existe pas dans ce
classeur puisque tout fraîchement créé.
Il conviendrait d'éclaircir ce que fait cette macro "ScOnWindow" qui est
activé à chaque création et sortie d'un classeur.

Sans garantie aucune quant au fonctionnement, et absolument non testée
(travailler sur des copies !!!) :

Sub test()
awb = ActiveWorkbook.Name
Workbooks.Add

'ce qui suit est sur une seule ligne!)
ActiveWorkbook.SaveAs Filename:="SrvdatausersSobotram Trs et
LogInformatiquepdeClasseur2.prn", FileFormat:=xlTextPrinter,
CreateBackup:úlse
'jusque-là

'ce qui suit est sur une seule ligne!)
Workbooks(awb).ActiveSheet.Columns("AM:AR").Copy ActiveSheet.Range("A1")
'jusque-là

Application.CutCopyMode = False
Rows("1:7").Delete Shift:=xlUp

'ce qui suit est sur une seule ligne!)
ActiveWorkbook.SaveAs Filename:="SrvdatausersSobotram Trs et
LogInformatiquepdeClasseur2.prn", FileFormat:=xlTextPrinter,
CreateBackup:úlse
'jusque-là

ActiveWorkbook.Close
End Sub


@+
FxM




Bonjour,

Voilà j ai actuellement un problème pour faire une macro
mon souhait était de prendre une feuille excel protégé et la copier sur une
autre feuille (cela marche en faisant copier coller) ensuite selectionner 3
colonnes et les copier pour les mettre dans une autre feuille puis ensuite
enregistrer cette feuille en format "prn"

j ai donc créé une nouvelle macro qui est celle ci

Sub test()
'
' test Macro
' Macro enregistrée le 21/08/2006 par sobotram
'

'
Cells.Select
Selection.Copy
Workbooks.Add
Application.Run Range("ScOnWindow")
ActiveSheet.Paste
Rows("1:7").Select
Range("BA7").Activate
Application.CutCopyMode = False
Selection.Delete Shift:=xlUp
Columns("AM:AR").Select
Selection.Copy
Workbooks.Add
Application.Run Range("ScOnWindow")
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveWorkbook.SaveAs Filename:= _
"SrvdatausersSobotram Trs et
LogInformatiquepdeClasseur2.prn", _
FileFormat:=xlTextPrinter, CreateBackup:úlse
ActiveWorkbook.Close
Application.Run Range("ScOnWindow")
ActiveWorkbook.Close
Application.Run Range("ScOnWindow")
End Sub

et là j ai une erreur a la ligne

Application.Run Range("ScOnWindow")

puis

ActiveSheet.Paste


Pouvez vous m aidez s il vous plait

Cordialement

BntMICHEL






Avatar
BntMICHEL
Range("A1:A7").EntireRow.Delete
erreur 1004 à cette ligne

"impossible de renommer une feuille comme une autre feuille, une bibliotèque
d objets referencée ou un classeur référencé par visual basic."


et voici ce à quoi je suis arrivé avec l'enregistreur de macros :o)
Teste et dis-nous si c'est OK.

@+
FxM


Sub test2()
'1 copier la feuille
'2 ouvrir une feuille vierge
'3 copie de la feuille

'-> copie de la feuille active en fin de classeur, sous le nom "zaza1"
ActiveSheet.Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = "zaza1"

'4 suppression des 7 premieres lignes
Range("A1:A7").EntireRow.Delete

'5 selectionner les colonnes A jusqu a U
'6 copier cette selection
'7 ouvrir une autre feuille vierge
'8 coller la selection dans cette nouvelle feuille
'-> création de la feuille "zaza2" et copie des colonnes
Sheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Name = "zaza2"
'attention, ce qui suit est sur une seule ligne !
Sheets("zaza1").Range("A1:U1").EntireColumn.Copy ActiveSheet.Range("A1")
'jusque-là

'9 enregistrer cette dernier feuille au format prn
'attention, ce qui suit est sur une seule ligne !
ActiveSheet.SaveAs Filename:="SrvdatausersSobotram Trs et
LogInformatiquepdeClasseur2.prn", FileFormat:=xlTextPrinter,
CreateBackup:úlse
'jusque-là

'ensuite il faut enlever les feuilles en trop
' Application.DisplayAlerts = False
' ActiveSheet.Delete
' Sheets("zaza1").Delete
' Application.DisplayAlerts = True

'voire fermer le classeur dans le sauvegarder
'activeworkbook.close false (car il s'appelle classeur2.prn !

End Sub







voici ce que je veux qu elle fasse

1 copier la feuille
2 ouvrir une feuille vierge
3 copie de la feuille
4 suppression des 7 premieres lignes
5 selectionner les colonnes A jusqu a U
6 copier cette selection
7 ouvrir une autre feuille vierge
8 coller la selection dans cette nouvelle feuille
9 enregistrer cette dernier feuille au format prn

Voici la description exact

Je vous remercie


Bonjour,

La macro que tu donnes fait plus de choses que tu n'en décris et est un
mélange entre des actions vues par l'enregistreur de macros et des
choses tapées au clavier. Ainsi :

- il y a aussi suppression de ligne(s) par :
Rows("1:7").Select
Range("BA7").Activate
Application.CutCopyMode = False
Selection.Delete Shift:=xlUp


- ajout d'un classeur (et non d'une feuille)
Workbooks.Add


- une instruction qui plante :
Application.Run Range("ScOnWindow")


Application.Run "classeur.xls!toto" sert à démarrer la macro toto du
classeur 'classeur.xls'. Si le nom du classeur n'est pas précisé, Excel
considère le classeur actif.
Lorsque tu crées un classeur, il devient le classeur actif. Ensuite tu
tentes de lancer une macro d'après un nom qui n'existe pas dans ce
classeur puisque tout fraîchement créé.
Il conviendrait d'éclaircir ce que fait cette macro "ScOnWindow" qui est
activé à chaque création et sortie d'un classeur.

Sans garantie aucune quant au fonctionnement, et absolument non testée
(travailler sur des copies !!!) :

Sub test()
awb = ActiveWorkbook.Name
Workbooks.Add

'ce qui suit est sur une seule ligne!)
ActiveWorkbook.SaveAs Filename:="SrvdatausersSobotram Trs et
LogInformatiquepdeClasseur2.prn", FileFormat:=xlTextPrinter,
CreateBackup:úlse
'jusque-là

'ce qui suit est sur une seule ligne!)
Workbooks(awb).ActiveSheet.Columns("AM:AR").Copy ActiveSheet.Range("A1")
'jusque-là

Application.CutCopyMode = False
Rows("1:7").Delete Shift:=xlUp

'ce qui suit est sur une seule ligne!)
ActiveWorkbook.SaveAs Filename:="SrvdatausersSobotram Trs et
LogInformatiquepdeClasseur2.prn", FileFormat:=xlTextPrinter,
CreateBackup:úlse
'jusque-là

ActiveWorkbook.Close
End Sub


@+
FxM




Bonjour,

Voilà j ai actuellement un problème pour faire une macro
mon souhait était de prendre une feuille excel protégé et la copier sur une
autre feuille (cela marche en faisant copier coller) ensuite selectionner 3
colonnes et les copier pour les mettre dans une autre feuille puis ensuite
enregistrer cette feuille en format "prn"

j ai donc créé une nouvelle macro qui est celle ci

Sub test()
'
' test Macro
' Macro enregistrée le 21/08/2006 par sobotram
'

'
Cells.Select
Selection.Copy
Workbooks.Add
Application.Run Range("ScOnWindow")
ActiveSheet.Paste
Rows("1:7").Select
Range("BA7").Activate
Application.CutCopyMode = False
Selection.Delete Shift:=xlUp
Columns("AM:AR").Select
Selection.Copy
Workbooks.Add
Application.Run Range("ScOnWindow")
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveWorkbook.SaveAs Filename:= _
"SrvdatausersSobotram Trs et
LogInformatiquepdeClasseur2.prn", _
FileFormat:=xlTextPrinter, CreateBackup:úlse
ActiveWorkbook.Close
Application.Run Range("ScOnWindow")
ActiveWorkbook.Close
Application.Run Range("ScOnWindow")
End Sub

et là j ai une erreur a la ligne

Application.Run Range("ScOnWindow")

puis

ActiveSheet.Paste


Pouvez vous m aidez s il vous plait

Cordialement

BntMICHEL









Avatar
BntMICHEL
oups dsl c'est pas la bonne erreur

en fait il faut que je ouvre non pas une feuille mais un classeur a chaque
fois car je veux au départ copier une feuille dans un classeur protégé.



et voici ce à quoi je suis arrivé avec l'enregistreur de macros :o)
Teste et dis-nous si c'est OK.

@+
FxM


Sub test2()
'1 copier la feuille
'2 ouvrir une feuille vierge
'3 copie de la feuille

'-> copie de la feuille active en fin de classeur, sous le nom "zaza1"
ActiveSheet.Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = "zaza1"

'4 suppression des 7 premieres lignes
Range("A1:A7").EntireRow.Delete

'5 selectionner les colonnes A jusqu a U
'6 copier cette selection
'7 ouvrir une autre feuille vierge
'8 coller la selection dans cette nouvelle feuille
'-> création de la feuille "zaza2" et copie des colonnes
Sheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Name = "zaza2"
'attention, ce qui suit est sur une seule ligne !
Sheets("zaza1").Range("A1:U1").EntireColumn.Copy ActiveSheet.Range("A1")
'jusque-là

'9 enregistrer cette dernier feuille au format prn
'attention, ce qui suit est sur une seule ligne !
ActiveSheet.SaveAs Filename:="SrvdatausersSobotram Trs et
LogInformatiquepdeClasseur2.prn", FileFormat:=xlTextPrinter,
CreateBackup:úlse
'jusque-là

'ensuite il faut enlever les feuilles en trop
' Application.DisplayAlerts = False
' ActiveSheet.Delete
' Sheets("zaza1").Delete
' Application.DisplayAlerts = True

'voire fermer le classeur dans le sauvegarder
'activeworkbook.close false (car il s'appelle classeur2.prn !

End Sub







voici ce que je veux qu elle fasse

1 copier la feuille
2 ouvrir une feuille vierge
3 copie de la feuille
4 suppression des 7 premieres lignes
5 selectionner les colonnes A jusqu a U
6 copier cette selection
7 ouvrir une autre feuille vierge
8 coller la selection dans cette nouvelle feuille
9 enregistrer cette dernier feuille au format prn

Voici la description exact

Je vous remercie


Bonjour,

La macro que tu donnes fait plus de choses que tu n'en décris et est un
mélange entre des actions vues par l'enregistreur de macros et des
choses tapées au clavier. Ainsi :

- il y a aussi suppression de ligne(s) par :
Rows("1:7").Select
Range("BA7").Activate
Application.CutCopyMode = False
Selection.Delete Shift:=xlUp


- ajout d'un classeur (et non d'une feuille)
Workbooks.Add


- une instruction qui plante :
Application.Run Range("ScOnWindow")


Application.Run "classeur.xls!toto" sert à démarrer la macro toto du
classeur 'classeur.xls'. Si le nom du classeur n'est pas précisé, Excel
considère le classeur actif.
Lorsque tu crées un classeur, il devient le classeur actif. Ensuite tu
tentes de lancer une macro d'après un nom qui n'existe pas dans ce
classeur puisque tout fraîchement créé.
Il conviendrait d'éclaircir ce que fait cette macro "ScOnWindow" qui est
activé à chaque création et sortie d'un classeur.

Sans garantie aucune quant au fonctionnement, et absolument non testée
(travailler sur des copies !!!) :

Sub test()
awb = ActiveWorkbook.Name
Workbooks.Add

'ce qui suit est sur une seule ligne!)
ActiveWorkbook.SaveAs Filename:="SrvdatausersSobotram Trs et
LogInformatiquepdeClasseur2.prn", FileFormat:=xlTextPrinter,
CreateBackup:úlse
'jusque-là

'ce qui suit est sur une seule ligne!)
Workbooks(awb).ActiveSheet.Columns("AM:AR").Copy ActiveSheet.Range("A1")
'jusque-là

Application.CutCopyMode = False
Rows("1:7").Delete Shift:=xlUp

'ce qui suit est sur une seule ligne!)
ActiveWorkbook.SaveAs Filename:="SrvdatausersSobotram Trs et
LogInformatiquepdeClasseur2.prn", FileFormat:=xlTextPrinter,
CreateBackup:úlse
'jusque-là

ActiveWorkbook.Close
End Sub


@+
FxM




Bonjour,

Voilà j ai actuellement un problème pour faire une macro
mon souhait était de prendre une feuille excel protégé et la copier sur une
autre feuille (cela marche en faisant copier coller) ensuite selectionner 3
colonnes et les copier pour les mettre dans une autre feuille puis ensuite
enregistrer cette feuille en format "prn"

j ai donc créé une nouvelle macro qui est celle ci

Sub test()
'
' test Macro
' Macro enregistrée le 21/08/2006 par sobotram
'

'
Cells.Select
Selection.Copy
Workbooks.Add
Application.Run Range("ScOnWindow")
ActiveSheet.Paste
Rows("1:7").Select
Range("BA7").Activate
Application.CutCopyMode = False
Selection.Delete Shift:=xlUp
Columns("AM:AR").Select
Selection.Copy
Workbooks.Add
Application.Run Range("ScOnWindow")
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveWorkbook.SaveAs Filename:= _
"SrvdatausersSobotram Trs et
LogInformatiquepdeClasseur2.prn", _
FileFormat:=xlTextPrinter, CreateBackup:úlse
ActiveWorkbook.Close
Application.Run Range("ScOnWindow")
ActiveWorkbook.Close
Application.Run Range("ScOnWindow")
End Sub

et là j ai une erreur a la ligne

Application.Run Range("ScOnWindow")

puis

ActiveSheet.Paste


Pouvez vous m aidez s il vous plait

Cordialement

BntMICHEL









Avatar
FxM
Toujours aussi peu testé :o)
@+
FxM


Sub test3()
'nom du fichier actuel
awb = ActiveWorkbook.Name

'ajouter un classeur
Workbooks.Add

'y copier les colonnes AM:AR de la feuille active
'du classeur actuel
'ce qui est suit est sur une seule ligne
Workbooks(awb).ActiveSheet.Columns("AM:AR").Copy ActiveSheet.Range("A1")
'jusque-là

'effacer les lignes 1 à 7
Rows("1:7").Delete Shift:=xlUp

'sauvegarder sous ...
'ce qui suit sur une ligne
'essayer aussi .savecopyas au leiu de .saveas
ActiveWorkbook.SaveAs Filename:="SrvdatausersSobotram Trs et
LogInformatiquepdeClasseur2.prn", FileFormat:=xlTextPrinter,
CreateBackup:úlse
'jusque-là

'fermer le nouveau classeur sans sauvegarder
'!!! Si savecopyas, enlever la commande à suivre
ActiveWorkbook.Close

End Sub




oups dsl c'est pas la bonne erreur

en fait il faut que je ouvre non pas une feuille mais un classeur a chaque
fois car je veux au départ copier une feuille dans un classeur protégé.



et voici ce à quoi je suis arrivé avec l'enregistreur de macros :o)
Teste et dis-nous si c'est OK.

@+
FxM


Sub test2()
'1 copier la feuille
'2 ouvrir une feuille vierge
'3 copie de la feuille

'-> copie de la feuille active en fin de classeur, sous le nom "zaza1"
ActiveSheet.Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = "zaza1"

'4 suppression des 7 premieres lignes
Range("A1:A7").EntireRow.Delete

'5 selectionner les colonnes A jusqu a U
'6 copier cette selection
'7 ouvrir une autre feuille vierge
'8 coller la selection dans cette nouvelle feuille
'-> création de la feuille "zaza2" et copie des colonnes
Sheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Name = "zaza2"
'attention, ce qui suit est sur une seule ligne !
Sheets("zaza1").Range("A1:U1").EntireColumn.Copy ActiveSheet.Range("A1")
'jusque-là

'9 enregistrer cette dernier feuille au format prn
'attention, ce qui suit est sur une seule ligne !
ActiveSheet.SaveAs Filename:="SrvdatausersSobotram Trs et
LogInformatiquepdeClasseur2.prn", FileFormat:=xlTextPrinter,
CreateBackup:úlse
'jusque-là

'ensuite il faut enlever les feuilles en trop
' Application.DisplayAlerts = False
' ActiveSheet.Delete
' Sheets("zaza1").Delete
' Application.DisplayAlerts = True

'voire fermer le classeur dans le sauvegarder
'activeworkbook.close false (car il s'appelle classeur2.prn !

End Sub







voici ce que je veux qu elle fasse

1 copier la feuille
2 ouvrir une feuille vierge
3 copie de la feuille
4 suppression des 7 premieres lignes
5 selectionner les colonnes A jusqu a U
6 copier cette selection
7 ouvrir une autre feuille vierge
8 coller la selection dans cette nouvelle feuille
9 enregistrer cette dernier feuille au format prn

Voici la description exact

Je vous remercie


Bonjour,

La macro que tu donnes fait plus de choses que tu n'en décris et est un
mélange entre des actions vues par l'enregistreur de macros et des
choses tapées au clavier. Ainsi :

- il y a aussi suppression de ligne(s) par :
Rows("1:7").Select
Range("BA7").Activate
Application.CutCopyMode = False
Selection.Delete Shift:=xlUp


- ajout d'un classeur (et non d'une feuille)
Workbooks.Add


- une instruction qui plante :
Application.Run Range("ScOnWindow")


Application.Run "classeur.xls!toto" sert à démarrer la macro toto du
classeur 'classeur.xls'. Si le nom du classeur n'est pas précisé, Excel
considère le classeur actif.
Lorsque tu crées un classeur, il devient le classeur actif. Ensuite tu
tentes de lancer une macro d'après un nom qui n'existe pas dans ce
classeur puisque tout fraîchement créé.
Il conviendrait d'éclaircir ce que fait cette macro "ScOnWindow" qui est
activé à chaque création et sortie d'un classeur.

Sans garantie aucune quant au fonctionnement, et absolument non testée
(travailler sur des copies !!!) :

Sub test()
awb = ActiveWorkbook.Name
Workbooks.Add

'ce qui suit est sur une seule ligne!)
ActiveWorkbook.SaveAs Filename:="SrvdatausersSobotram Trs et
LogInformatiquepdeClasseur2.prn", FileFormat:=xlTextPrinter,
CreateBackup:úlse
'jusque-là

'ce qui suit est sur une seule ligne!)
Workbooks(awb).ActiveSheet.Columns("AM:AR").Copy ActiveSheet.Range("A1")
'jusque-là

Application.CutCopyMode = False
Rows("1:7").Delete Shift:=xlUp

'ce qui suit est sur une seule ligne!)
ActiveWorkbook.SaveAs Filename:="SrvdatausersSobotram Trs et
LogInformatiquepdeClasseur2.prn", FileFormat:=xlTextPrinter,
CreateBackup:úlse
'jusque-là

ActiveWorkbook.Close
End Sub


@+
FxM




Bonjour,

Voilà j ai actuellement un problème pour faire une macro
mon souhait était de prendre une feuille excel protégé et la copier sur une
autre feuille (cela marche en faisant copier coller) ensuite selectionner 3
colonnes et les copier pour les mettre dans une autre feuille puis ensuite
enregistrer cette feuille en format "prn"

j ai donc créé une nouvelle macro qui est celle ci

Sub test()
'
' test Macro
' Macro enregistrée le 21/08/2006 par sobotram
'

'
Cells.Select
Selection.Copy
Workbooks.Add
Application.Run Range("ScOnWindow")
ActiveSheet.Paste
Rows("1:7").Select
Range("BA7").Activate
Application.CutCopyMode = False
Selection.Delete Shift:=xlUp
Columns("AM:AR").Select
Selection.Copy
Workbooks.Add
Application.Run Range("ScOnWindow")
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveWorkbook.SaveAs Filename:= _
"SrvdatausersSobotram Trs et
LogInformatiquepdeClasseur2.prn", _
FileFormat:=xlTextPrinter, CreateBackup:úlse
ActiveWorkbook.Close
Application.Run Range("ScOnWindow")
ActiveWorkbook.Close
Application.Run Range("ScOnWindow")
End Sub

et là j ai une erreur a la ligne

Application.Run Range("ScOnWindow")

puis

ActiveSheet.Paste


Pouvez vous m aidez s il vous plait

Cordialement

BntMICHEL










Avatar
BntMICHEL
j ai une erreur la methode copy de la classe Range a échoué

Workbooks(awb).ActiveSheet.Columns("AM:AR").Copy ActiveSheet.Range("A1")



Toujours aussi peu testé :o)
@+
FxM


Sub test3()
'nom du fichier actuel
awb = ActiveWorkbook.Name

'ajouter un classeur
Workbooks.Add

'y copier les colonnes AM:AR de la feuille active
'du classeur actuel
'ce qui est suit est sur une seule ligne
Workbooks(awb).ActiveSheet.Columns("AM:AR").Copy ActiveSheet.Range("A1")
'jusque-là

'effacer les lignes 1 à 7
Rows("1:7").Delete Shift:=xlUp

'sauvegarder sous ...
'ce qui suit sur une ligne
'essayer aussi .savecopyas au leiu de .saveas
ActiveWorkbook.SaveAs Filename:="SrvdatausersSobotram Trs et
LogInformatiquepdeClasseur2.prn", FileFormat:=xlTextPrinter,
CreateBackup:úlse
'jusque-là

'fermer le nouveau classeur sans sauvegarder
'!!! Si savecopyas, enlever la commande à suivre
ActiveWorkbook.Close

End Sub




oups dsl c'est pas la bonne erreur

en fait il faut que je ouvre non pas une feuille mais un classeur a chaque
fois car je veux au départ copier une feuille dans un classeur protégé.



et voici ce à quoi je suis arrivé avec l'enregistreur de macros :o)
Teste et dis-nous si c'est OK.

@+
FxM


Sub test2()
'1 copier la feuille
'2 ouvrir une feuille vierge
'3 copie de la feuille

'-> copie de la feuille active en fin de classeur, sous le nom "zaza1"
ActiveSheet.Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = "zaza1"

'4 suppression des 7 premieres lignes
Range("A1:A7").EntireRow.Delete

'5 selectionner les colonnes A jusqu a U
'6 copier cette selection
'7 ouvrir une autre feuille vierge
'8 coller la selection dans cette nouvelle feuille
'-> création de la feuille "zaza2" et copie des colonnes
Sheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Name = "zaza2"
'attention, ce qui suit est sur une seule ligne !
Sheets("zaza1").Range("A1:U1").EntireColumn.Copy ActiveSheet.Range("A1")
'jusque-là

'9 enregistrer cette dernier feuille au format prn
'attention, ce qui suit est sur une seule ligne !
ActiveSheet.SaveAs Filename:="SrvdatausersSobotram Trs et
LogInformatiquepdeClasseur2.prn", FileFormat:=xlTextPrinter,
CreateBackup:úlse
'jusque-là

'ensuite il faut enlever les feuilles en trop
' Application.DisplayAlerts = False
' ActiveSheet.Delete
' Sheets("zaza1").Delete
' Application.DisplayAlerts = True

'voire fermer le classeur dans le sauvegarder
'activeworkbook.close false (car il s'appelle classeur2.prn !

End Sub







voici ce que je veux qu elle fasse

1 copier la feuille
2 ouvrir une feuille vierge
3 copie de la feuille
4 suppression des 7 premieres lignes
5 selectionner les colonnes A jusqu a U
6 copier cette selection
7 ouvrir une autre feuille vierge
8 coller la selection dans cette nouvelle feuille
9 enregistrer cette dernier feuille au format prn

Voici la description exact

Je vous remercie


Bonjour,

La macro que tu donnes fait plus de choses que tu n'en décris et est un
mélange entre des actions vues par l'enregistreur de macros et des
choses tapées au clavier. Ainsi :

- il y a aussi suppression de ligne(s) par :
Rows("1:7").Select
Range("BA7").Activate
Application.CutCopyMode = False
Selection.Delete Shift:=xlUp


- ajout d'un classeur (et non d'une feuille)
Workbooks.Add


- une instruction qui plante :
Application.Run Range("ScOnWindow")


Application.Run "classeur.xls!toto" sert à démarrer la macro toto du
classeur 'classeur.xls'. Si le nom du classeur n'est pas précisé, Excel
considère le classeur actif.
Lorsque tu crées un classeur, il devient le classeur actif. Ensuite tu
tentes de lancer une macro d'après un nom qui n'existe pas dans ce
classeur puisque tout fraîchement créé.
Il conviendrait d'éclaircir ce que fait cette macro "ScOnWindow" qui est
activé à chaque création et sortie d'un classeur.

Sans garantie aucune quant au fonctionnement, et absolument non testée
(travailler sur des copies !!!) :

Sub test()
awb = ActiveWorkbook.Name
Workbooks.Add

'ce qui suit est sur une seule ligne!)
ActiveWorkbook.SaveAs Filename:="SrvdatausersSobotram Trs et
LogInformatiquepdeClasseur2.prn", FileFormat:=xlTextPrinter,
CreateBackup:úlse
'jusque-là

'ce qui suit est sur une seule ligne!)
Workbooks(awb).ActiveSheet.Columns("AM:AR").Copy ActiveSheet.Range("A1")
'jusque-là

Application.CutCopyMode = False
Rows("1:7").Delete Shift:=xlUp

'ce qui suit est sur une seule ligne!)
ActiveWorkbook.SaveAs Filename:="SrvdatausersSobotram Trs et
LogInformatiquepdeClasseur2.prn", FileFormat:=xlTextPrinter,
CreateBackup:úlse
'jusque-là

ActiveWorkbook.Close
End Sub


@+
FxM




Bonjour,

Voilà j ai actuellement un problème pour faire une macro
mon souhait était de prendre une feuille excel protégé et la copier sur une
autre feuille (cela marche en faisant copier coller) ensuite selectionner 3
colonnes et les copier pour les mettre dans une autre feuille puis ensuite
enregistrer cette feuille en format "prn"

j ai donc créé une nouvelle macro qui est celle ci

Sub test()
'
' test Macro
' Macro enregistrée le 21/08/2006 par sobotram
'

'
Cells.Select
Selection.Copy
Workbooks.Add
Application.Run Range("ScOnWindow")
ActiveSheet.Paste
Rows("1:7").Select
Range("BA7").Activate
Application.CutCopyMode = False
Selection.Delete Shift:=xlUp
Columns("AM:AR").Select
Selection.Copy
Workbooks.Add
Application.Run Range("ScOnWindow")
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveWorkbook.SaveAs Filename:= _
"SrvdatausersSobotram Trs et
LogInformatiquepdeClasseur2.prn", _
FileFormat:=xlTextPrinter, CreateBackup:úlse
ActiveWorkbook.Close
Application.Run Range("ScOnWindow")
ActiveWorkbook.Close
Application.Run Range("ScOnWindow")
End Sub

et là j ai une erreur a la ligne

Application.Run Range("ScOnWindow")

puis

ActiveSheet.Paste


Pouvez vous m aidez s il vous plait

Cordialement

BntMICHEL













Avatar
FxM
Sur une seule ligne :
Workbooks(awb).ActiveSheet.range("AM1:AR1").entirecolumn.Copy
ActiveSheet.Range("A1")

@+
FxM


j ai une erreur la methode copy de la classe Range a échoué

Workbooks(awb).ActiveSheet.Columns("AM:AR").Copy ActiveSheet.Range("A1")



Toujours aussi peu testé :o)
@+
FxM





Avatar
BntMICHEL
oui oui c est bien sur une seule ligne


Sur une seule ligne :
Workbooks(awb).ActiveSheet.range("AM1:AR1").entirecolumn.Copy
ActiveSheet.Range("A1")

@+
FxM


j ai une erreur la methode copy de la classe Range a échoué

Workbooks(awb).ActiveSheet.Columns("AM:AR").Copy ActiveSheet.Range("A1")



Toujours aussi peu testé :o)
@+
FxM








Avatar
JLuc
*Bonjour BntMICHEL*,
Et si tu remplace :
Workbooks(awb).ActiveSheet.range
par :
Thisworkbook.ActiveSheet.Range...
Ca marche ?

oui oui c est bien sur une seule ligne


Sur une seule ligne :
Workbooks(awb).ActiveSheet.range("AM1:AR1").entirecolumn.Copy
ActiveSheet.Range("A1")

@+
FxM


j ai une erreur la methode copy de la classe Range a échoué

Workbooks(awb).ActiveSheet.Columns("AM:AR").Copy ActiveSheet.Range("A1")



Toujours aussi peu testé :o)
@+
FxM







--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O




1 2