Macro copie écran

Feufo

XLDnaute Nouveau
Bonjour à tous,

Même si je pense avoir des notions correctes sur Excel, j'ai une bête noire : la Macro!

Dans mon fichier, j'ai une quinzaine d'onglets et je veux en enregistrer un seul (onglet n°13 intitulé "Facture") à un endroit précis. Je veux créer une sorte de copie écran de cet onglet. Le terme est peut-être mal utilisé, mais en clair avec la macro que j'ai, si je ferme le fichier à partir duquel je copie l’onglet et que j’ouvre le fichier contenant l’onglet copié, celui-ci me demande si je veux mettre les données à jour. Or je ne veux pas, tout comme je voudrais que ces données ne soient pas modifiables, seulement consultables.

De plus, avec la macro que j'ai crée, le nom de mon fichier va être le même à chaque fois (TestFacture2), or je voudrais que le nom fasse référence à 3 cellules de ma feuille (H3, D8 et B22), est-ce possible? J'ai tatonné un peu mais je n'ai rien trouvé de concluant, même pas une petite piste encourageante.

Voici ma macro :
Code:
Sub Macro1()
Sheets("Facture").Select
    Sheets("Facture").Copy
    ChDir "C:\Documents and Settings\TROUILFL\Bureau\Facture à classer"
    ActiveWorkbook.SaveAs Filename:= _
        "C:\Documents and Settings\TROUILFL\Bureau\Facture à classer\TestFacture2.xls" _
        , FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
        ReadOnlyRecommended:=False, CreateBackup:=False
    ActiveWindow.Close
End Sub

J'ai essayé d'être le plus clair possible, mais si des renseignements manquent, faites-le moi savoir.
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Macro copie écran

Bonjour Feufo et bienvenu, bonjour le forum,

Peut-être comme ça :
Code:
Sub Macro1()
Dim chem As String 'déclare la variable chem
Dim o as WorkSheet 'déclare la variable o (Onglet)
 
set o = Sheets("Facture")
 chem = "C:\Documents and Settings\TROUILFL\Bureau\Facture à classer"
o.Copy 'copie l'onglet
'crée un nouveau classeur avec l'onglet "Facture"
ActiveWorkbook.SaveAs Filename:=chem & o.Range("H3").Value & " " & o.Range("D8") & " " & o.Range("B22") & ".xls" _
    , FileFormat:=xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=False
With ActiveWorkbook.Sheets("Facture") 'prend en compte l'onglet "Facture" du nouveau classeur
    .Cells.Copy 'copie toutes les cellules
    'colle uniquement les valeurs
    .Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
End With 'fin de la prise en compte de l'onglet "Facture" du nouveau classeur
ActiveWorkbook.Save 'sauve le nouveau classeur
ActiveWindow.Close 'ferme le nouveau classeur
End Sub
 
Dernière édition:

Discussions similaires

  • Question
Microsoft 365 Excel365
Réponses
2
Affichages
178
Réponses
2
Affichages
127

Statistiques des forums

Discussions
312 109
Messages
2 085 386
Membres
102 880
dernier inscrit
ADEL N