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

  • Initiateur de la discussion Initiateur de la discussion Dudu2
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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.
 
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

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

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
1662911910035.png
 
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
demo.gif



puré c’a a dépoté
 

Pièces jointes

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.
 
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:
1662919245763.png

Avec ton code:
1662919334991.png

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.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour