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

enregistrer copie et sup macro

7 réponses
Avatar
francois45
bonjour,

je souhaite enregistrer un fichier qui me sert de base sous le nom x de la
cellule "i1"
et je voudrais que cette copie ne contienne pas les macro de ma base, juste
la feuille 1 et la mise en forme de cette feuille.
mais avec cette macro empruntée sur excelabo et un peu remaniée, l'onglet
reception se trouve sur la feuille 2 de mon classeur
le probleme est que toutes les info pour renommer la copie figure sur la
feuille 1 en f2 (mercredi-02-mars-08) mais au format date avec des / et non
au format texte, ce qui fait buguer la macro,

voici la macro

Sub enregistre_auto()



Dim Fichier As String
Dim x As String

Sheets("reception").Select
x = Range("i1").Value
Fichier = Format(Date, "dd mm yy") & " " & x & ".xls"
ThisWorkbook.SaveCopyAs Filename:=ThisWorkbook.Path & "\" & Fichier
ActiveWorkbook.Saved = True
ActiveWorkbook.Close

End Sub


je tourne en rond...quelqu'un peut-il m'aider ?

7 réponses

Avatar
francois.forcet
Salut à toi

Je te propose ce code :

Dim Fichier As String
Dim x As String

x = Sheets("reception").Range("i1").Value
Fichier = Format(Sheets("Feuil1").Range("F2"), "dd mm yy") & " "
& x & ".xls"
Sheets("feuil1").Copy
ActiveWorkbook.SaveCopyAs Filename:=ThisWorkbook.Path & "" &
Fichier
ActiveWorkbook.Saved = True
ActiveWorkbook.Close

Celà devrait fonctionner

Dis moi !!!!
Avatar
francois45
salut,
je viens d'essayer ton code et je te remercie de te pencher sur mon problème
mais il ne fonctionne pas.
j'ai posté mon fichier à l'adresse ci dessous cela permettera de mieux
comprendre ce que je veux faire (j'ai mis les explications dans le module.

http://cjoint.com/?eEuCc40gGF



a écrit dans le message de news:

Salut à toi

Je te propose ce code :

Dim Fichier As String
Dim x As String

x = Sheets("reception").Range("i1").Value
Fichier = Format(Sheets("Feuil1").Range("F2"), "dd mm yy") & " "
& x & ".xls"
Sheets("feuil1").Copy
ActiveWorkbook.SaveCopyAs Filename:=ThisWorkbook.Path & "" &
Fichier
ActiveWorkbook.Saved = True
ActiveWorkbook.Close

Celà devrait fonctionner

Dis moi !!!!
Avatar
francois45
re-bonjour,

les explications pour suivre le fil, le fichier est dans le post
précédent...

Sub engsansmacro()

'celle ci ne marche pas
'je veux pouvoir enregistrer la feuil1 sipac avec toute la mise en page
'(entete et pieds de page compris)
'sans enregistrer les autres feuilles ni les macro ne conservant que
'la feuil1 sur mon nouveau fichier renommé de la date d'extraction situé
'en f2 de la feuil1.

'j'aurais préféré utiliser la cellule f2 de la feuil1 pour renommer mon
fichier
'soit le jour "dd"0(pourquoi pas la date entière 30 04 08 c'est peut être
trop demander..)
'car mon fichier de base TST est déjà dans un dossier mensuel
'je me heurte au format de date car les barres font bugger l'enregistrement
30/04/08
'donc j'utilise la cellule i1 de la feuil2 reception....
'enfin à la fin de la macro, il faut que ma base TST se ferme sans
s'enregistrer(ça marche)

'les bouton n'existent pas dans la vraie version TST (cachés dans des menus
commandbar)

Dim Fichier As String
Dim x As String

x = Sheets("reception").Range("i1").Value
Fichier = Format(Sheets("Feuil1").Range("F2"), "dd mm yy") & " " & x &
".xls"

Sheets("feuil1").Copy

ActiveWorkbook.SaveCopyAs Filename:=ThisWorkbook.Path & "" & Fichier

ActiveWorkbook.Saved = True
ActiveWorkbook.Close

End Sub



Sub enregistre_auto()
'celle ci marche mais je veux conserver uniquement la feuil1
'sans les macros car ma base TST fait 950ko (allègée ici) alors que la
feuil1 85ko


Dim Fichier As String
Dim x As String

Sheets("reception").Select
x = Range("i1").Value
Fichier = Format(Date, "dd mm yy") & " " & x & ".xls"
ThisWorkbook.SaveCopyAs Filename:=ThisWorkbook.Path & "" & Fichier
ActiveWorkbook.Saved = True
ActiveWorkbook.Close

End Sub
Avatar
francois45
bonjour à tous,

j'ai essayé de regrouper les 2 macros dans cet extrait de fichier, l'une
marche (adaptée d'excellabo mais conserve la totalité du fichier soit 950 ko
pour l'original et l'autre pas (merci à françois), je ne sais pas si j'ai
bien réalisé la manip (je débute)

'je veux pouvoir enregistrer la feuil1 sipac avec toute la mise en page
'(entete et pieds de page compris)
'sans enregistrer les autres feuilles ni les macro ne conservant que
'la feuil1 sur mon nouveau fichier renommé de la date d'extraction situé
'en f2 de la feuil1.

'j'aurais préféré utiliser la cellule f2 de la feuil1 pour renommer mon
fichier
'soit le jour "dd"0(pourquoi pas la date entière 30 04 08 c'est peut être
trop demander..)
'car mon fichier de base TST est déjà dans un dossier mensuel
'je me heurte au format de date car les barres "/" font bugger
l'enregistrement 30/04/08
'donc j'utilise la cellule i1 de la feuil2 reception....
'enfin à la fin de la macro, il faut que ma base TST se ferme sans
s'enregistrer(ça marche)

