Probleme pour conception d une macro
Le
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:= _
"\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
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
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 :
- ajout d'un classeur (et non d'une feuille)
- une instruction qui plante :
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
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
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
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."
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é.
@+
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
Workbooks(awb).ActiveSheet.Columns("AM:AR").Copy ActiveSheet.Range("A1")
Workbooks(awb).ActiveSheet.range("AM1:AR1").entirecolumn.Copy
ActiveSheet.Range("A1")
@+
FxM
Et si tu remplace :
Workbooks(awb).ActiveSheet.range
par :
Thisworkbook.ActiveSheet.Range...
Ca marche ?
--
____
( O | O )
--
_oooO_ JLuc _Oooo_
O-O