Macro qui insère le nom de Fichier
Résolu/Fermé
Thésard en galère
Messages postés
7
Date d'inscription
samedi 2 mars 2013
Statut
Membre
Dernière intervention
9 mars 2013
-
Modifié par Thésard en galère le 2/03/2013 à 22:35
Thésard en galère Messages postés 7 Date d'inscription samedi 2 mars 2013 Statut Membre Dernière intervention 9 mars 2013 - 9 mars 2013 à 14:23
Thésard en galère Messages postés 7 Date d'inscription samedi 2 mars 2013 Statut Membre Dernière intervention 9 mars 2013 - 9 mars 2013 à 14:23
A voir également:
- Macro qui insère le nom de Fichier
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Fichier host - Guide
- Ouvrir fichier .bin - Guide
6 réponses
via55
Messages postés
14504
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
21 décembre 2024
2 738
2 mars 2013 à 22:39
2 mars 2013 à 22:39
Bonsoir
En VBA tout simplement
nom = ThisWorkbook.Name
sheets("Feuil1").Range("A1").value =nom
pour mettre le nom en A1 de la feuille 1
Cdlmnt
En VBA tout simplement
nom = ThisWorkbook.Name
sheets("Feuil1").Range("A1").value =nom
pour mettre le nom en A1 de la feuille 1
Cdlmnt
Thésard en galère
Messages postés
7
Date d'inscription
samedi 2 mars 2013
Statut
Membre
Dernière intervention
9 mars 2013
3 mars 2013 à 14:37
3 mars 2013 à 14:37
Ceci est un bonne commande mais qui est inefficace dans mon cas.
Je suis donc obligé de reformuler mon problème complet pour me faire comprendre.
Mon projet est de compiler les info de fichiers sources (A.xls, B.xls, C.xls, ...) dans un fichier commun liste.xls. Et je voudrais garder la traçabilité du nom du fichier d'origine avec ses données.
J'ai donc une macro unique dans le fichier liste.xls que j'active à partir des fichiers A ou B.xls. Dans cette macro, le nom du fichier source ne peut pas apparaître car il change à chaque fois.
Le problème avec la commande
nom = ThisWorkbook.Name
sheets("Feuil1").Range("A1").value =nom
c'est que ma macro active le fichier liste.xls et insère donc le nom liste.xls dans chaque fichier source.
Je me doute que cela complique énormément le travail et je comprendrais que vous n'ayez pas tout ce temps à me consacrer.
Merci à ceux qui pourront m'accorder ce temps.
Je suis donc obligé de reformuler mon problème complet pour me faire comprendre.
Mon projet est de compiler les info de fichiers sources (A.xls, B.xls, C.xls, ...) dans un fichier commun liste.xls. Et je voudrais garder la traçabilité du nom du fichier d'origine avec ses données.
J'ai donc une macro unique dans le fichier liste.xls que j'active à partir des fichiers A ou B.xls. Dans cette macro, le nom du fichier source ne peut pas apparaître car il change à chaque fois.
Le problème avec la commande
nom = ThisWorkbook.Name
sheets("Feuil1").Range("A1").value =nom
c'est que ma macro active le fichier liste.xls et insère donc le nom liste.xls dans chaque fichier source.
Je me doute que cela complique énormément le travail et je comprendrais que vous n'ayez pas tout ce temps à me consacrer.
Merci à ceux qui pourront m'accorder ce temps.
via55
Messages postés
14504
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
21 décembre 2024
2 738
3 mars 2013 à 20:20
3 mars 2013 à 20:20
Bonsoir
Je ne comprends pas tout !
J'ai donc une macro unique dans le fichier liste.xls que j'active à partir des fichiers A ou B.xls.
Comment la macro en Liste peut être activée à partir de A ?
Comment la macro connait le nom des classeurs source où chercher les données ?
ce nom est bien récupéré quelque part (dans le code ou par une Message Box)
Sinon puisque apparement la macro copie des infos des différents classeurs source une solution de bricolage serait de mettre ma précédente macro dans chaque classeur source qui aurait ainsi son nom écrit dans une cellule d'une feuille et qui pourrait être récupéré comme les autres infos dans Liste
A+
Je ne comprends pas tout !
J'ai donc une macro unique dans le fichier liste.xls que j'active à partir des fichiers A ou B.xls.
Comment la macro en Liste peut être activée à partir de A ?
Comment la macro connait le nom des classeurs source où chercher les données ?
ce nom est bien récupéré quelque part (dans le code ou par une Message Box)
Sinon puisque apparement la macro copie des infos des différents classeurs source une solution de bricolage serait de mettre ma précédente macro dans chaque classeur source qui aurait ainsi son nom écrit dans une cellule d'une feuille et qui pourrait être récupéré comme les autres infos dans Liste
A+
Thésard en galère
Messages postés
7
Date d'inscription
samedi 2 mars 2013
Statut
Membre
Dernière intervention
9 mars 2013
7 mars 2013 à 21:12
7 mars 2013 à 21:12
Merci beaucoup pour votre aide.
Mais justement, c'est ça le problème, trouver une macro qui puisse marcher pour tous les fichiers qui se présentent.
(pour activer une macro à partir de A, j'ouvre le fichier A et le fichier liste, je clique dans une case de A puis je tape le raccourci clavier de ma macro. Ca marche, ne m'en demandez pas plus)
Mais justement, c'est ça le problème, trouver une macro qui puisse marcher pour tous les fichiers qui se présentent.
(pour activer une macro à partir de A, j'ouvre le fichier A et le fichier liste, je clique dans une case de A puis je tape le raccourci clavier de ma macro. Ca marche, ne m'en demandez pas plus)
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 248
7 mars 2013 à 22:57
7 mars 2013 à 22:57
Tu n'as pas vu mon post en dessous ou tu n'en as rien f... ?
eric
eric
Thésard en galère
Messages postés
7
Date d'inscription
samedi 2 mars 2013
Statut
Membre
Dernière intervention
9 mars 2013
8 mars 2013 à 07:28
8 mars 2013 à 07:28
Sisi, j'ai vu.
Merci beaucoup, c'est une très belle commande.
Je ne vous ai pas encore répondu car elle ne marche pas dans ma macro.
Votre commande est très difficile pour moi. Je ne la comprends pas vraiment et j'ai donc du mal à la bidouiller. (désolé du temps que ça me prends, je suis débutant et débardé par ma thèse)
J'essaie de comprendre d'où viennent les problèmes (je pense qu'il y en a 2) et je vous réponds ce week-end.
Merci beaucoup, c'est une très belle commande.
Je ne vous ai pas encore répondu car elle ne marche pas dans ma macro.
Votre commande est très difficile pour moi. Je ne la comprends pas vraiment et j'ai donc du mal à la bidouiller. (désolé du temps que ça me prends, je suis débutant et débardé par ma thèse)
J'essaie de comprendre d'où viennent les problèmes (je pense qu'il y en a 2) et je vous réponds ce week-end.
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 248
Modifié par eriiic le 3/03/2013 à 21:55
Modifié par eriiic le 3/03/2013 à 21:55
Bonsoir à tous,
tu pourrais ouvrir tes fichiers dans la macro et conserver leurs noms et chemins dans une variable tableau :
NomFichier contient ceux que tu as ouvert, tu n'as plus qu'à boucler dessus (ou compléter celle existante)
eric
PS: j'ai oublié de dire : faire une sélection multiple de fichiers dans la boite de dialogue
Jamais tu ne répondras à un mp non sollicité...
Bon, ça c'est fait.
tu pourrais ouvrir tes fichiers dans la macro et conserver leurs noms et chemins dans une variable tableau :
Private Sub ouvreFichiers() Dim NomFichier As Variant, Filtre As String, cmpt As Long Filtre = "Classeur (*.xls),*.xls,Classeur (*.xlsx),*.xlsx,Classeur (*.xlsm),*.xlsm, Fichiers texte (*.txt),*.txt, Tous les fichiers(*.*),*.*" NomFichier = Application.GetOpenFilename(Filtre, 1, "Ouvrir", , True) If IsArray(NomFichier) Then For cmpt = LBound(NomFichier) To UBound(NomFichier) If StrComp(Right(NomFichier(cmpt), 3), "txt", vbTextCompare) = 0 Then Application.Workbooks.OpenText NomFichier(cmpt) ElseIf StrComp(Left(Right(NomFichier(cmpt), 3), 2), "xl", vbTextCompare) = 0 Then Application.Workbooks.Open NomFichier(cmpt) End If Next cmpt End If End Sub
NomFichier contient ceux que tu as ouvert, tu n'as plus qu'à boucler dessus (ou compléter celle existante)
eric
PS: j'ai oublié de dire : faire une sélection multiple de fichiers dans la boite de dialogue
Jamais tu ne répondras à un mp non sollicité...
Bon, ça c'est fait.
Thésard en galère
Messages postés
7
Date d'inscription
samedi 2 mars 2013
Statut
Membre
Dernière intervention
9 mars 2013
Modifié par Thésard en galère le 8/03/2013 à 15:11
Modifié par Thésard en galère le 8/03/2013 à 15:11
Merci encore pour cette macro.
Comme je vous le disais, j'ai pas mal tourné autours et il y a un truc qui bugue mais je ne trouve pas quoi.
Mes fichiers A.xlsx, B.xlsx sont des fichiers .xlsx et sont protégés en écriture.
J'ai donc ajouté :
Ensuite le reste de ma macro copie toutes les données du fichier A dans le fichier liste avec le nom du fichier :
(Je sais que je pourrais simplifier, mais tant que ça marche, je ne fais pas la fine bouche)
Je vous passe le détail de ce que j'en fais esuite car j'ai besoin l'information de certaines cellules uniquement.
Cela marche très bien pour des fichier .xls !
En revanche pour mes fichiers .xlsx, le fichier ne s'ouvre pas et le nom du fichier choisi se copie simplement dans mon fichier Liste.xls sans les informations qui vont avec... les mystères des compatibiltés...
Ce bug se produit sur Excel 2003 (au boulot) ET sur Excel 2007 (chez moi).
(Excel 2003 du boulot est capable d'ouvrir un mode de compatibilté des fichiers .xlsx)
Autre chose qui m'embête un peu : c'est le chemin d'accès. Avoir le nom de fichier sans le chemin d'accès serait plus simple pour moi pour 2 raisons :
Le contrôle visuel de l"origine de l'info derait plus facile.
Je pourrais l'utiliser dans des commandes genre :
Cela dit je ne vous embête pas plus car travailler sur votre macro m'a beaucoup appris et j'ai trouvé un moyen pas très élégant mais pas trop long pour me passer de cette info (même si c'est un peu rageant de laisser l'informatique gagner).
Merci à tous de votre aide. Merci encore, vous m'avez beaucoup appris.
Et je garde précieusement cette macro qui me sera probablement utile à l'avenir (et qui m'aurait simplifié la vie dans le passé)
Comme je vous le disais, j'ai pas mal tourné autours et il y a un truc qui bugue mais je ne trouve pas quoi.
Mes fichiers A.xlsx, B.xlsx sont des fichiers .xlsx et sont protégés en écriture.
J'ai donc ajouté :
ActiveSheet.Unprotect Range("A4").Value = NomFichierPour déprotéger et copier le nom du fichier (A.xlsx) dans le fichier A.
Ensuite le reste de ma macro copie toutes les données du fichier A dans le fichier liste avec le nom du fichier :
Cells.Select Selection.Copy Windows("Liste.xls").Activate Sheets("Feuil2").Select Cells.Select ActiveSheet.Paste
(Je sais que je pourrais simplifier, mais tant que ça marche, je ne fais pas la fine bouche)
Je vous passe le détail de ce que j'en fais esuite car j'ai besoin l'information de certaines cellules uniquement.
Cela marche très bien pour des fichier .xls !
En revanche pour mes fichiers .xlsx, le fichier ne s'ouvre pas et le nom du fichier choisi se copie simplement dans mon fichier Liste.xls sans les informations qui vont avec... les mystères des compatibiltés...
Ce bug se produit sur Excel 2003 (au boulot) ET sur Excel 2007 (chez moi).
(Excel 2003 du boulot est capable d'ouvrir un mode de compatibilté des fichiers .xlsx)
Autre chose qui m'embête un peu : c'est le chemin d'accès. Avoir le nom de fichier sans le chemin d'accès serait plus simple pour moi pour 2 raisons :
Le contrôle visuel de l"origine de l'info derait plus facile.
Je pourrais l'utiliser dans des commandes genre :
Windows(NomFichier).Activate
Cela dit je ne vous embête pas plus car travailler sur votre macro m'a beaucoup appris et j'ai trouvé un moyen pas très élégant mais pas trop long pour me passer de cette info (même si c'est un peu rageant de laisser l'informatique gagner).
Merci à tous de votre aide. Merci encore, vous m'avez beaucoup appris.
Et je garde précieusement cette macro qui me sera probablement utile à l'avenir (et qui m'aurait simplifié la vie dans le passé)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 248
8 mars 2013 à 17:34
8 mars 2013 à 17:34
Bonjour,
effectivement il y a un pb avec les xlsx que je n'avais pas testés.
En filtrant sur 'Tous les fichiers *.* et en simplifiant ça passe mieux.
Au passage je t'ai mis comment récupérer le nom du fichier seul.
Tu vois...
eric
effectivement il y a un pb avec les xlsx que je n'avais pas testés.
En filtrant sur 'Tous les fichiers *.* et en simplifiant ça passe mieux.
Private Sub ouvreFichiers() Dim NomFichier As Variant, Filtre As String, cmpt As Long, fich() As String Filtre = "Tous les fichiers(*.*),*.*" NomFichier = Application.GetOpenFilename(Filtre, 1, "Ouvrir", , True) If IsArray(NomFichier) Then For cmpt = LBound(NomFichier) To UBound(NomFichier) Application.Workbooks.Open NomFichier(cmpt) fich = Split(NomFichier(cmpt), "\") MsgBox fich(UBound(fich)) Next cmpt End If End Sub
Au passage je t'ai mis comment récupérer le nom du fichier seul.
Tu vois...
eric
Thésard en galère
Messages postés
7
Date d'inscription
samedi 2 mars 2013
Statut
Membre
Dernière intervention
9 mars 2013
Modifié par Thésard en galère le 9/03/2013 à 14:24
Modifié par Thésard en galère le 9/03/2013 à 14:24
Merci merci merci
C'est trop bien je peux faire toute ma commande exactement comme je voulais.
C'est génial de regarder l'ordinateur travailler à ma place et tout ranger au bon endroit.
Encore Merci !
Ma thèse a fait un grand pas grâce à vous !
Merci
C'est trop bien je peux faire toute ma commande exactement comme je voulais.
C'est génial de regarder l'ordinateur travailler à ma place et tout ranger au bon endroit.
Encore Merci !
Ma thèse a fait un grand pas grâce à vous !
Merci
3 mars 2013 à 03:55
Merci encore, vous m'enlevez une belle épine du pied.