Sauvegarde plage de cellules

Zlopeck

XLDnaute Junior
Bonjour et encore merci à tous pour la contribution que chacun apporte sur ce forum, :)

Pour sauvegarder des données dans un fichier de facturation, j'ai récupéré une macro qui enregistre mon fichier en le nommant par la valeur contenue dans une cellule et en lui ajoutant la date. La sauvegarde s'effectue dans le dossier où est mon fichier de facturation. Jusqu'à là, tout va bien.

La macro que j'utilise est la suivante :

'sauvegarde facture

Dim Fichier As String
Dim x As String

x = Range("D11").Value

Fichier = Format(Date, "(dd-mm-yy)") & " " & x & ".xls"
ThisWorkbook.SaveCopyAs Filename:=ThisWorkbook.Path & "\" & Fichier


Le problème est que au fil du temps et des diverses modifications effectuées, des feuilles et des macros s'ajoutent et mon fichier ( et du fait mes sauvegardes ) prends du poids.
J'aurais donc aimé pouvoir sauvegarder que la plage " L1:S50 " nommée Zone_d_impression qui se trouve sur la feuille " facturation ", en conservant l'attribution du nom par contenu de cellule et ajout de date.

J'ai essayé des tas de modifications en fouillant sur le forum mais je n'ai rien trouvé qui réponde à mon besoin.

En ce qui concerne les sauvegardes, elles peuvent être faites comme elles le sont actuellement c'est à dire un fichier excel par sauvegarde (fichier ne comportant que la partie à sauvegarder) soit dans un nouveau fichier dont une page s'ajouterait à chaque nouvelle sauvegarde ou bien au format word (une feuille par sauvegarde).
La sauvegarde peut aussi être faite au format PDF car j'utilse 2007.

Je vous remercie d'avance pour l'aide que vous pourrez m'apporter. :eek:
 

Pierrot93

XLDnaute Barbatruc
Re : Sauvegarde plage de cellules

Bonsoir Zlopec

regarde le code ci dessous, si j'ai bien compris :

Code:
Sub test()
Dim Fichier As String
Dim x As String, wb As Workbook
x = Range("D11").Value
Fichier = Format(Date, "(dd-mm-yy)") & " " & x & ".xls"
Set wb = Workbooks.Add
ThisWorkbook.Sheets(1).Range("L1:S50").Copy wb.Sheets(1).Range("A1")
wb.SaveAs Filename:=ThisWorkbook.Path & "\" & Fichier
End Sub

je n'avais pas les noms des feuilles donc j'ai utilisé le numéro d'index, à adapter à ton fichier.

bonne soirée
@+
 

myDearFriend!

XLDnaute Barbatruc
Re : Sauvegarde plage de cellules

Bonsoir Zlopeck, Pierrot93, le Forum,

En toute sincérité, je crois que ça n'apporte rien de plus que le code de notre ami Pierrot93 ;) , mais voici une seconde façon de faire :
Code:
[SIZE=2][COLOR=NAVY]Sub[/COLOR] test()
[COLOR=NAVY]Dim[/COLOR] Fichier [COLOR=NAVY]As String[/COLOR], x [COLOR=NAVY]As String[/COLOR]
    Application.ScreenUpdating = [COLOR=NAVY]False[/COLOR]
    x = Range("D11").Text
    Fichier = ThisWorkbook.Path & "\" & Format([COLOR=NAVY]Date[/COLOR], "(dd-mm-yy)") & " " & x & ".xls"
    ActiveSheet.Copy
    [COLOR=NAVY]With[/COLOR] ActiveWorkbook
        [COLOR=NAVY]With[/COLOR] .ActiveSheet
            .Range("A:K, T:IV").Delete
            .Rows("51:65536").Delete
        [COLOR=NAVY]End With[/COLOR]
        .SaveAs Filename:=Fichier
        .[COLOR=NAVY]Close
    End With[/COLOR]
    Application.ScreenUpdating = [COLOR=NAVY]True[/COLOR]
    MsgBox "Fichier sauvegardé :" & vbLf & Fichier
[COLOR=NAVY]End Sub[/COLOR][/SIZE]
Cordialement,
 

Zlopeck

XLDnaute Junior
Re : Sauvegarde plage de cellules

Bonjour Pierrot93, My Dear Friend et tous les autres,

