Salut à tous,
J'aurais besoin d'une petite confirmation concernant l'écriture de fichiers textes .
Je tiens à préciser qu'avant d'écrire ce qui suit, j'ai préalablement effectué quelques recherches dans l'aide de VBA ainsi que sur ce forum : j'ai trouvé pas mal d'infos, mais étant pointilleux et perfectionniste , je tiens à vérifier que je ne passe pas à coté d'une meilleure solution à mon problème .
Problème posé : A l'aide de Visual Basic 6, je cherche à remplacer une ligne d'un fichier texte par une autre ligne de ma fabrication.
Intérêt recherché : Je dispose d'une centaine de fichiers html contenant chacun plusieurs tableaux que je souhaite exploiter dans Access. Le programme que je suis en train d'écrire sous Access VB doit me permettre, pour chaque fichiers html situés dans un dossier prédéfinis, d'importer grâce à la commande Docmd.TransferText les tables html dont j'ai besoins.
DoCmd.TransferText [typetransfert][, format], nomtable, nomfichier[, contientnomschamps][, nomtableHTML][, pagecode]
Pour ceux qui ne connaissent pas cette commande, je précise qu'il est possible de choisir quelles tables de la page html peuvent être importées : il suffit de désigner la table par le titre de la page html (contenu dans les balises <TITLE></TITLE>)suivi d'un numéro désignant la deuxième, troisième, xième table de la page. Bref rien d'exceptionnel . Sauf que dans mon cas, les nom de fichiers html sont trop long (chemin+nom).
Et alors me direz-vous ? Et bien il se trouve tout simplement que la commande Docmd.TransferText n'accepte pas des chaines de plus de 125 caractères ! Je suis sérieux, j'ai fais le test avec un nom de fichier du genre "abcde..." : au-delà de 125 caractères (chemin + nom + extension) : (Erreur 3044 : 'chemin\nom.htm' n'est pas un chemin d'accès valide. Assurez-vous que blablabla...")
Du coup, je suis obligé de passer par un soft du style The Rename pour raccourci mes noms de fichiers. Jusque là, ça ne pose pas de problème .
Malheureusement, les noms de fichiers des pages html servent également de titre pour ces mêmes pages. Concrêtement, une page html nommé page.htm a pour titre : page (<TITLE>page</TITLE>). Et bien evidemment la commande Docmd.TransferText ne prend pas comme nom de table valide les noms de table de plus de 63 caratères . J'ai bien vérifié avec un nom de table du genre "abcdef..." comprenant 62,63, ou 64 caractères : 62 ou 63, ca passe; au delà de 64 caractère : (Erreur : 3125 : le moteur de base de données ne peut pas trouver 'nom de la table'. Assurez-vous que le nom de paramètres ou d'alias est valide, qu'il ne comprend pas de caractères ou de ponctuation incorrecte et qu'il n'est pas trop long).
Du coup, il m'est impossible de récupérer une table précise d'un fichier html .
On arrive donc à ce qui me préoccupe : remplacer dans chacunes des pages html, le titre de la page par le nouveau nom du fichier de la page (créé après l'utilisation de The Rename). Ainsi le nom des fichiers et les titres des pages seront exploitables par la commande Docmd.TransferText .
Et c'est ici que j'ai besoin de vos lumières :
J'ai compris qu'il existe deux techniques de lecture/écriture sous VB :
1) Les méthodes OpenTextFile ou OpenAsTextStream qui renvoient un objet TextStream utilisé sur un fichier pour lire, écrire ou ajouter du contenu. Sauf que l'aide de VB précise bien qu'ajouter signifit écrire à la fin du fichier, et qu'écrire signifit créer un fichier. Si j'écris dans un fichier existant, je l'efface. Si j'écris dans un fichier qui n'existe pas, je crée ce fichier. Si vous avez suivi, vous comprennez que ce n'est pas ça qui m'interesse .
2) La seconde technique consite à utiliser l'instruction Open qui permet d'exécuter des opérations d'Entrées/Sorties sur un fichier. Ainsi les instructions Write et Print me permette d'écrire dans mon fichier html. Sauf qu'elles ne me permettent pas d'écrire à un endroits précis du fichier (ligne x, colonne y) et qu'aucunes instructions n'existent pour combler ce manque .
Conscient de toute ces contraintes , je ne vois comme solutions que de copier ligne à ligne l'ensemble de mes fichiers html dans de nouveaux fichiers, en remplacant au passage le contenu des balises TITLE.
Auriez-vous une autre solutions à me proposer ?
Merci de m'avoir lu jusqu'au bout...
Partager