IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Création de fichier html à partir de données d'un fichier XLSX


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Septembre 2010
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 21
    Par défaut Création de fichier html à partir de données d'un fichier XLSX
    Bonjour à toutes et tous,
    Je fais face à un problème que je ne sais pas résoudre.
    Je dois générer des fichiers HTML à partir d'un modèle HTML dans lesquels certaines données (Nom, Prénom par exemple) sont contenus dans un fichier xlsx.
    Vous l'aurez compris le fichier html contient un texte dont certains termes (que l'on pourraient qualifiés de variables) doivent être remplacés par le nom puis le prénom correspondant dans la ligne du tableau excel.
    Et chaque ligne du tableau doit générer un fichier HTML.

    Je ne sais pas comment m'y prendre au plus simple, si queqlu'un à déjà était confronté à celà et à le temps de partager, ça serait génial, merci.

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Fais un mailing list avec Word en utilisant les données à modifier comme paramètres.

  3. #3
    Membre averti
    Inscrit en
    Septembre 2010
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 21
    Par défaut
    Citation Envoyé par Menhir Voir le message
    Fais un mailing list avec Word en utilisant les données à modifier comme paramètres.
    Merci pour la réponse, j'ai moyennement envie d'utiliser Word, j'ai déjà eu des problèmes en éditant du html avec word ...
    Peut être je me trompe et ça a changé avec les nouvelles versions, ça mérite d'être essayé mais j'aurai plus vu une macro sous excel.

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Foune1 Voir le message
    Merci pour la réponse, j'ai moyennement envie d'utiliser Word, j'ai déjà eu des problèmes en éditant du html avec word ...
    Là, il ne s'agit pas de demander à Word de concevoir de l'HTML mais simplement du texte.
    Certes ce texte est de l'HTML mais c'est à traiter comme n'importe quel texte.

  5. #5
    Membre averti
    Inscrit en
    Septembre 2010
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 21
    Par défaut
    Citation Envoyé par Menhir Voir le message
    Là, il ne s'agit pas de demander à Word de concevoir de l'HTML mais simplement du texte.
    Certes ce texte est de l'HTML mais c'est à traiter comme n'importe quel texte.
    Effectivement tu as raison, j'ai simplement collé le HTML dans un doc word puis j'ai effectué le pas à pas, j'obtiens bien mes enregistrements au bout du compte mais je ne sais pas comment générer des fichier html.
    A la fin on propose juste imprimer ou modifier les lettres individuelles .. (word 2016).
    Edit : en fait on obtient un gros fichier txt avec tous le code de chaque page l'un en dessous de l'autre ... reste à trouver un moyen de découper tout ça en des fichiers séparés.

  6. #6
    Membre Expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 871
    Billets dans le blog
    1
    Par défaut
    Bonjour à tous,
    Citation Envoyé par Foune1 Voir le message
    ... Je ne sais pas comment m'y prendre au plus simple, ...
    Le plus simple c'est faire un mailing Word- Excel puis le résultat du mailing je l'enregistre en HTML (Enregistrer sous - page Web)



    NOTA : Un Document enregistrer en DOC ou DOCX ne m'a jamais posé de problème à transformer en Html (cependant je ne fais pas cela tous les jours)
    Peut-être devras-tu passer par un Format Word avant Html

  7. #7
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 573
    Par défaut
    bonjour,
    le plus simple est de créer des sorte de [balise] dans son Modèle!

    Nom : Sans titre.png
Affichages : 1385
Taille : 18,2 Ko

    et de remplacer les [balise] par les valeur!

    Nom : Sans titre.png
