XL 2010 Fonction Windows - recupération nom de classeur

Kire36

XLDnaute Nouveau
Bonjour à toutes et tous je viens vous exposer mon petit problème
j'ai fait une ligne de macro (voir ci dessous) qui fonctionne mais je ne trouve pas le moyen d'aller plus loin, je souhaite conserver le nom du classeur que je viens juste d'enregistrer, l'intégrer dans la ligne suivante dans une commande Windows ("Nom de fichier"). Activate , pour pouvoir l'appeler à tous moment . il faudrait que le nom du classeur créé soit mis en lieu et place de "Nom de fichier" automatiquement (sur le principe : "C\User\Desktop\"& NomFichier) . après des heures de recherches je n y arrive toujours pas. Avez vous des pistes SVP Par avance merci de votre aide.

Sub essaienregistrementclasseur1()
'bloque le rafraichissement de l'affichage
Application.ScreenUpdating = False
'
' essaienregistrementclasseur1 Macro
'
Dim NomFichier As String
NomFichier = Range("d21")

Workbooks.Add
ActiveSheet.SaveAs Filename:="C:\Users\E.KIRE36\Desktop\" & NomFichier

Windows("Nom de fichier"). Point du blocage ???
 

Patrice33740

XLDnaute Impliqué
Bonjour,

Tu devrais déclarer une variable pour le classeur, il suffit ensuite de l'utiliser :
VB:
Sub essaienregistrementclasseur1()
'bloque le rafraichissement de l'affichage
Application.ScreenUpdating = False
'
' essaienregistrementclasseur1 Macro
'
Dim wbk As Workbook
Dim NomFichier As String
  NomFichier = Range("d21")
  Set wbk = Workbooks.Add
  wbk.SaveAs Filename:="C:\Users\E.KIRE36\Desktop\" & NomFichier
  ' et par exemple :
  MsgBox wbk.Name
  ' ou bien :
  wbk.Activate
  'ou encore :
  wbk.Worksheets(1).Name = "MaFeuille"

End Sub
 

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

Bien qu'il y ait d'autres méthodes suivant le cas, mais vu le peu d'information à notre disposition essayez ceci:
VB:
Workbooks.Add
ActiveSheet.SaveAs Filename:=ThisWorkbook.Path & "\" & nomFichier
Windows(ActiveSheet.Parent.Name).Activate

Bon après-midi
 

Kire36

XLDnaute Nouveau
Merci à Roblochon et Patrice pour vos réponses j ai réussi à avancer mais je rencontre d'autres difficultés que je n'avais pas avant, je vous joints les quelques lignes de code.
La création du second Classeur avec le nom en D21 ( du premier classeur) est bon la ou c'est pas fonctionnel et bloquant c'est au moment du collage des données B1 : F99 (copiées du Premier classeur) dans la cellule B1 du (Nouveau classeur) c'est totalement incompréhensible ci dessous le code complet . est il possible que les données, soient perdues lors de la copie puis de la création du nouveau classeur, ?

Sub essaienregistrementclasseur1()
'bloque le rafraichissement de l'affichage
Application.ScreenUpdating = False
' essaienregistrementclasseur1 Macro

Dim wbk As Workbook
Dim NomFichier As String
NomFichier = Range("d21")

'copie des elements du classeur "NEW 2"
Windows( _
"NEW 2.xlsm" _
).Activate
Range("B1:F99").Select
Selection.Copy
'Enregistrement d'un nouveau classeur avec le nom de "d21" dans classeur "NEW 2"
Set wbk = Workbooks.Add
wbk.SaveAs Filename:="C:\Users\Erik.Tillier\Desktop\" & NomFichier
wbk.Activate
Range("B1").Select
'Collage spécial des cellules préalablement copier en "NEW 2"/"B1:F99"
Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
ActiveSheet.Paste
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
 

Patrice33740

XLDnaute Impliqué
RE,

N'hésite pas à utiliser des objets, c'est plus simple et plus lisible :
VB:
Sub essaienregistrementclasseur1()
Dim wbk As Workbook
Dim src As Range
Dim dst As Range
Dim NomFichier As String
  Application.ScreenUpdating = False
  ' Créer le classeur destination
  Set wbk = Workbooks.Add
  ' Définir la première cellule de la plage destination
  Set dst = wbk.Worksheets(1).Range("B1")  'si c'est bien vers la feuille 1
  ' A partir du classeur NEW 2
  With Workbooks("NEW 2.xlsm").Worksheets(1)   'si c'est bien depuis la feuille 1
    ' - définir le nom du classeur destination
    NomFichier = .Range("d21")
    ' - définir la plage des données source
    Set src = .Range("B1:F99")
  End With
  ' Copier les données
  src.Copy
  ' Collages spéciaux
  dst.PasteSpecial Paste:=xlPasteColumnWidths
  dst.PasteSpecial Paste:=xlPasteValuesAndNumberFormats
  ' Enregistrer le classeur avec le nom de "d21" dans classeur "NEW 2"
  wbk.SaveAs Filename:="C:\Users\Erik.Tillier\Desktop\" & NomFichier
End Sub
 

Kire36

XLDnaute Nouveau
Un grand merci Patrice pour ton temps et pour ton aide - je vais tester ce code vers 14h et te dirai si tout est OK effectivement je reconnais que l'usage des objets donne plus de clarté au code, mais mon niveau en vba n'est que très léger, une formation serait nécessaire .
Merci encore.
 

Discussions similaires

Statistiques des forums

Discussions
314 634
Messages
2 111 445
Membres
111 141
dernier inscrit
merlinboilama