Enregistrement d'onglet dans un autre fichier Excel
Bonjour,
Toujours Débutant dans la VBA
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
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 !