XL 2016 VBA - Range to HTML incluant les objets de la feuille (boutons, images, ...)

Dudu2

XLDnaute Barbatruc
Bonjour,

Je n'ai rien trouvé qui fonctionne pour convertir un Range en HTML qui inclurait tout ce qu'il y a dans le Range en question.

J'ai bien récupéré la fonction de Ron de Bruin omni-présente sur le Web qui fonctionne uniquement pour les valeurs de cellules et leurs formats, sauf pour les tableaux structurés qui ne sont pas en exclusivité dans le Range qui perdent alors leurs formats (qui n'en sont pas vraiment !).
 

Pièces jointes

  • Classeur1.xlsm
    261.1 KB · Affichages: 11

patricktoulon

XLDnaute Barbatruc
re
ah ...
je sais pas si tu a fait une fusion dans le coin mais comme je te l'ai dis
avec les fusion il y a des choses que fait excel qui sont impossible encss2 en html les moitié de bordures ca n'existe pas en html
il faut passer par border-image

oui je sais pour les activX avec publier et je te parle meme pas des bordures sur des fusion croisées il les zape tout bonnement moi j'en récupère le max possible et compatible html
comme je te l'ai dis la seule solution c'est de tout construire
c'est ce que je fait avec ma méthode
 

patricktoulon

XLDnaute Barbatruc
regarde par exemple avec FF le rendering
ca c'est excel
1663000315885.png

en zoom normal ff ca va pas et quand je zoom on vois bien que c'est une bordure double
demo.gif
 

patricktoulon

XLDnaute Barbatruc
non non c'est bien publier aussi je viens de tester
en plus regarde le dossier image et comment veux tu choisir une image toi qui va a qui et a quoi et pour couronner le tout regarde celle tout a fait a droite
c'est une capture de groupes d'image va savoir pour quoi il fait ça
1663003178918.png


non moi publier c'est mort et en plus sur outlook 2013 c'est un carnage
 

Dudu2

XLDnaute Barbatruc
Oui, j'ai aussi essayé d'utiliser Publish pour récupérer les fichiers car c'est rapide.
Mais comme tu l'indiques ci-dessus, Publish créé plusieurs images pour une seule, parfois créé une image de plusieurs images et donc c'est totalement inexploitable.

comme je te l'ai dis la seule solution c'est de tout construire
c'est ce que je fait avec ma méthode
En effet, la méthode que tu as codée et qui suscite toute mon admiration car je ne comprends que 10% de ton code est celle qu'il faut utiliser pour éviter les risques de discordance entre le Range et sa représentation HTML.

Par contre je te confirme que c'est bien le Paste du Range.Copy qui exclut les Controls ActiveX.
En copiant ces contrôles par code pour compléter le Paste, Publish les prend en compte comme tu peux le constater avec ce fichier.
 

Pièces jointes

  • RangeToHTMLBase64WithPublish.xlsm
    288.9 KB · Affichages: 0

patricktoulon

XLDnaute Barbatruc
re j'ai tellement bossé pour te l'adapter à outlook que maintenant sans les corrections bordures pour outlook c'est nickel par contre pour le web c'est pas bon

regarde oulook sans correction bordure
1663012046933.png



et maintenant regarde FF sans correction bordure
1663012119694.png

pourtant c'est exactement le même code pour outlook et le fichier web
 

patricktoulon

XLDnaute Barbatruc
re
Bonjour @Dudu2
aujourd'hui je reviens sur la 4.8 car le displayGridline ne me conviens pas trop dans le sens ou ca ne fonctionne pas comme tu veux à 100%

j'ai donc fait le test ultime pour les bordures de fusion inter croisée à outrance
et j'en ai raccourci le code
alors c'est pas parfait mais on voit bien que mon résultat est bien meilleur que le publish
démonstration

original excel
1663047684471.png


version publish
1663047741170.png


version avec ma fonction
1663047845842.png


voila c'est pas parfait mais le résultat est largement supérieur a publish
 

Dudu2

XLDnaute Barbatruc
Bonjour @patricktoulon,
Je ne doute pas un instant que pour Outlook au moins, ton code est indispensable car Outlook ne sait pas utiliser le code de Publish. Et Outlook l'objectif principal. Le code Web Browser est accessoire.

Il y a un petit bug sur la couleur du "1" de "B1" passé du noir au rouge et qui est masqué par la flèche.
 

patricktoulon

XLDnaute Barbatruc
re
a oui j'ai vu
je l'avais mis en rouge puis remis en noir et visiblement dans le xml du sheet il n'a pas corrigé
j'ai bien verifié dans le xml du sheet et le 1 de "B1" était bien en rouge alors que sur la feuille il est noir
c'est bizarre ça quand même il doit y avoir de belles fuites mémoire
 

Discussions similaires

Statistiques des forums

Discussions
314 017
Messages
2 104 587
Membres
109 084
dernier inscrit
mizab