Enregistrement d'onglet dans un autre fichier Excel

Bonjour,

Toujours Débutant dans la VBA, j'ai besoin de votre aide

J'ai fait une matrice Tarifaire sur un fichier Excel avec des formules, des onglets avec différents tarifs...

Maintenant qu'elle est finie. Pour envoyer les tarifs aux clients, j'aimerais, faire une macro avec qui permet d'enregistrer chaque onglet sur un fichier Excel et PDF (2 macros qui sont déjà dans ma matrice, fait l'année dernière

21matrice-test.zip (296.38 Ko)

par un utilisateur de ce site que je remercie encore) mon seul problème sur cette macro c'est qu'elle me colle les formules, et j'aimerai qu'elle me colle juste les valeurs ainsi que la mise en page.

Et il possible, de rajouter dans la macro une fonction qui me permet de coller la mise en page et les valeur de mes formules et pas les formules ?

Ci-joint un exemple de mon fichier et ci-dessous la macro utilisés.

Sub SaveOngletEXCEL()
  Dim ws As Worksheet, newWk As Workbook
  Dim dLig As Long
  Dim Chemin As String
  ' Demander le chemin d'enregistrement
  Chemin = ChoixDossier(ThisWorkbook.Path, "Merci de choisir un dossier")
  ' Si pas de choix
  If Chemin = "" Then
    MsgBox "Abandon opérateur", vbCritical, "Annulation"
    Exit Sub
  Else
    Chemin = Chemin & "\"
  End If
  ' Sinon
  ' Pour chaque feuille
  For Each ws In Worksheets
    ' Si la feuille est un tarif
    If InStr(1, ws.Name, "Tarif", vbTextCompare) > 0 Then
      ' la copier dans un nouveau classeur
      ws.Copy
      ' Définir le nouveau classeur
      Set newWk = ActiveWorkbook
      ' Y copier la feuille Nouveauté-Retrait-Alternative
      ThisWorkbook.Sheets("Nouveauté-Retrait-Alternative").Copy After:=newWk.Sheets(1)
            newWk.SaveAs Filename:=Chemin & ws.Name & ".xlsx"
      newWk.Close
      ' Effacer les variable objet pour libérer la mémoire
      Set newWk = Nothing: Set ws = Nothing
    End If
  Next ws
End Sub

Je vous remercie de l'aide, et du temps que vous m'accorder.

Bien à vous

Dianec

Bonjour Dianec,

Cela ressemble à du codage que je fais

Tu peux tout mettre dans la même procédure que voici

Sub SaveOngletEXCEL()
  Dim ws As Worksheet, newWk As Workbook
  Dim dLig As Long
  Dim Chemin As String
  ' Demander le chemin d'enregistrement
  Chemin = ChoixDossier(ThisWorkbook.Path, "Merci de choisir un dossier")
  ' Si pas de choix
  If Chemin = "" Then
    MsgBox "Abandon opérateur", vbCritical, "Annulation"
    Exit Sub
  Else
    Chemin = Chemin & "\"
  End If
  ' Sinon
  ' Pour chaque feuille
  For Each ws In Worksheets
    ' Si la feuille est un tarif
    If InStr(1, ws.Name, "Tarif", vbTextCompare) > 0 Then
      ' la copier dans un nouveau classeur
      ws.Copy
      ' Définir le nouveau classeur
      Set newWk = ActiveWorkbook
      ' Y copier la feuille Nouveauté-Retrait-Alternative
      ThisWorkbook.Sheets("Nouveauté-Retrait-Alternative").Copy After:=newWk.Sheets(1)
      ' Copier/coller les valeurs des cellules
      With newWk.Sheets(1)
        .Activate
        With .Cells
          .Copy
          .PasteSpecial Paste:=xlPasteValues
        End With
        .Range("A1").Select
      End With
      ' Sauvegarder le classeur
      newWk.SaveAs Filename:=Chemin & ws.Name & ".xlsx"
      ' Sélectionner les 2 feuilles et les exporter
      newWk.Sheets(Array(ws.Name, "Nouveauté-Retrait-Alternative")).Select
      ' Exporter le nouveau tarif en PDF
      ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Chemin & ws.Name & ".pdf", IgnorePrintAreas:=False, OpenAfterPublish:=False
      ' Ferme le nouveau classeur créé
      newWk.Close SaveChanges:=False
      ' Effacer les variable objet pour libérer la mémoire
      Set newWk = Nothing: Set ws = Nothing
    End If
  Next ws
End Sub

Et le fichier modifié

@+

Ouii ! Merci infiniment BrunoM45 !!!

Le temps que tu m'as fait gagner !

Rechercher des sujets similaires à "enregistrement onglet fichier"