Macro Excel pour générer des fichiers HTML rempli à partir de données Excel

Bonjour,

Je suis tout nouveau dans la réalisation de projet sous excel et j'essaie de trouver une solution à mon problème en utilisant une macro.

Mon objectif est de générer des fichiers HTML à partir des données contenues dans tableau excel (2016).

Je m'explique. J'ai un fichier HTML "modèle" dans lequel j'ai insérer des "balises" (nom, prénom, fonction, site, telephone etc) dans le texte.

Ensuite j'ai un tableau excel avec plusieurs colonnes représentant les fameuses balises, et chaque ligne de ce tableau correspond à une personne.

Le but est vous l'aurez compris de générer un fichier HTML par personne en remplaçant pour chaque fichier les balises par le contenu correspondant dans la ligne.

J'ai fais la manipulation avec un publipostage word qui m'a donné un fichier txt avec tous les codes html à la suite. Il me faut donc ensuite découper ce fichier toutes les x lignes pour avoir des fichiers séparés et ensuite renommer les fichiers avec un autre programme. Enfin bref c'est un peu long et fastidieux. Mais ça marche.

J'ai vu qu'on pouvait créer et écrire dans un fichier via la création d'un module avec Print (vu sur le site de microsoft) mais je n'arrive pas à trouver un code afin d'intégrer les données du tableau en disant "pour chaque ligne, créer un fichier html dont le nom est nom-prenom.html, et remplacer les balises par le contenu de la cellule correspondante"

Je sais que je ne suis pas très avancé mais encore une fois je suis au début de mon apprentissage on va dire Mais si quelqu'un peut me mettre sur une piste à adapter ou étudier ça serait top !

Sub CreateHTML()
   'Define your variables.
   Dim iRow As Long
   Dim iStage As Integer
   Dim iCounter As Integer
   Dim iPage As Integer

   'Create an .htm file in the same directory as your active workbook.
   Dim sFile As String
   sFile = ActiveWorkbook.Path & "\test.htm"
   Close

   'Open up the temp HTML file and format the header.
   Open sFile For Output As #1
   Print #1, "<html>"
   Print #1, "<head>"
   Print #1, "<style type=""text/css"">"
   Print #1, "  body { font-size:12px;font-family:tahoma } "
   Print #1, "</style>"
   Print #1, "</head>"
   Print #1, "<body>"

Hello,

Je suis de passage donc je ne pourrai pas te proposer une solution de bout en bout...

Cependant je peux t'aider

On peut modifier le format d'un fichier xlsx vers un html en faisant enregistrer sous.

On peut récupérer une plage de cellule uniquement.

Le code fourni par l'enregistreur de macro (si tu ne sais pas ce que c'est fais un tour sur le site ça pourra t'aider pour beaucoup de choses ) donne ceci :

Sub Macro1()

    With ActiveWorkbook.PublishObjects.Add(xlSourceRange, _
        "C:\Users\TON_REPERTOIRE\Classeur10000.html", "Feuil1", "$A$1:$C$2", _
        xlHtmlStatic, "Classeur1_9261", "")
        .Publish (True)
        .AutoRepublish = False
    End With
    ChDir "C:\Users\TON_REPERTOIRE"
    Application.WindowState = xlNormal
End Sub

Il faudrait adapter ton répertoire + adapter ta plage de cellule.

Mettre le tout dans une boucle pour chaque ligne, par exemple en utilisant cette syntaxe :

while
wend

La petite particularité c'est qu'il faut masquer la ligne précédente pour ne pas la prendre en compte ... Par exemple on traite la ligne 3 ( la ligne 1 étant les en-têtes), il faut masquer la ligne 2 pour que notre plage commence par la ligne 3

Exemple :

Rows("2").Hidden = True

Donc je dirai un algo comme ça :

i = 2

while cells(i,1) <> "" 

if i = 2 then 
    With ActiveWorkbook.PublishObjects.Add(xlSourceRange, _
        "C:\Users\TON_REPERTOIRE\classeur", "Feuil1", "$A$1:$C$"& i, _
        xlHtmlStatic, "Classeur" & cells(i,1), "")
        .Publish (True)
        .AutoRepublish = False
    End With
    ChDir "C:\Users\TON_REPERTOIRE"
    Application.WindowState = xlNormal

else
    Rows(i-1).Hidden = True
    With ActiveWorkbook.PublishObjects.Add(xlSourceRange, _
        "C:\Users\TON_REPERTOIRE\classeur", "Feuil1", "$A$1:$C$"& i, _
        xlHtmlStatic, "Classeur1_9261"& cells(i,1), "")
        .Publish (True)
        .AutoRepublish = False
    End With
    ChDir "C:\Users\TON_REPERTOIRE"
    Application.WindowState = xlNormal
end if    
i = i+1
wend 

A tester ou s'inspirer.

R@g

Rechercher des sujets similaires à "macro generer fichiers html rempli partir donnees"