Boucle vba qui ouvre fichier nom variable
Résolu/Fermé
Gui750
-
28 mars 2011 à 11:35
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 29 mars 2011 à 16:04
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 29 mars 2011 à 16:04
A voir également:
- Vba : ouvrir un fichier excel avec nom variable
- Comment ouvrir un fichier epub ? - Guide
- Ouvrir fichier .bin - Guide
- Comment ouvrir un fichier docx ? - Guide
- Ouvrir un fichier .dat - Guide
- Comment ouvrir un fichier 7z - Guide
6 réponses
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
Modifié par Patrice33740 le 28/03/2011 à 17:38
Modifié par Patrice33740 le 28/03/2011 à 17:38
Ce serait plutôt quelque chose comme :
A condition que la fichier soit dans la racine de Z: (car il faut le nom complet pour ouvrir le fichier)
Cordialement
Patrice
For Each feuille In Worksheets Workbooks.Open Filename:= "Z:\" & Feuille.Range("A1").value & ".xls" Next feuille
A condition que la fichier soit dans la racine de Z: (car il faut le nom complet pour ouvrir le fichier)
Cordialement
Patrice
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
Modifié par Patrice33740 le 29/03/2011 à 10:58
Modifié par Patrice33740 le 29/03/2011 à 10:58
Bonjour,
1) Je ne t'ai pas proposé d'utiliser selection.value car il n'est pas nécessaire de sélectionner quoi que ce soit pour faire ce que tu veux, par contre cela pourrait être une cause d'erreur.
2) «je souhaiterai fermer la feuille», on ne peut pas fermer une feuille, je suppose que tu veux fermer le classeur qui contient la macro sans l'enregistrer :
ThisWorkbook.Saved = True
ThisWorkbook.Close
Cordialement
Patrice
1) Je ne t'ai pas proposé d'utiliser selection.value car il n'est pas nécessaire de sélectionner quoi que ce soit pour faire ce que tu veux, par contre cela pourrait être une cause d'erreur.
2) «je souhaiterai fermer la feuille», on ne peut pas fermer une feuille, je suppose que tu veux fermer le classeur qui contient la macro sans l'enregistrer :
ThisWorkbook.Saved = True
ThisWorkbook.Close
Cordialement
Patrice
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
29 mars 2011 à 12:03
29 mars 2011 à 12:03
Re,
Je ne vois pas trop ce que tu veux.
En VBA, il faut utiliser select avec parcimonie, une bonne méthode consiste à utiliser des objets.
Tant que je suis dans les conseils, une excellente habitude consiste à commencer chaque module par Option Explicit, ce qui oblige à déclarer chaque variable utilisée.
Si tu veux travailler sur le fichier qui contient la macro, c'est l'objet ThisWorkbook.
Pour travailler sur le classeur que tu viens d'ouvrir :
Au début de la procédure, déclare :
Je ne vois pas trop ce que tu veux.
En VBA, il faut utiliser select avec parcimonie, une bonne méthode consiste à utiliser des objets.
Tant que je suis dans les conseils, une excellente habitude consiste à commencer chaque module par Option Explicit, ce qui oblige à déclarer chaque variable utilisée.
Si tu veux travailler sur le fichier qui contient la macro, c'est l'objet ThisWorkbook.
Pour travailler sur le classeur que tu viens d'ouvrir :
Au début de la procédure, déclare :
Dim wbk As WorkbookPuis affecte le classeur ouvert à l'objet wbk avec :
Set wbk = Workbooks.Open(Filename:=NomCompletDuFichier)tu pourras ensuite utiliser l'objet wbk pour travailler dessus, par exemple :
wbk.Worksheets(1).Range("A1").Value = "Test"(pas besoin d'utiliser select)
Merci Patrice !
Je me suis rendu compte que
Workbooks.Open Filename:= "Z:\" & selection.value & ".xls"
fonctionne aussi.
Par contre j'ai une deuxième question dans la foulée.
A la fin de ma boucle je souhaiterai fermer la feuille en question et la procédure :
Range'("A1" ).select
Windows(" & Selection.Value & " ).Close
ne fonctionne pas.
tu aurais une idée par hasard ?
Merci
Guillaume
Je me suis rendu compte que
Workbooks.Open Filename:= "Z:\" & selection.value & ".xls"
fonctionne aussi.
Par contre j'ai une deuxième question dans la foulée.
A la fin de ma boucle je souhaiterai fermer la feuille en question et la procédure :
Range'("A1" ).select
Windows(" & Selection.Value & " ).Close
ne fonctionne pas.
tu aurais une idée par hasard ?
Merci
Guillaume
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Merci bcp,
Oui effectivement select n'est pas indispensable, je l'ai enlevé. J'avais bricollé ça pour que ça fonctionne mais je n'ai pas un gros niveau en vba.
En ce qui concerne ma seconde question, je m'exprime mal. en effet c'est le classeur que je veux fermer.
La ou je bloque en fait, c'est pour le selectionner. Dans le cadre de ma boucle, je passe sur un autre classeur.
Windows("Classeur mère.xls").Activate
et je souhaiterai "repasser" sur le classeur avec nom variable pour pouvoir utiliser la commande pour pouvoir ensuite mettre le code que tu me proposes.
Tu vois ce que je veux dire ?
Merci
Oui effectivement select n'est pas indispensable, je l'ai enlevé. J'avais bricollé ça pour que ça fonctionne mais je n'ai pas un gros niveau en vba.
En ce qui concerne ma seconde question, je m'exprime mal. en effet c'est le classeur que je veux fermer.
La ou je bloque en fait, c'est pour le selectionner. Dans le cadre de ma boucle, je passe sur un autre classeur.
Windows("Classeur mère.xls").Activate
et je souhaiterai "repasser" sur le classeur avec nom variable pour pouvoir utiliser la commande pour pouvoir ensuite mettre le code que tu me proposes.
Tu vois ce que je veux dire ?
Merci
OK,
merci beaucoup,
j'ai utilisé le Set wbk pour résoudre mon petit problème.
Merci pour ton aide en tout cas, tu es particulièrement pédagogue.
thx
++
merci beaucoup,
j'ai utilisé le Set wbk pour résoudre mon petit problème.
Merci pour ton aide en tout cas, tu es particulièrement pédagogue.
thx
++
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
29 mars 2011 à 16:04
29 mars 2011 à 16:04
De rien, au plaisir de te relire sur le forum
Cordialement
Patrice
Cordialement
Patrice