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

patricktoulon

XLDnaute Barbatruc
ok j'ai trouver une divergence dans le xml de la feuille
il doit y avoir une différence de gestion des fusions dans ta version d'excel

change ça et ca marche sur la 4.3
VB:
 On Error Resume Next 
 le backgraound (Attention!!! 'displayformat(version sup à 2007)
 If cel.Cells(1).Interior.Color <> vbWhite Then .BackgroundColor = coul_XL_to_coul_HTMLX(cel.Cells(1).Interior.Color)
 If cel.Cells(1).DisplayFormat.Interior.Color <> vbWhite Then .BackgroundColor = coul_XL_to_coul_HTMLX(cel.Cells(1).DisplayFormat.Interior.Color)
 On Error GoTo 0

ouvre le fichier 4.5 fait quelque chose dedans met quelques chose dans une cellules et enregistre le et redonne le moi
 

Dudu2

XLDnaute Barbatruc
Ta modif de 4.3 fonctionne.

Ceci dit, il manque la bordure gauche de la cellule X1



La cellule X1 a les bordures définies en Left / Top / Bottom (PAS en Right)
La cellule à droite de X1 a la bordure définir en Left.
 

patricktoulon

XLDnaute Barbatruc
pour la bordure gauche manquante sur les bordure des premiere cellules de la plage
c'est dans la partie correctif des bordures que ca se passe

VB:
If cel.Column > 1 Then    'bordures left
                                For Each c In cel.Offset(, -1)
                                    If c.Column > cel.Cells(1).Column Then
                                    If c.Style.Borders(9).Color <> cel.Borders(7).Color Then .borderleft = 0
                                End If
                                Next
                            End If

et il faudra à tout les coups sans doute ajouter le control de la bordure(9) (right) de la cells( cells.count) de Cel

après ne rêve pas les bordures de fusions sont encore moins bien gérées avec la méthode publier
tout simplement par ce que c'est imcompatible avec les bordure des cellules de table HTML
 
Dernière édition:

Dudu2

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.
 

Dudu2

XLDnaute Barbatruc
Ça plante chez moi car et pas Fl.Type = "Image PNG".
Car j'ai installé IrfanView pour remplacer le viewer Windows de photos qui active parfois un programme qui pompe toute la CPU.
 

Pièces jointes

  • 1662894397777.png
    5.6 KB · Affichages: 1

patricktoulon

XLDnaute Barbatruc
re
d'acords on peu faire ça aussi
mais si tout le monde y met son viewer et que les user 32 renvoie leur nom prefixés on va pas s'en sortir alors
donc on remet comme au début
if right(fl.name,4)=".png"then ' et ce sera tout bon
 

Discussions similaires

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