'les bouton n'existent pas dans la vraie version TST (cachés dans des menus
commandbar)


http://cjoint.com/?eEuCc40gGF
Avatar
francois.forcet
Rebonjours à toi

Pour fonctionner mon code à besoin d'être actualisé du nom de l'Onglet
dont tu souhaites enregistrer la copie que je ne le connais pas
Il faut donc corriger ces 2 lignes :

Fichier = Format(Sheets("Feuil1").Range("F2"), "dd mm yy") & " " & x &
".xls"

Sheets("Feuil1").Copy

"Feuil1" représente le nom de l'onglet
Remplaces le par le nom de baptème que tu lui as affécté

J'ai testé avec succés en prenant "sipac"
Seule anomalie la présence de code Macro lié e à celui présent dans le
VBA de cette feuille
Il faudrait pour celle-ci le déplacer pour ne pas enregitrer dans sa
copie de la Macro

Et celà devrait fonctionner

Tiens moi informé
Avatar
francois45
bonjour, François,

j'ai réessayé ta macro mais elle ne referme pas sans enregistrer mon fichier
TST qui me sert de base.
en fait mon modèle me sert à tirer des états journaliers mais comme un
certain nombre de macros tournent, et que ma charmante collègue à une
facheuse tendance a cliquer oui sans lire, elle m'écrase sans arrêt ma base,
et il ne me reste plus qu'à rechercher les dernières mise à jour que j'avais
faite...pas toujours facile quoi !!! (ça m'est arrivé aussi...)
donc pour éviter ça il faut que le fichier se ferme sans s'enregistrer dès
qu'elle aura lancé l'impression.
je n'ai pas l'impression que les 2 dernières lignes de la macro fonctionnent
?!
ActiveWorkbook.Saved = True
ActiveWorkbook.Close
en mettant de la couleur dans mon fichier rien ne se passe, il ne se referme
pas ???

Sub macrodefrabcois()

Dim Fichier As String
Dim x As String

x = Sheets("reception").Range("i1").Value
Fichier = Format(Sheets("sipac").Range("F2"), "dd mm yy") & " " & x & ".xls"

Sheets("sipac").Copy

ActiveWorkbook.SaveCopyAs Filename:=ThisWorkbook.Path & "" & Fichier

ActiveWorkbook.Saved = True
ActiveWorkbook.Close

End Sub
Avatar
francois.forcet
Rebonjours à toi

Effectivement les 2 lignes :

ActiveWorkbook.Saved = True
ActiveWorkbook.Close

Ferme en enregistrant le classeur actif qui est celui créé par la
copie de la feuille "sipac" avec la ligne :

Sheets("sipac").Copy

Si tu veux en plus fermer ton classeur TST sans l'enregistrer il faut
rajouter la ligne :

ActiveWorkbook.Close SaveChanges:úlse

à la suite

La copie sipac ne répond pas tout à fait à ce que tu attends
Mon code fait une copie intégrale de la feuille "sipac" y compris ses
lignes de code correspondant au fonctionnement des boutons qui se
trouve dans son VBA
Ce qui donne à son ouverture la demande d'activation de Macros
De plus une liaison est instaurée entre cette copie et ton fichier
"TST" liée à la présence de la formule en G2

Je te propose pour résoudre toutes ces imperfections un nouveau code :

Dim Fichier As String
Dim x As String
Chemin = ThisWorkbook.Path
x = Sheets("reception").Range("i1").Value
Fichier = Format(Sheets("sipac").Range("F2"), "dd mm yy") & " " & x &
".xls"
Sheets("sipac").Cells.Copy
Workbooks.Add
ActiveSheet.Range("A1").PasteSpecial Paste:=xlPasteValues
ActiveSheet.Range("A1").PasteSpecial Paste:=xlPasteFormats
ActiveSheet.Name = "sipac"
ActiveWorkbook.SaveAs Filename:=Chemin & "" & Fichier
ActiveWorkbook.Close
ActiveWorkbook.Close SaveChanges:úlse


La copie de la feuille "sipac" (Sheets("sipac").Cells.Copy) est
rapportée dans un nouveau classeur (Workbooks.Add) avec ses seules
valeurs et format (ActiveSheet.Range("A1").PasteSpecial
Paste:=xlPasteValues

ActiveSheet.Range("A1").PasteSpecial Paste:=xlPasteFormats)
La nouvelle feuille utilisée est renommée "sipac" (ActiveSheet.Name =
"sipac")
Le nouveau classeur est enregistré avec les paramètres souhaités
(ActiveWorkbook.SaveAs Filename:=Chemin & "" & Fichier)
Puis fermé (ActiveWorkbook.Close)
Le classeur "TST" est à son tour fermé sans être enregistré
(ActiveWorkbook.Close SaveChanges:úlse)

Tu trouveras sur ce lien ton classeur modifié ainsi

J'espère que celà te conviendra

Dis moi !!!!

http://www.cijoint.fr/cjlink.php?file=cj200805/cijeWOkIll.xls.