VBA : bascule de fenêtres

  • Initiateur de la discussion Initiateur de la discussion Fréd
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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
 
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
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
1
Affichages
814
Réponses
2
Affichages
660
Retour