VBA : bascule de fenêtres

F

Fréd

Guest
Bonjour le Forum,
Je bascule d'une feuille à une autre avec la méthode :
windows("Nomfichier").activate
mais le nom d'un des deux fichiers est une variable identifiée f. Lorsque je veux activer cette fenêtre, excel signale une erreur et je n'arrive pas à la corriger.
Quelqu'un peut m'aider ? Voici le code que j'utilise

ChDir "L:"
f = Application.GetSaveAsFilename(InitialFileName:="Nommerlefichier.xls", FileFilter:="Excel Workbook (*.xls),*.xls")
If f = False Then Exit Sub
ActiveWorkbook.SaveAs Filename:=f
'
'Copie de l'en-tête du tableau
Windows("monclasseur.xls").Activate
Rows("1:8").Select
Application.CutCopyMode = False
Selection.Copy
Windows("f").Activate
Range("A1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
 
F

Fréd

Guest
Bonjour jmps,
J'avais essayé sans les guillemets mais ça ne fonctionne pas non plus. Faut-il indiquer en clair l'extention ? si oui, comment ?
Par ailleurs, en testant, je me suis rendu compte que le chemin d'accès n'était pas pris en compte dans le chemin d'enregistrement (il n'apparaît pas dans la fenêtre saveas). Comment faire ?

Merci d'avance de tes (vos) bons soins.

@+

Fréd
 
M

myDearFriend

Guest
Bonsoir Fred, José, Robert, le Forum.

Désolé Robert, si je peux me permettre... je ne suis pas tout à fait d'accord avec toi...
Déclarer les variables, ça oui, c'est tout à fait recommandé ! Par contre, déclarer ici la variable F en tant que string provoquera un beau plantage si l'utilisateur choisit le bouton "Annuler" dans la boîte de dialogue affichée par Application.GetSaveAsFilename() car la valeur retournée dans ce cas est effectivement False.

Peut-être que le code ci-dessous permettra à Fred de résoudre son problème :

Dim F As Variant
   Workbooks("Nomfichier").Activate
   ChDir "L:"
   F = Application.GetSaveAsFilename(InitialFileName:="Nommerlefichier.xls", FileFilter:="Excel Workbook (*.xls),*.xls")
   If F = False Then Exit Sub
   ActiveWorkbook.SaveAs Filename:=F
   '
   'Copie de l'en-tête du tableau
   Workbooks("monclasseur.xls").Sheets(1).Rows("1:8").Copy Destination:=ActiveWorkbook.Sheets(1).Rows("1:8")
   Application.CutCopyMode = False

Il n'est pas toujours nécessaire de procéder à des "select" pour pouvoir copier des objets range.

Attention : l'expression "Sheets(1)" sera peut-être à adapter ici...


Cordialement.

Didier_mDF
myDearFriend-3.gif
 
F

Fréd

Guest
Bonsoir à tous,
Merci beaucoup, j'ai adapté vos conseils et ça fonctionne !
Je suis super contente, depuis 2 semaines que je m'essaye à VBA et que je lis les fils de ce forum, je commence à m'y retrouver.

Merci donc beaucoup du temps que vous consacrez à des novices.

À très bientôt sur d'autres fils
Cordialement,
Fréd
 

Discussions similaires

Statistiques des forums

Discussions
312 211
Messages
2 086 299
Membres
103 173
dernier inscrit
Cerba95