Malheureusement les codes que vous m'avez envoyés ne fonctionnent pas. La première macro sauvegarde effectivement la plage souhaitée mais cette plage comporte des valeurs calculées par des formules se rapportant à d'autres feuilles alors les cellules de la sauvegarde comportent de nombreuses erreurs du genre REF ou NOM.
La deuxième macro sauvegarde la feuille complète sans lui attribuer le nom souhaité et la sauvegarde prend le nom " classeur 1 ". La deuxième sauvegarde écrase la première et la troisième écrase la deuxième. Ce qui n'est pas idéal...
De plus comme certaines macros mettent en relation plusieurs feuilles, au moment de la sauvegarde comme elles ne peuvent plus remplir leurs fonction, j'ai un débogage.
Je pense qu'il faudrait une sauvegarde comme une " image " de la plage à sauvegarder, sans les formules ou les macros un peu comme une sauvegarde en PDF.
J'ai essayé avec l'enregistreur de macro d'en réaliser une pour enrgistrer en PDF. Elle fonctionne mais je n'ai pas réussi à la fusionner avec celle que j'utilise et comme le nom est toujours le même, les sauvegardes s'écrasent.
Voilà la macro de sauvegarde PDF :

Sub pdf()
'
' pdf Macro
'

'
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"F:\COMPTA\administratif\sauvegardes factures\éditeur factures.pdf", Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=False
End Sub

Il faudrait que le chemin de la sauvegarde se termine non pas par \éditeur factures.pdf mais par le contenu de la cellule D11 et de la date.

Encore merci d'essayer de m'aider à trouver une solution à mon problème
 

Pierrot93

XLDnaute Barbatruc
Re : Sauvegarde plage de cellules

Bonjour Zlopeck, Didier:)

essaye comme ci dessous, utilisation d'un collage spécial (les valeurs) :

Code:
Sub test()
Dim Fichier As String, x As String, wb As Workbook
x = Range("D11").Value
Fichier = Format(Date, "(dd-mm-yy)") & " " & x & ".xls"
Set wb = Workbooks.Add
ThisWorkbook.Sheets(1).Range("L1:S50").Copy
With wb.Sheets(1).Range("A1")
    .PasteSpecial xlPasteValues
End With
wb.SaveAs Filename:=ThisWorkbook.Path & "\" & Fichier
End Sub

bonne journée
@+
 

bqtr

XLDnaute Accro
Re : Sauvegarde plage de cellules

Bonjour Zlopeck, myDearFriend!, Pierrot93

La macro de Pierrot modifiée: elle ne copie que les valeurs, donc tu ne devrais plus avoir de problème de Ref ou de nom$.

Code:
Sub test()
Dim Fichier As String
Dim x As String, wb As Workbook
x = Range("D11").Value
Fichier = Format(Date, "(dd-mm-yy)") & " " & x & ".xls"
Application.ScreenUpdating = False
Set wb = Workbooks.Add
ThisWorkbook.Sheets(1).Range("L1:S50").Copy
wb.Sheets(1).Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
wb.Sheets(1).Range("A1").Select
wb.SaveAs Filename:=ThisWorkbook.Path & "\" & Fichier
wb.Close
Application.ScreenUpdating = True
End Sub
Pour l'autre façon essaye comme ça : (non testé)

Code:
Sub pdf()
'
' pdf Macro
'

Dim Fichier As String
x = Range("D11").Value
Fichier = Format(Date, "(dd-mm-yy)") & " " & x & ".xls"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"F:\COMPTA\administratif\sauvegardes factures\" & Fichier, Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=False
End Sub

Bonne journée

Oups... Pierrot, pas rafaichi avant de poster, désolé
 

Zlopeck

XLDnaute Junior
Re : Sauvegarde plage de cellules

Bonjour et merci à vous tous,

Cette fois ça y est, tout fonctionne, que se soit en format XLS ou en pdf.
Pour éviter le risque de modification des sauvegardes je vais adopter l'enregistrement en pdf mais je garde les autres solutions sous le coude au cas où ...

Je vous remercie encore une fois pour le coup de main que vous m'avez donné.

Bonne journée à vous.
 

Discussions similaires

Statistiques des forums

Discussions
312 497
Messages
2 088 994
Membres
104 000
dernier inscrit
dinelcia