caco64
Messages postés69Date d'inscriptionjeudi 27 septembre 2007StatutMembreDernière intervention14 décembre 2007 3 déc. 2007 à 00:39
Un truc dans le genre :
Sub sauve_feuil_xls()
Dim xlapp As Excel.Application
Dim adr_rep As String, nom_fichier As String
Dim adr_fichier As String, adr_enr As String
Dim classeur_a_enr As Workbook
Dim feuille_a_enr As Worksheet
Dim Nomfeuille As String
Set xlapp = New Excel.Application
'indiquer l'adresse du répertoire
adr_rep = ThisWorkbook.Path & ""
'indiquer nom du fichier excel
nom_fichier = "vb_test.xls"
'adresse du fichier
adr_fichier = adr_rep & nom_fichier
Set classeur_a_enr = xlapp.Workbooks.Open(adr_fichier)
'choisir la feuille souhaitée par son n° (ou son nom)
Set feuille_a_enr = classeur_a_enr.Sheets(1)
Nomfeuille = feuille_a_enr.Name
adr_enr = classeur_a_enr.Path & "" _
& Left(nom_fichier, Len(nom_fichier) - 4) _
& "_" & Nomfeuille & ".xls"
vialatte69
Messages postés7Date d'inscriptiondimanche 2 décembre 2007StatutMembreDernière intervention 7 décembre 2007 3 déc. 2007 à 14:03
Bonjour,
En fait je me suis mal exprimé, je souhaitais enregistrer ma feuille excel dans le même classeur avec le même emplacement tout en conservant mes macros.
J'ai une base de données que je souhaite sauvegarder régulièrement, sauf que la sauvegarde prend du temps compte tenu qu'elle enregistre également mes macros.
Et je sais qu'à l'usage, ceux qui l'utiliseront auront du mal à le faire trop souvent.
Je te remercie quand même pour ton aide...Ton code ne sera pas perdu.
caco64
Messages postés69Date d'inscriptionjeudi 27 septembre 2007StatutMembreDernière intervention14 décembre 2007 3 déc. 2007 à 22:57
Je ne sais pas ce qui prend du temps dans un enregistrement, mais je suis un peu étonné que ce soit les macros.
Les macros, ce n'est jamais que quelques lignes de code, comparé à des centaines (milliers ?) de lignes remplis de formule, voire des graphiques, j'aurais plutôt pensé que les macros ne pèsent pas très lourd.
Quoi qu'il en soit, l'enregistrement du classeur sans les fichiers bas, je connais pas.
vialatte69
Messages postés7Date d'inscriptiondimanche 2 décembre 2007StatutMembreDernière intervention 7 décembre 2007 4 déc. 2007 à 13:28
Bonjour,
En reprenant ton code, je me suis demandé si je ne pouvais pas pointé mon nouvel enregistrement sur mon propre fichier et la propre feuille que je dois enregistrer.
Le problème c'est que évidemment je suis alors en lecture seule.
Penses tu qu'il y a possiblité de forcer la main afin de passer ce verrou et écraser ma feuille source? (tout en conservant le reste)
En fait pour faire suite à ta remarque, je pense que ce sont mes Userform qui m'alourdissent l'enregistrement (j'en ai une soixantaine et aucun graphique)
Merci pour ton aide...Sinon merci quand même.
Vous n’avez pas trouvé la réponse que vous recherchez ?
caco64
Messages postés69Date d'inscriptionjeudi 27 septembre 2007StatutMembreDernière intervention14 décembre 2007 4 déc. 2007 à 22:10
Pour moi, le fichier xls est un tout indivisible du point de vue de l'enregistrement.
Lorsque tu utilises save as, tu peux n'enregistrer qu'une feuille parce que tu crées un nouveau fichier dont tu peux définir les éléments.
Mais, il n'y a pas possibilité, à ma connaissance, d'enregistrer des feuilles ou des macros à la carte.
Quant à ta question sur le lecture seule, je ne sais pas te répondre précisément. Mais je ne vois pas la possibilité d'écraser un fichier source sur lequel tu travailles...
Pas très optimiste tout ça...
A mon sens, la seule solution c'est de séparer les données contenues dans tes feuilles et les user form.
Pour cela, tu as un fichier qui contient les données, et un fichier .bas que tu contrôles dans un projet vb à part (voire un 2° fichier excel) qui contient tes user form et qui récupère les valeurs dans le premier fichier. Tu n'as qu'à gérer l'enregistrement du fichier 1 qui sera très léger.
Plus facile à dire qu'à faire.
vialatte69
Messages postés7Date d'inscriptiondimanche 2 décembre 2007StatutMembreDernière intervention 7 décembre 2007 4 déc. 2007 à 22:25
L'idée est en fait très bonne, et pas si difficile à mettre en oeuvre...Juste un peu fastidieuse, mais je vais m'y atteler.
Comme quoi un échange permet parfois de sortir la tête du guidon.
En te remerciant encore.