Enregistrer plage par macro

bd_city

XLDnaute Junior
Bonsoir le Forum,

J’ai créé un classeur comportant plusieurs tableaux et je suis à la recherche de 2 codes VBA pour :

1. Enregistrer une plage définie d’un tableau via un bouton sur un répertoire prédéfini. Ex. Enregistrer par clic la plage (E18 :Q30) dans le répertoire : C:\Documents and Settings\Administrateur\Mes documents\Mon classeur.
L’idéal serait que l’enregistrement se fasse automatiquement en cas d’oubli de cliquer sur le bouton (Enregistrer).

2. Générer un message pour confirmer l’impression d’une plage définie (limiter les impressions impulsives) sur la macro suivante :

Sub Tab_1()
ActiveSheet.PageSetup.PrintArea = "$E$18:$Q$30"
Application.Dialogs(xlDialogPrint).Show
End Sub.

Merci d’avance pour votre précieuse aide.
 

vbacrumble

XLDnaute Accro
Re : Enregistrer plage par macro

Bonsoir


Tu veux une copie d'une plage (E18:Q30) en tant que feuille seule ?

2) essaies ton code modifié ainsi
Code:
Sub Tab_1()
Dim r As Range, s As Worksheet, c&, q
Set s = Sheets(1)
With s
    Set r = .Range("$E$18:$Q$30")
    c = Application.WorksheetFunction.CountBlank(r)
    If c = 0 Then
        q = _
            MsgBox("Voulez-vous imprimer la plage " _
            & r.Address(0, 0) & " de la feuille : " & _
            .Name & " ?", vbYesNo, "Impression")
        If q = vbYes Then
        .PageSetup.PrintArea = r.Address
        .PrintPreview
        'Application.Dialogs(xlDialogPrint).Show
        Else
        Exit Sub
        End If
    End If
End With
End Sub
 
Dernière édition:

bd_city

XLDnaute Junior
Re : Enregistrer plage par macro

Bonsoir vbacrumble,

Gros merci pour ta réponse rapide (et dire que j’ai posté un message la semaine dernière qui a été affiché 114 fois 000 aide!!!).
En fait, moi je désire sauvegarder juste la plage que j’ai nommée (le tableau s’étend sur plus de 300 lignes) comme copie de sauvegarde.

Merci encore pour ton assistance et bonne soirée !
 

vbacrumble

XLDnaute Accro
Re : Enregistrer plage par macro

Re

J'ai édité mon message pour ta question 2

Cela répond-t-il à ta demande ?

EDITION: pour la question , voir le code ci-dessous
Code:
Sub sauveplagenommee()
Dim wkS As Workbook, wkD As Workbook, s As Worksheet
Dim nf$
nf = "C:\Temp\toto.xls"
Set wkS = ThisWorkbook
Set s = wkS.Sheets(1)
Set wkD = Workbooks.Add(xlWBATWorksheet)
s.[plagenommee].Copy wkD.Sheets(1).[A1]
wkD.SaveAs nf
wkD.Close True
End Sub
 
Dernière édition:

bd_city

XLDnaute Junior
Re : Enregistrer plage par macro

Re salut vbacrumble,

Je t’avoue que je suis pas un as de la programmation VBA, j’ai essayé d’appliquer ton 1er code sur ma feuille mais il fonctionne pas. Est t-il possible pour toi de l’insérer dans une feuille comme ça je vais voir où ça coince.

Merci pour ta patience.
 

bd_city

XLDnaute Junior
Re : Enregistrer plage par macro

Idem pour le 2ème code. J’ai crée un bouton auquel j’ai attribué ton code comme suit :

Private Sub CommandButton2_Click()
Sub sauveTab_1()
Dim wkS As Workbook, wkD As Workbook, s As Worksheet
Dim nf$
nf = "C:C:\Documents and Settings\Administrateur\toto.xls"
Set wkS = ThisWorkbook
Set s = wkS.Sheets(1)
Set wkD = Workbooks.Add(xlWBATWorksheet)
s.[Tab_1].Copy wkD.Sheets(1).[A1]
wkD.SaveAs nf
wkD.Close True
End Sub

End Sub

Mais le bouton ne marche pas (flèche jaune sur la 1ère ligne du code) !?.
Est t-il possible pour toi de l’inséré dans une feuille comme pour suivre la procédure pas-à-pas.
 

bd_city

XLDnaute Junior
Re : Enregistrer plage par macro

Je m’excuse de ma maladresse, je t’ai avisé dès le debut que je suis pas fortiche en VBA, c’est pour ça que j’aime mieux travailler avec des exemples sur feuille. Je te joins le fichier pour correction.

Merci:)
 

Pièces jointes

  • Exemple_bd_city.xls
    28.5 KB · Affichages: 52

vbacrumble

XLDnaute Accro
Re : Enregistrer plage par macro

Re

1) Ici problème:
nf = "C:C:\Documents and Settings\Administrateur\toto.xls"
Plutôt comme cela non ?
nf = "C:\Documents and Settings\Administrateur\toto.xls"
2) Pourquoi avoir supprimer cette ligne ??? :rolleyes:
Code:
s.Range("A1:C10").Name = "plagenommee"
et modifer celle-ci ?
Code:
nf = "C:\Temp\" & Format(Date, "ddmmyyyy_") _
    & Format(Time, "hmmss") & "_" & wkS.Name
(qui permet d'éviter d'avoir un classeur avec le même nom , ce qui posera problème à la macro)

Voir PJ

PS :
Si tu persistes à supprimer des lignes de code VBA, je ne vais pas passer mon temps à les réintroduire ...

PS bis : il n' y avait pas de plage nommée Tab_1 dans ta pièce jointe ...
 

Pièces jointes

  • 2Exemple_bd_city.zip
    12.1 KB · Affichages: 32
Dernière édition:

bd_city

XLDnaute Junior
Re : Enregistrer plage par macro

vbacrumble… t’es vraiment un as du VBA, chapeau bas maître !

Merci pour ton aide et ta patience à supporter mes bêtises de novice…

Bonne soirée et… au prochain cours :)
P.S. : Je ne toucherais plus jamais aux lignes des codes, promis ! :D
 

Statistiques des forums

Discussions
312 413
Messages
2 088 199
Membres
103 764
dernier inscrit
nissassa