Générer des fichiers .txt/.html à partir d'une tableau .xls
Dernière réponse : dans Programmation
SAlut tt le monde ! j'ai déjà cherché un moment sur ce forum mais j'ai pas trouvé de solution à mon problème...
Je dois me taper 300 signatures format HTML et non, je vais pas les faire une par une
Mon problème :
J'ai un fichier excel avec dans le champ A le nom du fichier .html à générer et dans le champ B le code du fichier correspondant.
Je souhaiterais une macro qui, pour chaque valeur trouvée dans le champ A va copier/coller le champ B vers un nouveau fichier ayant comme titre la valeur du champ A.
Visuellement :
A / B
pierre / <HTML>Mr Pierre dubois Orc lvl 2</HTML>
david / <HTML>Mr David Couiccou Troll lvl 5</HTML>
Je souhaite obtenir
- un fichier pierre.html avec la valeurs correspondant à Champ B dedans
- un fichier david.html avec la valeurs correspondant à Champ B dedans
etc.... avec autant de fichiers excel qu'il y a de valeurs dans la colonne A.
Je sens que c'est carrement possible et pas compliqué à coder, mais moi le VBA j'y connais rien, donc voilà
merci d'avance
Je dois me taper 300 signatures format HTML et non, je vais pas les faire une par une
Mon problème :
J'ai un fichier excel avec dans le champ A le nom du fichier .html à générer et dans le champ B le code du fichier correspondant.
Je souhaiterais une macro qui, pour chaque valeur trouvée dans le champ A va copier/coller le champ B vers un nouveau fichier ayant comme titre la valeur du champ A.
Visuellement :
A / B
pierre / <HTML>Mr Pierre dubois Orc lvl 2</HTML>
david / <HTML>Mr David Couiccou Troll lvl 5</HTML>
Je souhaite obtenir
- un fichier pierre.html avec la valeurs correspondant à Champ B dedans
- un fichier david.html avec la valeurs correspondant à Champ B dedans
etc.... avec autant de fichiers excel qu'il y a de valeurs dans la colonne A.
Je sens que c'est carrement possible et pas compliqué à coder, mais moi le VBA j'y connais rien, donc voilà
merci d'avance
Autres pages sur : generer fichiers txt html partir tableau xls
Lassé par la pub ? Créez un compte
Et non, nous ne faisons pas ton travail à ta place, c'est comme ça : http://www.presence-pc.com/forum/ppc/Programmation/quel... ![[:spamafote] [:spamafote]]()
![[:spamafote] [:spamafote]](http://m.bestofmedia.com/sfp/design/usr/fr/smilies/3e/46/spamafote.gif)
Spoiler
Si tu racontes partout que je t'ai filé une soluce comme ça, je nierais tout en bloc et je jetterais un sort sur ton Windows Vista pour qu'il plante, Ah Ah Ah !!!!!
Dim ligne As Long
Dim cellA As String
For ligne = 1 To 65535
cellA = Cells(ligne, 1).Text
If cellA = "" Then Exit For
Open cellA & ".html" For Output As #1
Print #1, Cells(ligne, 2).Text
Close #1
Next
Il me semble que c'est bien du VB...
Il n'y aucun referencement supplémentaire à faire.
Il suffit de chercher dans l'aide FileSystemObject et tu trouveras ceci.
Il n'y aucun referencement supplémentaire à faire.
Il suffit de chercher dans l'aide FileSystemObject et tu trouveras ceci.
Set fs = CreateObject("Scripting.FileSystemObject")
Set a = fs.CreateTextFile("c:\fichiertest.txt", True)
a.WriteLine("Ceci est un test.")
a.Close
Super merci, j'ai bien avancé grace à ce code
Je l'ai adapté un poil et j'ai des petits problèmes.
- "open" cré le fichier mais pas la chemin d'acces si celui-ci n'existe pas, ça renvoit un message d'erreur comme quoi le chemin est introuvable. Ma petite modification avait pour but d'enregistrer le fichier *.html dans le dossier personnel de l'utilisateur. Celà dit ce n'est pas bien grave je peux m'en sortir sans.
- Plus embêtant, Le contenu du fichier créé est des fois tronqué, il semblerai que c'est dans le cas où le code HTML contenu dans la cellule B depasse le millier de caractère (1024?). C'est le type "String" qui est limité à ce nb de charactère ? Il y a t'il un moyen de contourner ce problème ?
Voilà le code avec la petit modif que j'ai fait:
En tous cas j'ai déjà gagné une semaine de copier/collé qui rend fou Aligato Gozaïmaska !
Je l'ai adapté un poil et j'ai des petits problèmes.
- "open" cré le fichier mais pas la chemin d'acces si celui-ci n'existe pas, ça renvoit un message d'erreur comme quoi le chemin est introuvable. Ma petite modification avait pour but d'enregistrer le fichier *.html dans le dossier personnel de l'utilisateur. Celà dit ce n'est pas bien grave je peux m'en sortir sans.
- Plus embêtant, Le contenu du fichier créé est des fois tronqué, il semblerai que c'est dans le cas où le code HTML contenu dans la cellule B depasse le millier de caractère (1024?). C'est le type "String" qui est limité à ce nb de charactère ? Il y a t'il un moyen de contourner ce problème ?
Voilà le code avec la petit modif que j'ai fait:
Sub GenererUsers()
Dim ligne As Long
Dim cellA, Chemin As String
Chemin = InputBox("Chemin pour le fichier de signature sign***.html", "Nom Chemin ?")
For ligne = 2 To 65535
cellA = Cells(ligne, 1).Text
If cellA = "" Then Exit For
Open Chemin & "\Prive\" & cellA & "\signature\sign" & cellA & ".html" For Output As #1
Print #1, Cells(ligne, 2).Text
Close #1
Next
End Sub
En tous cas j'ai déjà gagné une semaine de copier/collé qui rend fou Aligato Gozaïmaska !
Dixit l'aide d'Excel:
Il existe deux types de chaînes : les chaînes de longueur variable et les chaînes de longueur fixe.
Les chaînes de longueur variable peuvent contenir environ 2 milliards (2^31) de caractères.
Les chaînes de longueur fixe peuvent contenir de 1 à environ 64 Ko (2^16) de caractères.
Note Une chaîne de longueur fixe déclarée comme Public ne peut pas être utilisée dans les modules de classe.
Les codes de caractères de type String sont compris entre 0 et 255. Les 128 premiers caractères (0 à 127) du jeu de caractères correspondent aux lettres et symboles d'un clavier américain standard. Ces 128 caractères sont identiques à ceux du jeu de caractères ASCII. Les 128 caractères suivants (128 à 255) représentent des caractères spéciaux, comme les lettres de certains alphabets, les accents, les symboles monétaires et les fractions. Le [#0000ff]caractère de déclaration de type[#0000ff] String est le signe $.
Le problème ne semble pas venir du format String.
Pis
Citation :
String, type de donnéesIl existe deux types de chaînes : les chaînes de longueur variable et les chaînes de longueur fixe.
Note Une chaîne de longueur fixe déclarée comme Public ne peut pas être utilisée dans les modules de classe.
Les codes de caractères de type String sont compris entre 0 et 255. Les 128 premiers caractères (0 à 127) du jeu de caractères correspondent aux lettres et symboles d'un clavier américain standard. Ces 128 caractères sont identiques à ceux du jeu de caractères ASCII. Les 128 caractères suivants (128 à 255) représentent des caractères spéciaux, comme les lettres de certains alphabets, les accents, les symboles monétaires et les fractions. Le [#0000ff]caractère de déclaration de type[#0000ff] String est le signe $.
Le problème ne semble pas venir du format String.Pis
Dim cellA, Chemin As String
Et Dim cellA As String
Dim Chemin As String
C'est différent !!Dim Chemin As String
J'ai trouvé une solution à mon problème de longueurs (qui ne pouvait pas venir du format String vu qu'à aucun moment la chain de charactère très longue ne passait dans une variable avec un tel format). J'ai disivé le code HTML en 3 parties et je copie les 3 parties à la suite dans le fichier, ça marche comme ça. Ca donne :
C'est Print #1, Cells(ligne, x) qui ne semble pouvoir "printer" que 1024 charactère max.
Dim cellA, Chemin As String
Et
Dim cellA As String
Dim Chemin As String
C'est différent !!
Mais encore ?
Sinon merci encore
Sub GenererUsers()
Dim ligne As Long
Dim cellA, Chemin As String
Chemin = InputBox("Veuillez entrer le lecteur où générer les fichiers *.html", "Générer sign*.html dans les dossiers V:\Signature")
For ligne = 2 To 65535
cellA = Cells(ligne, 1).Text
If cellA = "" Then Exit For
If Chemin = "" Then Exit For
Open Chemin & "\Prive\" & cellA & "\signature\sign" & cellA & ".html" For Output As #1
Print #1, Cells(ligne, 2).Text & Cells(ligne, 3).Text & Cells(ligne, 4).Text
Close #1
Next
End Sub
C'est Print #1, Cells(ligne, x) qui ne semble pouvoir "printer" que 1024 charactère max.
Citation :
PisDim cellA, Chemin As String
Et
Dim cellA As String
Dim Chemin As String
C'est différent !!
Mais encore ?
Sinon merci encore
>Zeb +1
Exact Zeb d'ailleur je l'ai appris que recemment à mes dépends sur un dev.
Pour se qui est des 1024 caratères j'ai déjà eu ce problème et il me semble que cela vient des cellules qui ne renvoie pas tout le texte. En fait sauf erreur, il me semble qu'elle peuvent stocker plus de 1024 caratères mais quand on demande la valeur c'est tronqué, enfin un truc dans le genre.
Exact Zeb d'ailleur je l'ai appris que recemment à mes dépends sur un dev.
Pour se qui est des 1024 caratères j'ai déjà eu ce problème et il me semble que cela vient des cellules qui ne renvoie pas tout le texte. En fait sauf erreur, il me semble qu'elle peuvent stocker plus de 1024 caratères mais quand on demande la valeur c'est tronqué, enfin un truc dans le genre.
Après test, il semblerait que VBA n'accepte de renvoyer que 2^10-1 caractères, soit seulement 1023. Je n'ai pas encore trouvé trace de cette limite dans l'aide d'Excel.
Si la chaîne de caractères dépasse cette limite :
.Text est tronqué,
.Formula plante lamentablement.
Grilled: Bah, tu le savais, moi je viens de le découvrir
EDIT: Comme quoi, ne pas confondre tableur et base de données
Si la chaîne de caractères dépasse cette limite :
Grilled: Bah, tu le savais, moi je viens de le découvrir
EDIT: Comme quoi, ne pas confondre tableur et base de données
Lassé par la pub ? Créez un compte
- Contenus similaires :
Tags :
- ForumConvertir tableau xls en xml
- ForumFichier excel en fichiers txt
- ForumImport plusieurs fichiers txt dans excel
- ForumGenerer un html a partir d'excel
- ForumForcer le telechargement dun fichier txt ou html
- ForumConversion html en txt
- ForumExport xls txt
- ForumGénérer html excel
- ForumVba tableau html
- ForumJava tableau html
- Voir plus
Oh, t'es un vicelard, toi !