Enregistrer plage nommée dans modèle préformaté

bd_city

XLDnaute Junior
Salut le Forum,

Je planche depuis des jours sur un code que VBACrumble, que je salue au passage, m’a refilé. Le code fonctionne bien : il enregistre toute la feuille selon la mise en page source dans un répertoire prédéfini par l’utilisateur.

Mais, sachant que ma feuille contient plusieurs tableaux, je n’arrive pas à modifier le code pour qu’il m’enregistre la plage nommée seulement (Tab_1, Tab_2 ou Tab_3…) dans une feuille ou, préférablement, dans un modèle préformaté (avec entête personnalisée) et préenregistré dans un répertoire.

Ci-joint fichier explicatif.

Merci d’avance pour votre aide.
 

Pièces jointes

  • Exemple_bd_city-3.zip
    12.9 KB · Affichages: 48
  • Exemple_bd_city-3.zip
    12.9 KB · Affichages: 42
  • Exemple_bd_city-3.zip
    12.9 KB · Affichages: 51

PMO2

XLDnaute Accro
Re : Enregistrer plage nommée dans modèle préformaté

Bonjour,

Une piste avec votre code modifié

Code:
Private Sub CommandButton2_Click()
Dim wk As Workbook, obj As OLEObject, nf, no$
Dim i&
Dim j&
Dim N As Name
Dim MonNom$
Dim R As Range
Application.ScreenUpdating = False
For i& = 1 To 3 'nombre de noms Tab_
  MonNom$ = "Tab_" & i&
  Feuil1.Copy
  Set wk = ActiveWorkbook
  For Each obj In wk.ActiveSheet.OLEObjects
    If TypeOf obj.Object Is MSForms.CommandButton Then
      obj.Delete
    End If
  Next
  For Each N In wk.Names
    If N.Name <> MonNom$ Then
      On Error Resume Next
      Set R = N.RefersToRange
      R.Delete
      N.Delete
      On Error GoTo 0
    End If
  Next N
  wk.ActiveSheet.Name = _
  "T" & i& & "_" & Format(Date, "dd-mm-yyyy_") & Format(Time, "h-mm-ss"): no = wk.ActiveSheet.Name
  nf = _
  Application.GetSaveAsFilename( _
          no & ".xls", _
          "FICHIER EXCEL(*.xls), *.xls", 1, _
          "Sauvegarde personnalisée")
  If nf <> False Then
    MsgBox "Classeur enregistré dans : " & nf, _
        vbInformation + vbOKCancel, _
        "AFFICHAGE DU REPERTOIRE DE SAUVEGARDE"
  End If
  wk.SaveAs nf
  wk.Close True
Next i&
Application.ScreenUpdating = True
End Sub

Cordialement.

PMO
Patrick Morange
 

bd_city

XLDnaute Junior
Re : Enregistrer plage nommée dans modèle préformaté

Bonjour PMO,

Je te remercie pour ta réponse. Je crois que j'ai fait une bourde dans le fichier joint, j'ai omis de dupliquer les boutons macro SAUVEGARDER et IMPRIMER au bas de chaque tableau.

Au fait, le bouton macro SAUVEGARDER du Tableau 1 devrait enregistrer uniquement la plage du Tableau 1 nommée Tab_1.

Le bouton macro SAUVEGARDER du Tableau 2 (que j'ai omis de créé) devrait enregistrer uniquement la plage du Tableau 2 nommée Tab_2 et ainsi de suite…

J'ai essayé de modifier le code, mais sans résultat !

Encore un gros merci pour ton assistance.
 

PMO2

XLDnaute Accro
Re : Enregistrer plage nommée dans modèle préformaté

Bonjour,

Je me suis intéressé à traiter votre demande par le biais d'un UserForm créé dynamiquement par code et qui, par conséquent, n'apparaît pas en phase de création.
Dans l'exemple, en pièce jointe, il vous faut cliquer sur le bouton "Sauvegarder" pour déclencher ce UserForm dans lequel on cliquera le Label correspondant à la plage nommée qu'on veut exporter dans un nouveau classeur.
J'ai fait cela pour le fun. Si c'est trop compliqué pour votre adaptation, faites le moi savoir et adressez, en pièce jointe, votre classeur avec l'exhaustivité de ce que vous voulez faire.

Pour le bon fonctionnement il faut
1) Dans le VBE, ajouter la référence à partir de Menu Outils/Références
'# Library MSForms
'# C:\WINDOWS\system32\FM20.DLL
'# Microsoft Forms 2.0 Object Library
2) Dans Excel faire menu Outils/Macro/Sécurité... onglet Editeurs approuvés cochez 'Faire confiance au projet visual Basic'

Je ne me suis pas occupé du tout du bouton Imprimer.

Cordialement.

PMO
Patrick Morange
 

bd_city

XLDnaute Junior
Re : Enregistrer plage nommée dans modèle préformaté

Salut PMO2,

Je te remercie du retour:):):).

J'ai consulté ton fichier…un vrai travail de pro ! mais je le trouve compliqué parce que dans mon vrai fichier j'ai 12 tableaux mensuels.

J'ai opté pour ta 1ère version qui convient mieux à mon classeur sauf que le code enregistre les 3 tableaux l'un après l'autre. Il faudrait juste le modifier pour qu'il enregistre la plage nommée uniquement.

Je profite pour réitérer mon souhait : l'idéale pour moi serait que l'enregistrement de la plage nommée se fasse dans une feuille pré formatée et préenregistrée (modèle avec entête personnalisée) au lieu de créer une nouvelle feuille.

Encore merci de votre précieuse assistance et bonne journée…

bd-city:)
 

Statistiques des forums

Discussions
312 415
Messages
2 088 233
Membres
103 775
dernier inscrit
CriCri92