enregistrer sous......avec macro

J

Jlara

Guest
Bonjour,
En recherchant des infos sur des newsgroup
j'ai trouvé un message "sauver sous.......... par macro excel"

C'est exactement ce que je cherchais.
avec ce code :

Sub Macro1()
Nom = ActiveCell.Value
Fichier = "c:\" & Nom & ".xls"
confirm = MsgBox("Etes vous sur de vouloir enregistrer " & Fichier,
vbQuestion + vbYesNo, "Enregistrement")
If confirm = vbYes Then
ActiveWorkbook.SaveAs Filename:= _
Fichier, FileFormat _
:=xlNormal, Password:="", WriteResPassword:="",
ReadOnlyRecommended:= _
False, CreateBackup:=False
End If
End Sub

Mon but est : dans un classeur comportant plusieurs feuilles d'en sauvegarder une seule avec le n° de facture

j'ai donc essayer :


Sub Macro1()
MonNum = Range("H8").Value ---------------------> H8 = n° de facture

Sheets("fACTURE").Copy Before:=Sheets(2) ----> je fais une copie avant enregistrement afin de supprimer les boutons
Sheets("fACTURE (2)").Name = MonNum

Sheets(MonNum).Shapes("Button 2").Delete --> supression des boutons
Sheets(MonNum).Shapes("Button 3").Delete


Nom = MonNum
Fichier = "c:\" & Nom & ".xls"
confirm = MsgBox("Etes vous sur de vouloir enregistrer " & Fichier,
vbQuestion + vbYesNo, "Enregistrement")
If confirm = vbYes Then
Sheets("MonNum").SaveAs Filename:= _
Fichier, FileFormat _
:=xlNormal, Password:="", WriteResPassword:="",
ReadOnlyRecommended:= _
False, CreateBackup:=False
End If

Sheets("MonNum").Delete ----> supression de la copie

End Sub


Mais je n'y arrive pas, ma démarche n'est peut etre pas bonne
Merci par avance si vous pouvez m'éclairer un petit peu
mais connaissance sur ce domaine étant un peu limiter.
 
S

STéphane

Guest
je te conseille d'utiliser la méthode copy sans préciser le paramètre before ou after, ceci aura pour effet de copier ta feuille dans un nouveau classeur.

je modifie légèrement ton code

Sub Macro1()

set actWB=activeworkbook 'mémorisation du classeur actif pour éventuellement le manipuler ensuite
MonNum = Range("H8").Value ---------------------> H8 = n° de facture

Sheets("fACTURE").Copy
set newWB=activeworkbook
activesheet.Name = MonNum

Sheets(MonNum).Shapes("Button 2").Delete --> supression des boutons
Sheets(MonNum).Shapes("Button 3").Delete


Nom = MonNum
Fichier = "c:\" & Nom & ".xls"
confirm = MsgBox("Etes vous sur de vouloir enregistrer " & Fichier,
vbQuestion + vbYesNo, "Enregistrement")
If confirm = vbYes Then
activeworkbook.SaveAs Filename:= _
Fichier, FileFormat _
:=xlNormal, Password:="", WriteResPassword:="",
ReadOnlyRecommended:= _
False, CreateBackup:=False
End If

'pour fermer ce nouveau classeur
newWB.close savechanges:=false

End Sub

cela devrait marcher

bye
stephane
 
J

Jlara

Guest
Merci pour ton aide
ca n'a pas fonctionner
j'ai simplifié

Sub Macro6()

Set actWB = ActiveWorkbook 'mémorisation du classeur actif pour éventuellement le manipuler ensuite
MonNum = Range("H8").Value
Sheets("fACTURE").Copy
Set newWB = ActiveWorkbook
ActiveSheet.Name = MonNum



Nom = MonNum
ActiveWorkbook.SaveAs Filename:=" & Nom & "


'pour fermer ce nouveau classeur
newWB.Close savechanges:=False

End Sub

ça fonctionne par contre il enregistre le fichier & Nom & .xls et non pas par le n° de facture
 
J

Jlara

Guest
Rebonjour
tout fonctionne bien, et est enregistrer avec le numéro de facture
juste un petit pbleme auquel je n'avais pas pensé

la facture au sein du classeur a des liaison avec d'autre feuille
et au moment de l'ouverture de la facture précédement enrigistrer les plage sont mises à jour !!

dans la macro d'enregistrement est il possible de rompre les liaisons et de garder la facture tel quelle

Merci
 
F

Fred

Guest
ou alors tu peux rajouter ce bout de code qui va virer toutes les formules et les liaisons par la meme occasion tout en conservant les donnees inscrites dans tes cellules (macro a affecter sur ta copie de facture):

ocell = Cells.SpecialCells(xlCellTypeFormulas).Address
Range(ocell).Select
Selection.Value = Selection.Value
 

Discussions similaires

Statistiques des forums

Discussions
312 492
Messages
2 088 926
Membres
103 984
dernier inscrit
maliko67