Enregistrment feuille excel en VBA

vialatte69 Messages postés 7 Date d'inscription dimanche 2 décembre 2007 Statut Membre Dernière intervention 7 décembre 2007 - 2 déc. 2007 à 21:58
vialatte69 Messages postés 7 Date d'inscription dimanche 2 décembre 2007 Statut Membre Dernière intervention 7 décembre 2007 - 4 déc. 2007 à 22:25
Bonjour,

Je cherche à enregistrer une feuille excel sans enregistrer le fichier complet, ceci en VBA.

En fait je souhaite éviter l'enregistrement complet de mes macros, ceci prenant trop de temps.

En vous remerciant par avance.

6 réponses

caco64 Messages postés 69 Date d'inscription jeudi 27 septembre 2007 Statut Membre Dernière intervention 14 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"
   
    feuille_a_enr.SaveAs Filename:=adr_enr, FileFormat:=4
   
    Set feuille_a_enr = Nothing
    classeur_a_enr.Close savechanges:=False
    Set classeur_a_enr = Nothing
    Set xlapp = Nothing
   
End Sub

La haine aveugle n'est pas sourde
0
vialatte69 Messages postés 7 Date d'inscription dimanche 2 décembre 2007 Statut Membre Derniè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.

Merci
0
caco64 Messages postés 69 Date d'inscription jeudi 27 septembre 2007 Statut Membre Dernière intervention 14 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.

Bon courage.

La haine aveugle n'est pas sourde
0
vialatte69 Messages postés 7 Date d'inscription dimanche 2 décembre 2007 Statut Membre Derniè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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
caco64 Messages postés 69 Date d'inscription jeudi 27 septembre 2007 Statut Membre Dernière intervention 14 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.

La haine aveugle n'est pas sourde
0
vialatte69 Messages postés 7 Date d'inscription dimanche 2 décembre 2007 Statut Membre Derniè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.
0
Rejoignez-nous