Affichages : 1444
Taille : 39,1 Ko
    Modele.html
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML><HEAD>
    <META content="text/html; charset=unicode" http-equiv=Content-Type>
    <META name=GENERATOR content="MSHTML 11.00.10570.1001"></HEAD>
    <BODY>
    <P class=MsoNormal style="MARGIN: 0cm 0cm 10pt"><FONT face=Calibri>Nom&nbsp;: <B 
    style="mso-bidi-font-weight: normal"><I 
    style="mso-bidi-font-style: normal"><U><SPAN 
    style="COLOR: red">[Nom]</SPAN></U></I></B></FONT></P>
    <P class=MsoNormal style="MARGIN: 0cm 0cm 10pt"><FONT face=Calibri>Prénom&nbsp;: 
    <B style="mso-bidi-font-weight: normal"><I 
    style="mso-bidi-font-style: normal"><U><SPAN 
    style="COLOR: red">[Prenom]</SPAN></U></I></B></FONT></P>
    <P class=MsoNormal style="MARGIN: 0cm 0cm 10pt"><FONT face=Calibri>Age&nbsp;: <B 
    style="mso-bidi-font-weight: normal"><I 
    style="mso-bidi-font-style: normal"><U><SPAN 
    style="COLOR: red">[Age]</SPAN></U></I></B></FONT></P>
    <P class=MsoNormal style="MARGIN: 0cm 0cm 10pt"><FONT 
    face=Calibri>Profession&nbsp;: <B style="mso-bidi-font-weight: normal"><I 
    style="mso-bidi-font-style: normal"><U><SPAN 
    style="COLOR: red">[Profession]</SPAN></U></I></B></FONT></P>
    <P>&nbsp;</P></BODY></HTML>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    Sub test()
    Dim Txt As String
    Txt = OuvrirFichier("C:\MyRep\Modele.html")
    Debug.Print Txt
    Txt = Replace(Txt, "[Nom]", "Thumb")
    Txt = Replace(Txt, "[Prenom]", "down")
    Txt = Replace(Txt, "[Age]", "60")
    Txt = Replace(Txt, "[Profession]", TxtHtml("Développeur"))
    HtmlFichier "C:\MyRep\Thumb_down.html", Txt
    End Sub
     
     
     
     
     
     
    'retourne un fichier texte sous forme de tableau
    Function OuvrirFichier(Fichier)
    Set oFs = CreateObject("Scripting.FileSystemObject")
    Set oFile = oFs.OpenTextFile(Fichier)
    OuvrirFichier = oFile.ReadAll
    oFile.Close
    End Function
    Sub HtmlFichier(Fichier, TxtDefault As String)
    Dim FSO, NewFichier
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set NewFichier = FSO.OpenTextFile(Fichier, 2, True)
    NewFichier.Write TxtDefault
    NewFichier.Close
    Set NewFichier = Nothing
    Set FSO = Nothing
    End Sub
     
     
    Function TxtHtml(T As String) As String
    Dim Txt
    Dim Htm
    Dim I As Long
    TxtHtml = T
    Txt = "&$Á$á$É$é$Í$í$Ó$ó$Ú$ú$Ý$ý$À$à$È$è$Ì$ì$Ò$ò$Ù$ù$Â$â$Ê$ê$Î$î$Ô$ô$Û$û$Ä$ä$Ë$ë$Ï$ï$Ö$ö$Ü$ü$Ÿ$ÿ$Ã$ã$Õ$õ$Ç$ç$ $" & vbCrLf
    Htm = "&amp;$&Aacute;$&aacute;$&Eacute;$&eacute;$&Iacute;$&iacute;$&Oacute;$&oacute;$&Uacute;$&uacute;$&Yacute;$&yacute;$&Agrave;$&agrave;$&Egrave;$&egrave;$&Igrave;$&igrave;"
    Htm = Htm & "$&Ograve;$&ograve;$&Ugrave;$&ugrave;$&Acirc;$&acirc;$&Ecirc;$&ecirc;$&Icirc;$&icirc;$&Ocirc;$&ocirc;$&Ucirc;$&ucirc;$&Auml;$&auml;$&Euml;$&euml;"
    Htm = Htm & "$&Ouml;$&ouml;$&Uuml;$&uuml;$&Yuml;$&yuml;$&Atilde;$&atilde;$&Itilde;$&itilde;$&Otilde;$&otilde;$&Ccedil;$&ccedil;$&nbsp;$<br>"
    Txt = Split(Txt, "$")
    Htm = Split(Htm, "$")
    For I = 0 To UBound(Txt)
    TxtHtml = Replace(TxtHtml, Txt(I), Htm(I), 1, compare:=vbBinaryCompare)
    Next
    End Function

  8. #8
    Membre averti
    Inscrit en
    Septembre 2010
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 21
    Par défaut
    Un petit up pour vous exposer rapidement ma solution, elle est assez fastidieuse la première fois mais bon .. je n'ai pas les compétences pour développer un autre outil
    Donc :
    1. Je génère un fichier HTML avec des sortes de balises (comme l'avais suggéré thumb down je l'avais déjà réalisé en amont pour un éventuel publipostage) NOM PRENOM FONCTION etc.
    2. Je génère un fichier xlsx avec l'ensemble des colonnes correspondantes à ces balises, chaque ligne correspondant à une personne et donc un fichier.
    3. Je réalise un publipostage avec ce HTML et cette liste xlsx qui me donne au final un fichier TXT avec tous les codes bout à bout.
    4. J'utilise un logiciel pour découper le fichier toutes les X lignes (nombre correspondant à la longueur de chaque fichier HTML), me donnant X fichiers.
    5. Je renomme ces fichiers selon les prénoms et noms des personnes avec un logiciel (info reprises via les colonnes prenom et nom du fichier xlsx).

    Inconvénients c'est relativement long et fastidieux comme opération, mais le résultat est nickel.
    NB. pour bien gérer les caractères accentués (que je garde pour ma part) il faut dans le fichier xlsx utilisé les codes HTLM correspondant à ces caractères spéciaux. Ils seront alors bien repris visuellement lors de l'affichage du fichier HTML.

    L'idéal serait une macro dans excel qui créerait un fichier HTML par ligne du tableau.

    Un grand merci pour vos messages en tous cas.

  9. #9
    Membre averti
    Inscrit en
    Septembre 2010
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 21
    Par défaut
    Je relance le sujet car je voudrais quand même passer par une macro dans excel pour créer les fichiers HTML.
    Je suis en train de chercher partout des bouts de code afin de les adapter, je saurai peut être créer un fichier avec le contenu du code HTML

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    Sub CreationPageHTML()
        Dim xFile As Integer
        Dim S1 As String, S2 As String
     
        S1 = "http://office.developpez.com/"
        S2 = "http://www.developpez.com/template/logo.gif"
     
        xFile = FreeFile
        Open "C:\CreationPage.html" For Output As xFile
     
            Print #xFile, "<HTML>"
            Print #xFile, "<HEAD>"
            Print #xFile, "<TITLE>Essai</TITLE>"
            Print #xFile, "</HEAD>"
     
            Print #xFile, ""
            Print #xFile, "<BODY TEXT=""#000000"" >"
            Print #xFile, "<A href='" & S1 & "'>Le site Developpez.com</A>"
            Print #xFile, "<BR><BR>"
     
            Print #xFile, "<A href='" & S1 & "'" & "><IMG WIDTH=234 HEIGHT=103 SRC='" & S2 & "'></a>"
     
            Print #xFile, "<BR><BR>"
            Print #xFile, "</BODY>"
            Print #xFile, "</HTML>"
        Close xFile
     
        ThisWorkbook.FollowHyperlink "C:\CreationPage.html"
     
    End Sub
    Mais je ne sais pas (encore) comment intégrer le contenu d'une cellule dans le code HTML et surtout comment générer un fichier par ligne du tableau. Si quelqu'un sait m'aider ? Je continue à chercher en attendant.

  10. #10
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Il y a ce Générateur HTML gratuit en ligne

    Il suffit d'y faire un Copier/Coller d'une region selectionnee sur une feuille Excel pour obtenir le code HTML correspondant pour l'afficher sur une page Web.

    Pour apprendre le HTML et generer le code par toi-meme : ici.

  11. #11
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 573
    Par défaut
    Bonjour,
    Je dois générer des fichiers HTML à partir d'un modèle HTML dans lesquels certaines données (Nom, Prénom par exemple) sont contenus dans un fichier xlsx.
    je ne penses pas que le problème de notre amis est de copier coller un document Word dans un wisiwig! si non je l'invite à retrouver l'excellant travail de Patrick Toulon!

    en revanche son dernier poste {#9} n'est pas très claire. il faudrait préciser quel est le résultat attendu et à partir de quelle données!

Discussions similaires

  1. [MySQL] Création d'un tableau html à partir de donnée récuperer sur Mysql
    Par enterprise dans le forum PHP & Base de données
    Réponses: 14
    Dernier message: 09/07/2018, 09h22
  2. Création d'un programme à partir des données d'un classeur
    Par guigui71 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 26/04/2010, 09h26
  3. Réponses: 11
    Dernier message: 18/01/2010, 11h29
  4. Réponses: 1
    Dernier message: 19/11/2008, 18h51
  5. Réponses: 1
    Dernier message: 10/10/2007, 10h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo