Enregistrer plage par macro

  • Initiateur de la discussion Initiateur de la discussion bd_city
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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.
 
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:
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 !
 
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:
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.
 
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.
 
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

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 ??? 🙄
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

Dernière édition:
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 ! 😀
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour