Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

Dudu2

XLDnaute Barbatruc
Ok, tu enverras une nouvelle version ou tu en restes la ?
Perso, je préfèrerais que tu nommes les images avec un système séquentiel qu'avec le Shape.Name.
De toutes façons, par le For Each shp in ... c'est la même séquence en création des fichiers et en insertion dans la table HTML.
 

patricktoulon

XLDnaute Barbatruc
Il y a peut-être un problème à nommer les images du nom des Shapes / DeawingObjects car on peut avoir des noms identiques pour 2 ou plusieurs d'entre elles / eux. Publish les numérote en séquence.
les images sont enregistrées dans l'ordre de construction du fichier xl elle sont renommées comme tel
il est évident que si tu met plusieurs shapes d'un même nom on va avoir des problèmes
l'application ne peut pas gérer c'est a l’utilisateur de faire la part des chose un minimum quand même
et quoi que je pourrait très bien me passer de les renommer

tu dis que publier les renomme avec une incrementation oui sauf que pour chaque image il y en a deux c'est ballo!!

donc conclusion on reviens sur le test right(fl.name,4) pour png
on supprime carrément le renommage des images (c'etait purement pratique pour verif )
pas vraiment nécessaire car les image sont enregistrées dans l'ordre d'insertion dans le fichier
et elle sont redistribuées dans le même ordre
conclusion version 4.6
et Woilaaaaa

pour info j’irais même plus loin
aucune image ne porte le meme nom a la fin car ce sont des copies et là!!! ca s'incremente tout seul
 

Pièces jointes

  • 11Range to Html by code early bindig 2022 V 4.6.xlsm
    451.2 KB · Affichages: 3

patricktoulon

XLDnaute Barbatruc
hoh!! lalala !!!!
tu a raison la boucle for each cause probleme en cas de nom identique de plusieurs shappes
je corrige avec cet essaie dis moi si c'est bon chez toi
lance la macro
elle te construit 10 shapes différente dans un perimetre et te les enregistre dans le dossier images sur le bureau

pour le reste la 4.6 elle fonctionne?? ou pas
 

Pièces jointes

  • pour dudu2.xlsm
    23.4 KB · Affichages: 0

Dudu2

XLDnaute Barbatruc
La 4.6 fonctionne oui !

Tu as oublié de mettre la modif du post #258.

Mais est-ce normal que le HTML commence comme ça avec les noms des images au début ?
HTML:
image1.png
image2.png
<br>&nbsp;<div style="position: absolute;">...
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
re
oui je vais faire le nettoyage après t'inquiet
la new png file tu la essayé
tu a vu je fait le test je construit 10 shapes différentes et je les sauve en png
est que l'ordre des lignes correspond chez toi au index des images dans le dossier ?

je vais voir pour ces deux lignes images je sais pas d'ou ça vient
edit:
chez moi ca commence bien
 

patricktoulon

XLDnaute Barbatruc
je sais pas il vient de moi peut etre
mais ce genre de test il faut les laisser pour éventuellement dépister ou se trouve l’éventuelle erreur

terminé
4.7
1°nettoyage des modules

2°séparation dans différents modules des sub de test html/outlook

3°mise a jour de la fonction image to png file avec l' adaptation de la version 3.6 du même nom
elle gère maintenant les drawingobjects de même nom

4° démonstration dans feuille 4 avec des bouton avec le onaction avec argument (c'est le bouton qui envoie l'adresse de la plage

c'est encore toi qui teste tout ça en premier

la mise a jour dans la ressource est en route
testé sur 2007 /2013/2016 en 32 bits

un petit coup pour la route



puré c’a a dépoté
 

Pièces jointes

  • 11Range to Html by code early bindig 2022 V 4.7.xlsm
    451.7 KB · Affichages: 3

Dudu2

XLDnaute Barbatruc
tu a vu je fait le test je construit 10 shapes différentes et je les sauve en png
est que l'ordre des lignes correspond chez toi au index des images dans le dossier ?
Non, je n'ai pas eu le temps.

Je ne comprends pas ton questionnement.
- Dans DrawingObjects_To_Png_File() tu captes les images dans une boucle For Each ShP In Rng.Parent.DrawingObjects.
Les images sont nommées en séquence: image1.png, image2.png etc..

- Dans PutShapOnHtmlOutlook() tu boucles sur For Each shap In Rng.Parent.DrawingObjects
Donc l'ordre où tu les récupères ici est le même que dans la boucle précédente et la séquence est toujours correcte.
 

patricktoulon

XLDnaute Barbatruc
ok bon app
et pour la boucle for each elle déraille avec des shapes qui ont le même nom dans le dossier on a toujour la dernière du même nom
c'est pour ça que j'ai changé avec la boucle index (i) comme ca il n'y a pas d’ambiguïté quel que soit le nom quelle porte
 

Dudu2

XLDnaute Barbatruc
Alors pour revenir à mon petit souci...
En fait, le HTML généré fonctionne pour le placer directement dans un fichier .htm.
Mais, je voudrais pouvoir intégrer des éléments HTML (du simple texte par exemple) avant et après.

Si HTML est le code final généré pour le Range et TS un fichier .htm,
VB:
TS.write "Voici le Range et ses objets en format HTML" & HTML & "Terminé"
Avec Publish:

Avec ton code:

Différences:
1 - Un saut de ligne supplémentaire dans ton code au début (ce n'est pas critique)
2 - le mot "Terminé" n'apparait pas

Ça me semble important qu'on puisse intégrer le HTML généré du Range avec ses Objets dans un HTML quelconque qui le contient.
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…