c'est quasi au point
c'est quasi au point
mes fichiers dans les contributions:
mail avec CDO en vba et mail avec CDO en vbs dans un HTA
survol des bouton dans userform
prendre un cliché d'un range
si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
et n'oublie pas de voter
C'est formidable !
Tu crois que cette fonction serait compatible avec des USF multi-fenêtres ?
Pour la contribution tu acceptes le Riesling, ou tu reste au Bandol ?
Denis
hihi manque de pot je ne bois pas une petite bière de temps en temps avec les pots
c'est quoi usf multifenêtre
il faut que je sache tout hein pour le moment je travaille avec les exemple de ton fichier ma fonction est compatible pour tous
pas si facile de gérer le dom en vb avec ou après intégration des éléments
pour le moment tout ce qui est textbox ,label ,checkbox ,option bouton sont bien restitués pour les 5 exemples d'userforms
bien sur avec la même macro
reponds moi a la question
mes fichiers dans les contributions:
mail avec CDO en vba et mail avec CDO en vbs dans un HTA
survol des bouton dans userform
prendre un cliché d'un range
si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
et n'oublie pas de voter
Tiens il y a de la bière à Toulon ici à part la K on a encore la chance d'avoir une grande brasserie familiale METEOR et un peu comme partout des micros brasseries, je m'y suis essayé aussi.
On pourrait ajouter une rubrique recettes de bières.
Bon pas de panique pour les multifenêtres, ce sont des frames.
Mais je cite cela juste pour le fun, car je ne vais pas les utiliser, mon collègue a fait le "max" en créant cet USF, mais je vais réduire à une seule standard.
Je te joins néanmoins l'exemple pour que tu te fasses une idée.
Dans ce cas on enverrait la frame active !
l'USF est dans le ZIP
J'ai hate de tester le générateur d'html depuis un USF.
bonne soirée
Denis
ah ok
bon alors non tu te trompe c'est pas les frames perso qui me posent problème puisque de toutes façon leur homologues "iframe" en html ne sont a 95% pas accepter dans les app mail
moi ce qui me pose soucis la en l'etat c'est la gestion du control multipage je cherche a repiquer que les controls qui sont dans la page active mais c'est une belle galère
les controls"frame a proprement parler je ne les reproduit pas en html ni les boutons ni destinataire car le destinataire n'a pas besoins de le voir tu comprends
je bosse sur le multipage
des que cela sera bon je te donnerais un premier jet du module
mes fichiers dans les contributions:
mail avec CDO en vba et mail avec CDO en vbs dans un HTA
survol des bouton dans userform
prendre un cliché d'un range
si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
et n'oublie pas de voter
Coucou
Je dirais un mot de tout cela in fine. Il concernera ce qui est important (et ce n'est pas l'image de l'interface, qui l'est, mais les seules données à communiquer, alerte comprise)
Une image de l'interface ne fait que "noyer". Si le destinataire doit de surcroît l'imprimer (ou même simplement sauvegarder sur disque dur) -->> bonjour les coûts (papier ou mémoire).
Un simple petit tour dans un laboratoire d'analyses biologiques vous fera prendre conscience de l'énorme différence existant entre l'interface utilisée par les laborantins et le document recensant les résultats.
Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .
****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...
Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.
@jaques
d'après ce que j'ai compris il a une centaines de userforms si tant est que se soit possible
il lui faudrait autant de plage formatée avec theme (et différentes en plus ) pour les envoyer en image ou même en ce que tu veux
tu imagine le truc ???
la il a un bouton clique et ca imite l'interface rempli en html qu'il pourra mettre même dans le corps du mail
je suis d'accord avec toi il y a un gros problème de conception a la base ca c'est sur
et il a d'autre contraintes aussi qui ont été précisées antérieurement
@denis
j'ai un léger soucis de placement mais j'avance
comme tu peux le voir je fait sauter la frame et le multipage le destinataire n'en a pas vraiment besoins
mes fichiers dans les contributions:
mail avec CDO en vba et mail avec CDO en vbs dans un HTA
survol des bouton dans userform
prendre un cliché d'un range
si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
et n'oublie pas de voter
Bonjour Patrick
Oh que oui ! Je "vois" surtout personnellement que si, étant en charge d'une entreprise, je découvrais l'existence de tels procédés, je ruerais dans les brancards, enverrais tout à la poubelle et ferais appel à un prestataire de services compétent.tu imagine le truc ???
Enfin quoi : crois-tu qu'un laboratoire d'analyses biologiques (mon analogie) n'a pas à traiter des choses bien plus diversifiées ? Tu plaisantes ?
Je vais te souffler (à prendre au vol) un truc/méthode élémentaire (le plus souvent utilisé un peu partout) :
- utilisation de la propriété tag des contrôles de l'userform pour décider de ce qui doit être traduit en simple document.
- travail en miroir
Bon ben ... je vous laisse continuer avec ce "machin"-là ...
Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .
****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...
Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.
Patrick te casses surtout pas la tête avec les Frames.
Comme précisé je vais les faire sauter.
unparia, je suis également 100% d'accord avec toi, mais comme je l'ai précisé plus haut, c'est parce que je n'ai aucune latitude pour acheter une solution que je me suis lancé dans ce pari fou.
Je précise le besoin quand même, il ne s'agit nullement de créer un outil de gestion. Nous avons la solution complète d'un grand éditeur allemand ....
Nous avons actuellement une 100aine de modèles de messages LotusNotes qui sont utilisés par tous les collaborateurs de l'entreprise pour signaler diverses choses inter-services, des dysfonctionnements, des informations de déplacements de visite etc ...
1er handicape aucun propriétaire local pour modifier une virgule; il faut faire une demande à une instance centrale, tu imagines le classement dans la priorité.
2)ième handicap, pas de sauvegarde du contenu, donc chaque responsable de domaine recopie manuellement des contenus de messages pour alimenter des classeurs. je leur offre en parrallèle le remplissage de leur classeur de suivi des messages.
3) Enfin nous migrons vers Outlook et il m'a été répondu que les modèles ne seraient pas traités avant au moins 6 mois.
ça c'est la réalité du terrain de grandes entreprises qui centralisent.
Alors on se débrouille en local!
au fait dans une autre vie j'ai dépanné des systèmes de laboratoire ....
Je comprends tout à fait ta réaction.
re
hihi !! crois tu que n'y ai pas songéJe vais te souffler (à prendre au vol) un truc/méthode élémentaire (le plus souvent utilisé un peu partout) :
- utilisation de la propriété tag des contrôles de l'userform pour décider de ce qui doit être traduit en simple document.
- travail en miroir
mais 100 userforms a reproduire sur un tableau dans sheets avec thèmes et compagnie sans parler d'eventuelles modifications !!!!!
ici je prend simplement un cliché du n'importe quel userform en html
le code html de celui ci pouvant etre placé dans le corps(body) du mail (avec ou sans piece jointe)
prévoir 100 tableau différents en html ou même dans le sheets masque ca me parait un peu gros
ca reste réalisable
je renommerais effectivement ou tagerais les control avec l'addresse des cellules
que l'on pourrait prendre en cliché image JPG voir même pdf
mais ca c'est a Denis a le décider
mes fichiers dans les contributions:
mail avec CDO en vba et mail avec CDO en vbs dans un HTA
survol des bouton dans userform
prendre un cliché d'un range
si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
et n'oublie pas de voter
ce vois que ca bosse...
Tu as bien cerné mon problème suite à nos échanges
je ne comprends pas (à ce stade) ce que j'aurais à décider
Encore mercije renommerais effectivement ou tagerais les control avec l'addresse des cellules
que l'on pourrait prendre en cliché image JPG voir même pdf
mais ca c'est a Denis a le décider
Denis
au stade ou j'en suis
ajoute un module
met lui tout ce code
ajoute un bouton dans l'usf que tu veux et met dans son evenement click ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106 Sub transform_usf_tableauhtml(usf) nocontrol = "Destinataires_Lab " ppx = 4 / 3 With CreateObject("htmlfile") .body.innerhtml = "<DIV></DIV>" Set div = .getelementsbytagname("DIV")(0) With div.Style: .Width = usf.InsideWidth * ppx: .Height = usf.InsideHeight * ppx: .backgroundcolor = coul_XL_to_coul_HTMLX2(usf.BackColor) .Position = "absolute" End With ind = 100 For Each ctrl In usf.Controls toplus = 0 If ctrl.Parent.Name Like "*Page*" Then ind = ctrl.Parent.Parent.Value + 1 Set parnt = ctrl.Parent.Parent For i = 1 To 10 If parnt.Name <> usf.Name Then toplus = toplus + parnt.Top Set parnt = parnt.Parent If parnt.Name = usf.Name Then Exit For End If Next par = "Page" & ind Else par = usf.Controls(1).Parent.Name End If Debug.Print par & "__" & ctrl.Parent.Name & ":::" & "Page" & ind If Not nocontrol Like "*" & ctrl.Name & "*" Or ctrl.Parent.Name = par Then 'Debug.Print ctrl.Name & " : " & ctrl.Parent.Name Select Case TypeName(ctrl) Case "CommandButton" Case "Label" Set t = .createelement("div") t.ID = ctrl.Name Set subt = .createelement(IIf(UBound(Split(ctrl.Caption, vbCrLf)) > 0, "textarea", "INPUT")) subt.innertext = ctrl.Caption With subt.Style .Width = "100%": .Height = "100%": .Color = coul_XL_to_coul_HTMLX2(ctrl.ForeColor) .fontfamily = ctrl.FontName: .FontSize = IIf(UBound(Split(ctrl.Caption, vbCrLf)) > 0, (ctrl.FontSize - 1) * ppx, ctrl.FontSize * ppx) .TextAlign = IIf(ctrl.TextAlign = 2, "center", "left") .FontWeight = IIf(ctrl.Font.Bold, "bold", "normal") couleurfond = coul_XL_to_coul_HTMLX2(ctrl.BackColor) If couleurfond <> "#0F0000" Then subt.Style.backgroundcolor = couleurfond Else subt.Style.backgroundcolor = coul_XL_to_coul_HTMLX2(&HE0E0E0) End If End With t.appendchild (subt) div.appendchild t Case "TextBox" Set t = .createelement("div"): t.ID = ctrl.Name Set subt = .createelement(IIf(UBound(Split(ctrl.Value, vbCrLf)) > 0, "textarea", "INPUT")) subt.Value = ctrl.Value With subt.Style .Width = "100%": .Height = "100%": .FontSize = ctrl.FontSize * ppx: .Color = coul_XL_to_coul_HTMLX2(ctrl.ForeColor) .fontfamily = ctrl.FontName .TextAlign = IIf(ctrl.TextAlign = 2, "center", "left") If ctrl.Font.Bold Then .FontWeight = "bold" couleurfond = coul_XL_to_coul_HTMLX2(ctrl.BackColor) If Hex(ctrl.BackColor) <> 80000005 Then subt.Style.backgroundcolor = couleurfond Else subt.Style.backgroundcolor = coul_XL_to_coul_HTMLX2(vbWhite) End If End With t.appendchild (subt) div.appendchild t Case "OptionButton" Set t = .createelement("div") t.ID = ctrl.Name t.Style.FontSize = "13px" Set subt = .createelement("INPUT") r = subt.setattribute("type", "radio") t.appendchild (subt) Set F = .createelement("FONT") F.Size = 1 t.innerhtml = t.innerhtml & ctrl.Caption div.appendchild t If ctrl = True Then .GETELEMENTBYID(ctrl.Name).Children(0).Checked = True End Select If Not .GETELEMENTBYID(ctrl.Name) Is Nothing Then t.Style.Position = "absolute" t.Style.Left = ctrl.Left * ppx t.Style.Top = (ctrl.Top + toplus) * ppx t.Style.Width = ctrl.Width * ppx t.Style.Height = ctrl.Height * ppx t.Style.Color = coul_XL_to_coul_HTMLX2(ctrl.ForeColor) t.Style.backgroundcolor = coul_XL_to_coul_HTMLX2(ctrl.BackColor) End If End If Next 'Debug.Print .body.innerhtml Set ie = CreateObject("internetexplorer.application") ie.Visible = True ie.navigate "about:blank" ie.document.write "<p>salut voila ton userform en html</p>" & vbCrLf & .body.innerhtml End With End Sub Function coul_XL_to_coul_HTMLX2(couleur) Dim str0 As String, strf As String str0 = Right("000000" & Hex(couleur), 6): strf = Right(str0, 2) & Mid(str0, 3, 2) & Left(str0, 2) coul_XL_to_coul_HTMLX2 = "#" & strf & "" End Function
Code : Sélectionner tout - Visualiser dans une fenêtre à part transform_usf_tableauhtml Me
mes fichiers dans les contributions:
mail avec CDO en vba et mail avec CDO en vbs dans un HTA
survol des bouton dans userform
prendre un cliché d'un range
si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
et n'oublie pas de voter
Merci Patrick,
je viens d'intégrer le code, pour l'instant j'ai une erreur 424 object requis
je cherche, je vais repartir sur une application simple d'abord.
Code : Sélectionner tout - Visualiser dans une fenêtre à part With div.Style: .Width = usf.InsideWidth * ppx: .Height = usf.InsideHeight * ppx: .backgroundcolor = coul_XL_to_coul_HTMLX2(usf.BackColor)
re
pour ma part j'ai cerner le problème de placement
étonnamment la page 1 du multipage n'est pas listée correctement il me trouve une frame alors que je ne la trouve pas en mode Edition
par contre les autres pages sont bien listées
je n'ai aucune idée du pourquoi
ca veut dire quoi application normal ?
pour l'erreur je soupçonne que tu n'injecte pas l'userform dans la sub
je vois que ca sinon ca veut dire que l'object html document ne se créé pas alors on a un sérieux problème de librairies
au quel cas je ne peux plus rien pour toi si ce n'est que de te conseiller de réinstaller excel
mes fichiers dans les contributions:
mail avec CDO en vba et mail avec CDO en vbs dans un HTA
survol des bouton dans userform
prendre un cliché d'un range
si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
et n'oublie pas de voter
OK j'ai brulé les étapes,
en effet dans le call le je n'avais pas donné le nom du USF !
Bon maintenant j'ai bien l'USF qui s'affiche dans IE, mais avec un fond noir.
Je ne veux pas commencer à bricoler ton code.
as tu une idée de ce que je pourrais encore tester.
autre question comment je dois qualifier le body pour envoyer l'image dans outlook.
il m'envoie là aussi une erreur 424
toujours merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part OutlookItem.htmlbody = body.innerhtml
pour le fond j'avais remarqué je l'ai changé dans ton exemple avec tes 4/5 userforms j'ai changé la couleur légèrement plus clair
bon j'ai trouvé l'erreur pour l'usf disfonctionnement il est tout simplement corrompu plus moyen d'acceder a la frame1
j' ai donc reconstruit la page1 du multipage sans ta frame
après ne brule pas les étapes c'a n'est qu'une sub comme tel tu ne peux pas l'injecter dans le body du mail ca n'est pas une fonction
pour le moment c'est une sub qui t'affiche l'usf en html juste pour voir si ca te convient
voila ton fichier que tu a donner en exemple avec tout les userform qui fonctionnent en html
et voila se sera le même code qui te fera la conversion pour tout tes userforms
par pitié fait sauter tes frames
dis moi si je dois mettre les combobox ou pas c'est tout
je sais pas si j'ai mis un bouton dans chaque page du multipage tu peux le faire tout seul ca
dis moi simplement si cela convient en terme de rendu
mes fichiers dans les contributions:
mail avec CDO en vba et mail avec CDO en vbs dans un HTA
survol des bouton dans userform
prendre un cliché d'un range
si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
et n'oublie pas de voter
On progresse,
Tu peux oublier les frames, comme déjà dit, je vais les virer.
Oui je devrais avoir besoin des combo list (je vais checker.)
par contre pour tester tous mes USF, j'essaie de passer le nom de l'USF en variable et je n'y arrive pas.
Si je déclare en public une variable usf
je fais un usf = Me.name avant de lancer la procédure
mais quand j'y arrive ça ne passe pas.
Je dois aller en réunion je regarde après.
Merci
Denis
re ok a plus
et non!!! ne change rien a mon procédé laisse comme tel
ce n'est pas le nom du userform que je passe en paramètre mais l'object userform lui même
mes fichiers dans les contributions:
mail avec CDO en vba et mail avec CDO en vbs dans un HTA
survol des bouton dans userform
prendre un cliché d'un range
si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
et n'oublie pas de voter
ok pour moi c'est bon ca doit passer dans le corps du mail
je l'ai transformé en fonction
par contre n'ayant pas tout les sheets et data machin et compagnie dans l'exemple j'ai tout supprimé dans les macros je ne peux donc rien tester
par contre tu faisait une erreur monumentale
tu unload avant d'envoyer
tu parle !!!! tout ce que ca pouvait envoyer c'est du vide car quand tu unload, l'userform se décharge et donc tout les textbox et compagnie se vident
n'utilisant pas Outlook ni lotus je vais me faire un exemple avec cdo pour voir le résultat dans le mail
mes fichiers dans les contributions:
mail avec CDO en vba et mail avec CDO en vbs dans un HTA
survol des bouton dans userform
prendre un cliché d'un range
si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
et n'oublie pas de voter
Evident unload me c'est cool !
Quand on copie sans réfléchir !!
En même temps j'essaie d'être réactif par rapport à ton travail.
De plus la semaine prochaine je serai en congé, je n'aurai pas la même latitude pour tester.
Je vais maintenant essayer de comprendre un peu la logique du code.
Bon j'ai testé tous mes USF existants environs 70 actuellement.
La bonne nouvelle ils passent quasiment tous à l'identique de l'image du USF.
Les questions :
1) qu'est ce qui gère les couleurs de fond ? pourquoi certains sont gris et d'autres noirs ?
j'ai essyé de mettre sans couleur (blanc) ça ne marche pas mieux
par contre en mettant un jaune ou une "vraie" couleur ça passe.
2) le combobox tu penses pouvoir gérer ?
3) j'ai un cas avec un image dans l'usf, il s'agit d'une attestation d'assurance quand on utilise notre véhicule perso avec le tampon et la signature !
C'est en tout cas SUPER.
MERCI
Denis
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager