Microsoft 365 Save qu'une feuille d'un classeur

Electron24

XLDnaute Occasionnel
Bonjour le Forum,

J'ai un petit souci avec la sauvegarde d'une feuille d'un classeur vers un autre classeur:
Voici mon code :
VB:
Sub Save_Client()
Dim classeurActif As String
Dim classeurCible As String
Dim vDem As String

    classeurActif = Range("Z31").Value
    classeurCible = "Classeur Clients.xlsm"
    
    vDem = MsgBox("Voulez vous sauvegarder : " & Chr(10) & [Z31], vbYesNo + vbQuestion, "Sauvegarde de la Feuille")

    If vDem = vbYes Then
        Workbooks.Open ActiveWorkbook.Path & "\Clients" & "\" & classeurCible
        Windows(classeurActif).Activate
 1-       ActiveSheet.Copy after:=Workbooks(classeurCible).Sheets(Workbooks(classeurCible).Sheets.Count)
        Workbooks(classeurCible).Close True
    Else
        Sheets("Facture").Select
    Exit Sub
 End If

J'ai un classeur ouvert nommé "Factures Devis.xlsm" qui se trouve dans le dossier :"C:\MA BIBLIOTHEQUE\SOCIETE\Facturation\"
dans ce classeur je souhaite copier la feuille "Facture" en changeant son nom qui se trouve dans la cellule Z31 de cette même feuille.
J'arrive à ouvrir le classeur "Classeur Clients.wlsm" mais je n'arrive pas à sauvegarder la feuille "Facture" avec son nouveau nom.
La ligne 1- du code n'est pas correcte et me donne une erreur.
Pourriez vous svp m'aider. Merci
PS: je ne peux pas joindre le classeur pour raison de saisie personnelle. j'espère que mes explications seront assez claire afin que vous puissiez comprendre le souci.
 
Solution
C'est clair pour la cellule Z31, mais je ne voyais pas la bonne formule pour changer le nom de la feuille copiée. ;-)
Après quelques modifications sur le ton travail, j'ai la solution dont voici le code :
VB:
Sub Save_Client()
    Dim classeurActif As Workbook
    Dim classeurCible As String
    Dim Nom_Feuille As String
    Dim vDem As String

    Set classeurActif = ThisWorkbook
    'sur qu'elle feuille est Range("Z31").Value ????????????????????????????????
    Nom_Feuille = classeurActif.Worksheets("Facture").Range("Z31").Value
    classeurCible = "Classeur Clients.xlsm"
    
    vDem = MsgBox("Voulez vous sauvegarder : " & Chr(10) & [Z31], vbYesNo + vbQuestion, "Sauvegarde de la Feuille")

    If vDem = vbYes Then...

Oneida

XLDnaute Impliqué
Bonjour,
Avec vos explications, nous ne savons(de Marseille) pas ou est la cellule Z31 et y a quoi dedans
Donc rectifiez le code en fonction de votre logique
Une facon de faire:
VB:
Sub Save_Client()
    Dim classeurActif As Workbook
    Dim classeurCible
    Dim vDem As String

    Set classeurActif = ThisWorkbook
    'sur qu'elle feuille est Range("Z31").Value ????????????????????????????????
    Nom_Feuille = classeurActif.Worksheets("TRAVAIL").Range("Z31").Value
    classeurCible = "Classeur Clients.xlsm"
    
    vDem = MsgBox("Voulez vous sauvegarder : " & Chr(10) & [Z31], vbYesNo + vbQuestion, "Sauvegarde de la Feuille")

    If vDem = vbYes Then
        Workbooks.Open ActiveWorkbook.Path & "\" & classeurCible
        classeurActif.Worksheets("Facture").Copy after:=Workbooks(classeurCible).Sheets(Workbooks(classeurCible).Sheets.Count)
        ActiveSheet.Name = Nom_Feuille           'nom de la feuille
        Workbooks(classeurCible).Close True
    Else
        Sheets("Facture").Select
        Exit Sub
    End If
End Sub
 

Electron24

XLDnaute Occasionnel
C'est clair pour la cellule Z31, mais je ne voyais pas la bonne formule pour changer le nom de la feuille copiée. ;-)
Après quelques modifications sur le ton travail, j'ai la solution dont voici le code :
VB:
Sub Save_Client()
    Dim classeurActif As Workbook
    Dim classeurCible As String
    Dim Nom_Feuille As String
    Dim vDem As String

    Set classeurActif = ThisWorkbook
    'sur qu'elle feuille est Range("Z31").Value ????????????????????????????????
    Nom_Feuille = classeurActif.Worksheets("Facture").Range("Z31").Value
    classeurCible = "Classeur Clients.xlsm"
    
    vDem = MsgBox("Voulez vous sauvegarder : " & Chr(10) & [Z31], vbYesNo + vbQuestion, "Sauvegarde de la Feuille")

    If vDem = vbYes Then
        Workbooks.Open ActiveWorkbook.Path & "\Clients" & "\" & classeurCible
        classeurActif.Worksheets("Facture").Copy after:=Workbooks(classeurCible).Sheets(Workbooks(classeurCible).Sheets.Count)
        Sheets("Facture").Name = Range("Z31").Value          'nom de la feuille
        Workbooks(classeurCible).Close True
    Else
        Sheets("Facture").Select
        Exit Sub
    End If
End Sub

Merci à toi Oneida et bonne soirée
 

Discussions similaires

Statistiques des forums

Discussions
312 520
Messages
2 089 296
Membres
104 092
dernier inscrit
karbone57