Copier cellules excel dans htmlbody

[Résolu]
Signaler
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
-
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
-
 Bonjour à tous....

Sur un server local, j'ai un fichier .xls (une seule feuille) dans lequel plusieurs utilisateurs
renseignent certaines cellules (text + coloriage).

Dans le bout de code ci-dessous, j'arrive à insérer le contenu (texte) des cellules de ce .xls
dans le HTMLBody d'un mail (via CDO.Message).

Questions:
- Comment reproduire le contenu de mes cellules (objExcel.Selection.Interior ou ColorIndex) ????;
- Y-a-il une autre méthode pour arriver à copier/coller le contenu et la mise en forme exacte de mes cellules ???

Pour la 2ème question, la réponse est OUI, mais je n'arrive pas (après 3h
de recherches sur google) à retrouver un script vbs qui répondait à cette question !!!

Je code en vbs, mais, même les propositions en vb6 seraient les bienvenues.
Merci de votre attention.

Dim str
str = "<HTML>"
str = str & "Bonjour,

"


str = str & "\"
intRow = intRow + 1
str = str & \" ----
\"
str = str & \" " & objExcel.Cells(intRow,1).Value & ", \"
str = str & \" " & objExcel.Cells(intRow,2).Value & ", \"
str = str & \" " & objExcel.Cells(intRow,3).Value & ", \"
str = str & \" " & objExcel.Cells(intRow,4).Value & ", \"
str = str & \" " & objExcel.Cells(intRow,5).Value & " , \"
str = str & \"\"
str = str & "
"

jean-marc

4 réponses

Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Salut,

pour récupérer la couleur de la cellule excel et la transformer en couleur HTML, il faut utiliser la fonction de PCPT :

Function GetHtmlColorFromOleColor(ByVal lCol As OLE_COLOR) As String
    Dim R%, G%, B%
    R =  Int(lCol And &HFF)
    G = Int((lCol And &H100FF00) / &H100)
    B = Int((lCol And &HFF0000) / &H10000)
    GetHtmlColorFromOleColor = "#" & Format$(Hex(R), "00") & Format$(Hex(G), "00") & Format$(Hex(B), "00")
End Function

~<small> Mortalino </small>~

Exemple utilisation :

MsgBox GetHtmlColorFromOleColor(Range("A1").Interior.Color)
>> j'ai fait le test avec fond rouge, j'ai vérifié le résultat, il est bon.

Après c'est à toi de déterminer le format de cellule, à savoir si c'est en gras, centré, italique, etc... puis de le transposer en html.

Pour infos, voici un exemple de balise pour faire de "cases" :
"<table border =1 width=""800"" height=""50"" cellspacing=""0"">"

@++

<hr width="100%" size="2" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
Messages postés
256
Date d'inscription
mardi 25 novembre 2003
Statut
Membre
Dernière intervention
6 novembre 2009
1
Salut,
Ton problème illustre bien ce que j'appelle le "syndrome du wysiwig".
Tu ne pourras jamais obtenir une image strictement fidèle de ta mise en page excel avec du simple code html.
A la rigueur, tu peux imaginer une règle de transformation qui soit satisfaisante, à l'aide d'une feuille de style par exemple, et soyons ambitieux, que cette feuille de style s'applique à un fichier excel au format xml mais c'est pas simple...

Ou alors, tu "embedde" ton classeur excel directement dans une page web, ce qui te permettrait "d'importer" les possibilités d'excel dans un environnement web.


Apparament tu utilises le mail pour que chacun mettre à jour les cellules qui le concernent.


Tu sais que tu peux aussi partager ton fichier excel et synchroniser les différentes versions, ce qui te permettrais de rester dans le "standard"...


Ce ne sont que quelques pistes....






Jcbé[^]
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
26
 Bonjour à tous....

Merci 198370 TMONOD  de ta réponse,
En fait, sur site d'infogérance, des utilisateurs (Téléphonie, Windows, AS400...) renseignent
le fichier du jour, après leurs contrôles respectifs.

<colgroup><col style =\"WIDTH: 90pt; mso-width-source: userset; mso-width-alt: 4388\" width=\"120\" /><col style=\"WIDTH: 60pt\" span=\"2\" width=\"80\" /><col style=\"WIDTH: 80pt; mso-width-source: userset; mso-width-alt: 3913\" span=\"2\" width=\"107\" /><col style=\"WIDTH: 72pt; mso-width-source: userset; mso-width-alt: 3510\" width=\"96\" /><col style=\"WIDTH: 60pt\" width=\"80\" /></colgroup>----
ENVIRONNEMENT, RESEAU, SYSTEMES, SAUVEGARDES, APPLICATIONS, TRAITEMENTS, , ----
TELEPHONIE,  ,  ,  ,  ,  , , ----
AS400,  ,  ,  ,  ,  , , ----
NT/2000,  ,  ,  ,  ,  , , ----
, , , , , , , ----
 , Résultat OK,  , Probléme non Bloquant,  , Problème bloquant, ----
, , , , , , , ----
, , , , , , , ----
Synthése des incidents :,  ,  ,  ,  , , ----
 , , , , ,  , , ----
 , , , , ,  , , ----
 , , , , ,  , , ----
 , , , , ,  , , ----
 , , , , ,  , , ----
 , , , , ,  , , ----
 , ,   , , ,  , , ----
 , , , , ,  , , ----
 , , , , ,  , , ----
 , , , , ,  , , ----
 ,  ,  ,  ,  ,  

Mon souhait étant d'optimiser la création du fichier .xls du jour (par rapport à un modèle - ok),
puis la dernière personne à renseigner devra envoyer ce fichier au client.
Pour l'instant, le fichier .xls est en pièce jointe.
Ce fichier se résumant aux cellules A1-F1 jusqu'à A26-F26, je trouve plus convivial d'incruster
le contenu dans le mail plutôt qu'en pièce jointe.

jean-marc
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
26
 Re,

Merci Mortalino,

Effectivement, la function RGB existe aussi en vbs, mais je ne l'ai jamais utilisée.
RGB([ red], [ green], [ blue])

Arguments
* : redNombre de 0 à 255 représentant la composante rouge de la couleur. * : green<dd>Nombre de 0 à 255 représentant la composante verte de la couleur. * : blue<dd>Nombre de 0 à 255 représentant la composante bleue de la couleur.

Je n'ai plus qu'à tester !!!

jean-marc