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 :

[VBA] génération de page HTML à partir d'un classeur


Sujet :

Macros et VBA Excel

  1. #21
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Bonjour tlm,

    Deux solutions éventuelles à tester

    La première va sauvegarder tout le classeur en 1 seul fichier html en gardant la structure des onglets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub TestHtml1()
    ActiveWorkbook.SaveAs Filename:="C:\test1.htm", FileFormat:=xlHtml
    End Sub
    La seconde solution va sauvegarder chaque page du classeur en fichier html
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub TestHtml2()
    Dim i As Byte
     
    For i = 1 To Sheets.Count
        ActiveWorkbook.PublishObjects.Add(xlSourceSheet, _
        "C:\Pagetest" & i & ".htm", Sheets(i).CodeName, _
        "", xlHtmlStatic, "test" & i, "").Publish (True)
    Next
    End Sub

  2. #22
    Nouveau membre du Club Avatar de Léponge85
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 77
    Points : 36
    Points
    36
    Par défaut
    Je viens de l'essayer et sa me met " Erreur definie par l'application ou par l'objet"
    peut-tu encore m'aider stp
    merci

  3. #23
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Montre ton code tel que tu l'as écrit

  4. #24
    Nouveau membre du Club Avatar de Léponge85
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 77
    Points : 36
    Points
    36
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub TestHtml2()
    Dim i As Byte
     
    For i = 1 To Sheets.Count
        ActiveWorkbook.PublishObjects.Add(xlSourceSheet, _
        "C:\Pagetest" & i & ".htm", Sheets(i).CodeName, _
        "", xlHtmlStatic, "test" & i, "").Publish (True)
    Next
    End Sub
    Et j'ai creer un fichier Page test sur le C

  5. #25
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Citation Envoyé par Léponge85 Voir le message
    Et j'ai creer un fichier Page test sur le C
    euuh ? pourquoi faire ?

    j'explique en 2 mots le code:
    il boucle sur toutes les feuilles du classeur et va enregistrer chaque feuille, à la racine du disque C (on peut choisir un autre disque, répertoire, sous répertoire,...), au format html en nommant chaque fichier PageTest1.htm, PageTest2.htm........PageTest36.htm.

    Tu dois juste copier le code dans un module standard et il s'occupe du reste.

    Je l'ai testé et no problem.

  6. #26
    Nouveau membre du Club Avatar de Léponge85
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 77
    Points : 36
    Points
    36
    Par défaut
    Je comprend pas du tout ou le mettre (dans kel module) je suis DSL mais je suis un peu nul .
    Ce code permet-il de faire un lien entre les differentes page HTML parce que j'ai des lien hypertexte entre les feuilles.
    Merci pour ton aide et ta patience

  7. #27
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Dans un module standard = dans ton éditeur visual basic, insertion --> Module, ça c'est un module standard. A leur création ils sont nommés Module1, Module2, Module3, etc...

    Ci-dessous le code écrit différement pour plus de compréhension
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub test2()
    Dim i As Byte, Chemin As String, NomFich As String
     
    Chemin = "D:\Divers\Macro\tests\"
    NomFich = "Page_test"
     
    For i = 1 To Sheets.Count
    ActiveWorkbook.PublishObjects.Add(SourceType:=xlSourceSheet, Filename:=Chemin & NomFich & i, Sheet:=Sheets(i).Name).Publish
    Next
     
    End Sub
    Ce code permet-il de faire un lien entre les differentes page HTML parce que j'ai des lien hypertexte entre les feuilles
    Forcément...non ! Au départ tu as des liens hypertexte interne dans un classeur, ceux-ci ne fonctionneront plus puisque tu éclates ce classeur en différentes pages html. Je n'ai jamais jonglé avec ça mais d'après moi il faudra renommer les liens

  8. #28
    Nouveau membre du Club Avatar de Léponge85
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 77
    Points : 36
    Points
    36
    Par défaut
    Merci beaucoup pour avoir refait avec plus de clarter.
    J'ai fait comme tu ma dit le mettre dans un module mais ca ma fait toujours la même erreur. " Erreur d'exécution '1004' "
    Merci encore pr tout

  9. #29
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Je suppose que tu as adapté le Chemin et que tu n'as pas laissé D:\Divers\Macro\tests\ ?

  10. #30
    Nouveau membre du Club Avatar de Léponge85
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 77
    Points : 36
    Points
    36
    Par défaut
    Oups
    non je suis vraiment nul
    C'est le chemin de quoi ?

  11. #31
    Nouveau membre du Club Avatar de Léponge85
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 77
    Points : 36
    Points
    36
    Par défaut
    C'est bon merci sa marche.
    Mais par contre les lien hypertextes ne marche pas
    Crois tu que a partir de sa il serai possible de mettre en plus le lien entre les differentes page.
    Merci encore pr tout

  12. #32
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    mmmmmm...franchement...D:\Divers\Macro\tests\...cela ne t'inspire pas quelque chose ?

    C'est le chemin où il va enregistrer, sur ton pc, toutes tes pages html

    Remplace D:\Divers\Macro\tests\ par C:\
    Tu devines où les pages seront enregistrées ?

  13. #33
    Nouveau membre du Club Avatar de Léponge85
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 77
    Points : 36
    Points
    36
    Par défaut
    Oui c'est bon sa marche
    merci beaucoup
    Mais par contre tu avai reson sa n'a pas du tout garder les liens hypertextes.
    Croi tu qu'a partir de se code il serai possible de faire le liens entre les pages pour pouvoir retrouver les liens hypertexte au format html

  14. #34
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Désolé, je ne sais pas comment récupérer les liens et les modifier, ça entraîne d'après moi la construction d'une usine à gaz...!
    1. il faut parcourir toutes les cellules et vérifier celles qui contiennent une sous-adresse
    2. arriver à récupérer dans cette sous-adresse le nom de la feuille renseignée
    3. convertir cette sous-adresse vers une adresse html en renseignant la bonne page


    Bon courage !

  15. #35
    Nouveau membre du Club Avatar de Léponge85
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 77
    Points : 36
    Points
    36
    Par défaut
    Wow
    j'ai pas tout compris lol
    sa m'a l'aire compliquer tout ca!!
    j'ai travaillé dessus toute l'aprem la et j'ai toujours pas avancé donc je vais voir ce que tu me propose.
    Mais j'ai pas tout saisie lol
    Merci encore

  16. #36
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Bon...après quelques essais, ceci devrait se rapprocher de ce que tu souhaites obtenir.

    Fais le test avec une copie de ton fichier parce que les liens vont être renommés !

    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
    Sub test2()
    Dim i As Byte, Chemin As String, oLink As Hyperlink
    Dim Cel As Range, Lien As String, LienFeuille As String
     
    Chemin = "C:\"
     
    For i = 1 To Sheets.Count
        For Each Cel In Sheets(i).Range("A1:K50")
            If Cel.Hyperlinks.Count > 0 Then
                Lien = Cel.Hyperlinks(1).SubAddress
                If Lien <> "" Then
                    Cel.Hyperlinks.Delete
                    LienFeuille = Split(Lien, "!")(0)
                    Set oLink = Sheets(i).Hyperlinks.Add(Cel, LienFeuille & ".htm")
                End If
            End If
        Next
     
    ActiveWorkbook.PublishObjects.Add(SourceType:=xlSourceSheet, Filename:=Chemin & Sheets(i).Name & ".htm", Sheet:=Sheets(i).Name).Publish
    Next
     
    End Sub

  17. #37
    Nouveau membre du Club Avatar de Léponge85
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 77
    Points : 36
    Points
    36
    Par défaut
    Salut je viens d'embauché et je viens de voir ton message
    Merci encore je vais tester sa et je te tien au courant.
    Merci encore pr tout

    RE c'est deja moi lol
    Je viens d'essayer le code et il y a une erreur qui me dit:

    "Erreur d'execution '1004'":
    La methode 'Publish' de l'objet 'PublishObject' a échoué

    Merci encore pour ta patience et ton aide

  18. #38
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Le plus souvent, c'est bien d'indiquer la ligne de l'erreur, ça aide
    Merci.

  19. #39
    Nouveau membre du Club Avatar de Léponge85
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 77
    Points : 36
    Points
    36
    Par défaut
    J'ai encore une question, Range("A1:K50") cela reprend quoi comme plage de cellule? parceque moi je dessen parfoi jusque presque 2000 cellules.
    Merci encore

    DSL
    l'erreur est ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveWorkbook.PublishObjects.Add(SourceType:=xlSourceSheet, Filename:=Chemin & Sheets(i).Name & ".htm", Sheet:=Sheets(i).Name).Publish

  20. #40
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Citation Envoyé par Léponge85 Voir le message
    J'ai encore une question, Range("A1:K50") cela reprend quoi comme plage de cellule?
    Désolé, sans vouloir te vexer, mais là...laisse tombé, cela va être impossible à gérer, on ne peux pas te demander de faire ce genre d'acrobatie si tu n'as pas la moindre base en VBA.

    Ou montre un minimum de bonne volonté...

Discussions similaires

  1. Génération d'une page HTML à partir de XML et XSL
    Par clubist dans le forum Servlets/JSP
    Réponses: 10
    Dernier message: 06/12/2010, 11h21
  2. génération d'une page html à partir d'une asp
    Par bouzakher dans le forum ASP
    Réponses: 7
    Dernier message: 29/01/2009, 21h56
  3. Réponses: 7
    Dernier message: 14/05/2007, 16h31
  4. Génération des pages HTML à partir d'un programme.
    Par marcandre dans le forum Langage
    Réponses: 6
    Dernier message: 26/03/2007, 17h13
  5. Afficher une page HTML à partir de code HTML
    Par lilou77 dans le forum Interfaces Graphiques en Java
    Réponses: 1
    Dernier message: 18/01/2007, 11h52

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