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 !
Cela fait bien longtemps que je n'ai plus pratiqué Excel et j'ai perdu un peu la main, c'est pour ça que je me tourne vers vous aujourd'hui:
1) J'ai une liste d'arrondissement parisien : Paris 75001, Paris 75002 etc.. Paris 75020.
2) Une liste de mots en face de chaque arrondissement : Premier arrondissement, deuxième arrondissement, etc.. vingtième arrondissement.
3) J'ai un texte : "Bienvenue à "Paris 75001", le "premier arrondissement" est aussi desservi par blablabla..."
Voilà ma question :
Je souhaite que pour chaque arrondissement, faire un texte qui reprenne chaque mot de la liste, le colle dans le texte et qui l'enregistre ensuite sous le nom du mot pris dans la première colonne sous un format txt.
Exemple, si j'ai le texte "Bienvenue à "Paris 75001", le "premier arrondissement" est aussi desservi par blablabla...", le fichier généré devra se nommer "Paris 75001.txt".
en utilisant l'enregistreur de macro, il apparait qu'il faut utiliser
activeworkbook.saveas Filename:="EmplacementEt NomFichier",FileFormat:=xlUnicodeText, CreateBackup:=False
donc.. tu n'as plus qu'à fabriquer la chaine de caractère "Chemin/NomFichier"
en utilisant l'enregistreur de macro, il apparait qu'il faut utiliser
activeworkbook.saveas Filename:="EmplacementEt NomFichier",FileFormat:=xlUnicodeText, CreateBackup:=False
donc.. tu n'as plus qu'à fabriquer la chaine de caractère "Chemin/NomFichier"
Comment lui indiquer qu'il faut qu'il change de ligne après avoir enregistré par exemple Paris75001.txt, je veux qu'il passe automatiquement à Paris75002.txt etc..?
Pour le moment j'ai fait ceci :
Code:
Sub Macro1()
' Macro1 Macro
Dim ville As String
ville = Range("Feuil1!A1").Value
Dim CP As String
CP = Range("Feuil1!B1").Value
Dim Txt As String
Txt = "Bienvenue dans la ville de " & ville & " dont le code postal est " & CP
Range("Feuil3!A1").Value = Txt
'Je définis l'emplacement pour la sauvegarde, et le nom du fichier
'la variable "ville" et "CP"
Dim Chemin As String, Fichier As String
Chemin = "C:\SAUVEGARDE\"
Fichier = ville & CP & ".txt"
Set Sauvegarde = ActiveWorkbook.Worksheets("Feuil3").Range("A1")
Sauvegarde.Copy
ActiveWorkbook.SaveAs Filename:=Chemin & Fichier, FileFormat:=xlUnicodeText, CreateBackup:=False
End Sub
ça fonctionne correctement, sauf que le nom de la Feuil3 prend le nom des variables ville & CP, sans que je n'arrive à identifier d'où ça peut venir. Je peux toujours renommer en Feuil3, mais si ya une autre solution, ça m'arrangerait 🙄
pour répéter l'opération sur toutes tes lignes, il faut introduire une boucle (for i... next)
Code:
Sub Macro1()
' Macro1 Macro
Dim ville As String
Dim CP As String
Dim Txt As String
Dim Chemin As String, Fichier As String
Chemin = "C:\SAUVEGARDE\"
last = Range("Feuil1!A1").End(xlDown).Row
For i = 1 To last
ville = Range("Feuil1!A" & i).Value
CP = Range("Feuil1!B" & i).Value
Txt = "Bienvenue dans la ville de " & ville & " dont le code postal est " & CP
Range("Feuil3!A" & i).Value = Txt
'Je définis l'emplacement pour la sauvegarde, et le nom du fichier
'la variable "ville" et "CP"
Fichier = ville & CP & ".txt"
Set Sauvegarde = ActiveWorkbook.Worksheets("Feuil3").Range("A" & i)
Sauvegarde.Copy
ActiveWorkbook.SaveAs Filename:=Chemin & Fichier, FileFormat:=xlUnicodeText, CreateBackup:=False
Next i
End Sub
l'ennui.. c'est que ce code ne va fonctionner que pour la première ligne car.. effectivement, l'onglet Feuil3 est renommé du nom du fichier.. et donc.. à la seconde itération, il ne trouve plus l'onglet feuil3
1) soit renommer en Feuil3 à la fin de chaque itération.. mouais..
2) soit trouver la bonne instruction qui permet de créer un fichier texte genre.. le code qui ne devrait pas tarder ;-)
Voici le code..
suffit de créer un nouveau classeur, lui mettre l'info désirée. et l'enregistrer au bon format
Code:
Sub Macro1()
' Macro1 Macro
Dim ville As String
Dim CP As String
Dim Txt As String
Dim Chemin As String, Fichier As String
Chemin = "C:\SAUVEGARDE\"
last = Range("Feuil1!A1").End(xlDown).Row
For i = 1 To last
ville = Range("Feuil1!A" & i).Value
CP = Range("Feuil1!B" & i).Value
Txt = "Bienvenue dans la ville de " & ville & " dont le code postal est " & CP
Range("Feuil3!A" & i).Value = Txt
'Je défini l'emplacement pour la sauvegarde, et le nom du fichier
'la variable "ville" et "CP"
Fichier = ville & CP & ".txt"
Set NewBook = Workbooks.Add
Range("Feuil3!A1").Value = Txt
NewBook.SaveAs Filename:=Fichier, FileFormat:=xlUnicodeText, CreateBackup:=False
ActiveWorkbook.Close
Next i
End Sub
par contre. la.. je fais face à un mystère...
la macro me créer bien les fichiers texte.. mais je ne les vois pas....??
pourtant. ils existent bien puisque si je relance la macro.il me dit que le fichier existe déjà..
autre chose.. à la fermeture du nouveau fichier, il me demande à chaque fois de confirmer l'enregistrement.. ca.. on peut s'en affranchir en le mettant par défaut dans la ligne de commande;. mais je ne sais pas encore ce qu'il faut mettre exactement..
Rebonsoir vgendron, et merci beaucoup pour ton aide, grâce aux éléments que tu as apporté, voici ma version de code finale qui fonctionne parfaitement chez moi :
Code:
Sub Macro1()
' Macro1 Macro
Dim ville As String
Dim CP As String
Dim Txt As String
Dim Chemin As String, Fichier As String
Chemin = "C:\SAUVEGARDE\"
last = Range("Feuil1!A1").End(xlDown).Row
For i = 1 To last
ville = Range("Feuil1!A" & i).Value
CP = Range("Feuil1!B" & i).Value
Txt = "Bienvenue dans la ville de " & ville & " dont le code postal est " & CP
Range("Feuil3!A" & i).Value = Txt
'Je définiS (Si si ça prend bien un "S" haha) l'emplacement pour la sauvegarde, et le nom du fichier
'la variable "ville" et "CP"
Fichier = ville & CP & ".txt"
Set NewBook = Workbooks.Add
Range("Feuil1!A1").Value = Txt
NewBook.SaveAs Filename:=Fichier, FileFormat:=xlUnicodeText, CreateBackup:=False
ActiveWorkbook.Close False
Next i
End Sub
Alors j'ai arrangé deux petites choses :
1)
Code:
Set NewBook = Workbooks.Add
Range("Feuil1!A1").Value = Txt
J'ai changé "Feuil3!" en "Feuil1", car par défaut chez moi (xl 2013? :/) n'ouvre qu'une seule feuille lors d'un "Newbook"...Donc bug. Là c'est nickel.
autre chose.. à la fermeture du nouveau fichier, il me demande à chaque fois de confirmer l'enregistrement.. ca.. on peut s'en affranchir en le mettant par défaut dans la ligne de commande;. mais je ne sais pas encore ce qu'il faut mettre exactement..
par contre. la.. je fais face à un mystère...
la macro me créer bien les fichiers texte.. mais je ne les vois pas....??
pourtant. ils existent bien puisque si je relance la macro.il me dit que le fichier existe déjà..
Question bête, tu as bien créé un dossier "Sauvegarde" dans ton C ?
Je suppose que oui s'il enregistre bien les fichiers. Dans ce cas là, as-tu essayé de rafraichir ton dossier avec F5 entre deux lancements de macro ? Parfois explorer bug et n'affiche pas les nouveaux fichiers créés...
Au pire redémarre et... dis moi ce qu'il en est, ça m'intrigue !
En tout cas, merci beaucoup pour ton aide, je vais bien dormir ce soir !😀
Purée, j'ai exactement le même problème que toi concernant l'emplacement des fichiers maintenant !
Lorsque j'ai fait les tests la première fois, ça fonctionnait très bien. Puis j'ai déplacé la macro dans un fichier propre pour tout reprendre à 0... Problème : Je ne vois pas non plus les fichiers txt créés, mais ils sont bien quelque part !
Du coup, je crée un sous-dossier SAUVEGARDE\Macros\
Et je relance la macro, maintenant les fichiers apparaissent dans SAUVEGARDE et pas dans Macros ! 😕
Dans la Twilight Zone, sans doute 😉
ou alors dans le répertoire courant du classeur actif
(ActiveWorkBook.Path)
Fais un Démarrer/Rechercher/*.txt pour les retrouver sinon 😉
C'était pas si loin haha, il a balancé les fichiers par défaut dans Mes Documents 😀
Bon j'ai une autre interrogation, si je souhaite mettre en forme le texte dans ma macro, c'est possible ça ? (Saut de ligne, tabulations, etc..). Pour que le rendu soit à peu près propre et exploitable, j'ai besoin de le copier/coller sur des pages web par la suite.
Ou est-ce que vous proposez une autre solution ?
- 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