Comment déclarer un objet VB sous LotusScript

Forum destiné aux questions sur le développement : Formules, LotusScript, Java ...

Comment déclarer un objet VB sous LotusScript

Messagepar Christian Delval » 09 Oct 2014 à 08:45

Bonjour,

J'ai un problème assez délicat qui n'a pas reçu de réponse sur le forum Microsoft. Je tente ma chance ici espérant qu'un développeur LotusScript pourra m'aider. Je manipule des documents Word sous Lotus Script sans problème jusqu'ici. Mais là, je sèche.

J'ai un bout de code pour mettre à jour les signets d'un document Word. Ce code marche bien sous VB mais je dois l'utiliser sous Lotus Script
En VB :
Code : Tout sélectionner
Sub MettreAJourSignet()
 Dim BMRange As Range
 Set BMRange = ActiveDocument.Bookmarks("S_OSA2").Range
 BMRange.Text = "Hello world2"
 ActiveDocument.Bookmarks.Add "S_OSA2", BMRange
End Sub


Le problème que je rencontre c'est que l'instruction
Code : Tout sélectionner
DIM BMRange As Range

est une instruction VB. Or je ne vois pas comment déclarer un Objet VB (ici de type Range) en LotusScript.

J'ai bien essayé cela en me passant de la déclaration BMRange mais cela efface le signet.
Code : Tout sélectionner
ActiveDocument.Bookmarks.Add "S_OSA4", ActiveDocument.Bookmarks("S_OSA4").Range
ActiveDocument.Bookmarks("S_OSA4").Range.Text = "Hello World 4"


Donc ma question est : comment faire pour se passer de cette déclaration BMrange ou alors comment déclarer BMRange sous LotusScript.

Merci pour votre aide.
Développeur, administrateur de bases de données.
Christian Delval
Premier posts
Premier posts
 
Message(s) : 31
Inscrit(e) le : 11 Sep 2014 à 08:43

Re: Comment déclarer un objet VB sous LotusScript

Messagepar Jérôme Deniau » 09 Oct 2014 à 09:09

Ben Dim BMRange as variant

sinon mode fainéant, virant option declare ou option explicit dans le code, c'est pas propre, mais quand il faut il faut.....
Avatar de l’utilisateur
Jérôme Deniau
Maître-posteur
Maître-posteur
 
Message(s) : 497
Inscrit(e) le : 08 Mars 2013 à 09:52
Localisation : Rennes (Bretagne à l'Ouest de la France)

Re: Comment déclarer un objet VB sous LotusScript

Messagepar Christian Delval » 09 Oct 2014 à 11:39

Jérôme Deniau a écrit:Ben Dim BMRange as variant


Ok j'ai essayé ce code donc sous LS :

Code : Tout sélectionner
   Dim BMRange As Variant
   BMRange = WApp.Bookmarks("S_OSA2").Range
   BMRange.Text = "Hello world2"
   WApp.Bookmarks.Add "S_OSA2", BMRange


Mais j'obtiens ce message d'erreur :
"SET required on class instance assignment"

Cette ligne donc :
Code : Tout sélectionner
   BMRange.Text = "Hello world2"


Cela vient du fait je pense que on essaye d'assigner une valeur à une propriété d'une Variant (ici la Variant BMRange).
Donc j'essaye ceci :

Code : Tout sélectionner
   Set BMRange.Text = "Hello world2"


Mais là j'ai évidemment l'erreur "SET may only be used on class instance assignment".

Comment faire ?

La question est : est-ce qu'une Variant peut avoir une propriété ou une méthode ???
Développeur, administrateur de bases de données.
Christian Delval
Premier posts
Premier posts
 
Message(s) : 31
Inscrit(e) le : 11 Sep 2014 à 08:43

Re: Comment déclarer un objet VB sous LotusScript

Messagepar Jérôme Deniau » 09 Oct 2014 à 11:42

Enlever le set, un variant c'est un variant, en gros n'importe quoi donc pas de contrôle par contre après le .<sub func ou propriété>
Avatar de l’utilisateur
Jérôme Deniau
Maître-posteur
Maître-posteur
 
Message(s) : 497
Inscrit(e) le : 08 Mars 2013 à 09:52
Localisation : Rennes (Bretagne à l'Ouest de la France)

Re: Comment déclarer un objet VB sous LotusScript

Messagepar Christian Delval » 10 Oct 2014 à 07:46

Jérôme Deniau a écrit:pas de contrôle par contre après le .<sub func ou propriété>


Désolé, mais je ne comprend pas cette phrase.

Si j'enlève le set, j'ai un message d'erreur

BMRange.Text = "Hello world2"

Erreur :"SET required on class instance assignment"

Ce qui semble normal. Pouvez-vous être plus explicite concernant ce que je dois faire ?

Merci d'avance !
Développeur, administrateur de bases de données.
Christian Delval
Premier posts
Premier posts
 
Message(s) : 31
Inscrit(e) le : 11 Sep 2014 à 08:43

Re: Comment déclarer un objet VB sous LotusScript

Messagepar Jérôme Deniau » 10 Oct 2014 à 12:14

Dim BMRange as Variant
Avatar de l’utilisateur
Jérôme Deniau
Maître-posteur
Maître-posteur
 
Message(s) : 497
Inscrit(e) le : 08 Mars 2013 à 09:52
Localisation : Rennes (Bretagne à l'Ouest de la France)

Re: Comment déclarer un objet VB sous LotusScript

Messagepar Christian Delval » 10 Oct 2014 à 17:22

Dim BMRange As Variant

je l'ai déjà fait.

Dim BMRange As Variant
BMRange = WApp.Bookmarks("S_OSA2").Range

Merci de ton aide.
Développeur, administrateur de bases de données.
Christian Delval
Premier posts
Premier posts
 
Message(s) : 31
Inscrit(e) le : 11 Sep 2014 à 08:43

Re: Comment déclarer un objet VB sous LotusScript

Messagepar Jérôme Deniau » 11 Oct 2014 à 07:37

Ben faire un set

Dim BMRange as variant
Set BMRange = <objet>

ensuite BMRange.Range=, etc....

Exemple avec un champ texte riche dans notes

dim rtitem as variant

set rtiem = notesdoc.getfristItem("Body")

ensuite on a les propriétés d'un notesrichtextitem (si c'en est un)

Liens utiles:

http://kathysrunningnotes.blogspot.fr/2 ... excel.html
http://www.codestore.net/store.nsf/0/94 ... enDocument
Avatar de l’utilisateur
Jérôme Deniau
Maître-posteur
Maître-posteur
 
Message(s) : 497
Inscrit(e) le : 08 Mars 2013 à 09:52
Localisation : Rennes (Bretagne à l'Ouest de la France)

Re: Comment déclarer un objet VB sous LotusScript

Messagepar Jérôme Deniau » 11 Oct 2014 à 07:49

Et ce lien par ce que c'est lisible et pas bordélique puis il utilise IBM Notes:


http://www.breakingpar.com/bkp/home.nsf ... 32007EC812
Avatar de l’utilisateur
Jérôme Deniau
Maître-posteur
Maître-posteur
 
Message(s) : 497
Inscrit(e) le : 08 Mars 2013 à 09:52
Localisation : Rennes (Bretagne à l'Ouest de la France)

Re: Comment déclarer un objet VB sous LotusScript

Messagepar Jérôme Deniau » 11 Oct 2014 à 07:53

Et la même chose pour ouerd

http://www.breakingpar.com/bkp/home.nsf ... 0300656CC0

Mais bon je découvre Microsoft, je savais pas qu'ils faisaient aussi de la bureautique!
Avatar de l’utilisateur
Jérôme Deniau
Maître-posteur
Maître-posteur
 
Message(s) : 497
Inscrit(e) le : 08 Mars 2013 à 09:52
Localisation : Rennes (Bretagne à l'Ouest de la France)

Re: Comment déclarer un objet VB sous LotusScript

Messagepar Christian Delval » 23 Oct 2014 à 08:59

Jérôme Deniau a écrit:Ben faire un set


Désolé Jérôme mais je n'y arrive pas.

Peux-tu traduire les 4 lignes de VB en Lotus Script :

Code : Tout sélectionner
 Dim BMRange As Range
 Set BMRange = ActiveDocument.Bookmarks("S_OSA2").Range
 BMRange.Text = "Hello world2"
 ActiveDocument.Bookmarks.Add "S_OSA2", BMRange


Merci pour ton aide, désolé je sais que ce ne ce fait pas de demander comme çà j'ai regardé tous tes liens mais je n'y arrive pas du tout.

Cordialement.
Développeur, administrateur de bases de données.
Christian Delval
Premier posts
Premier posts
 
Message(s) : 31
Inscrit(e) le : 11 Sep 2014 à 08:43

Re: Comment déclarer un objet VB sous LotusScript

Messagepar Jérôme Deniau » 23 Oct 2014 à 11:34

Dim BMRange As Variant
Dim activeDocument As Variant '// ça c'est pour mes tests parce que je n'ai pas de activeDocument et j'aime pas Aisselle
Set BMRange = ActiveDocument.Bookmarks("S_OSA2").Range
BMRange.Text = "Hello world2"
ActiveDocument.Bookmarks.Add "S_OSA2", BMRange
Avatar de l’utilisateur
Jérôme Deniau
Maître-posteur
Maître-posteur
 
Message(s) : 497
Inscrit(e) le : 08 Mars 2013 à 09:52
Localisation : Rennes (Bretagne à l'Ouest de la France)

Mettre à jour des signets sous Word sans les détruire

Messagepar Christian Delval » 24 Oct 2014 à 14:22

Jérôme, ça marche du tonnerre, merci :D .
Je poste ici mon bout de code pour ceux que cela intéresserait de mettre à jour des signets sous Word sans les détruire :

Code : Tout sélectionner
   Dim ws As New NotesUIWorkspace
   Dim uidoc As NotesUIDocument
   Dim Doc As NotesDocument
   Dim object As NotesEmbeddedObject
   Dim WApp As Variant
   Dim BMRange As Variant
   
   Set uidoc = ws.CurrentDocument
   Set Doc = ws.CurrentDocument.Document
   Print ("Lettre " & Doc.ChoixFichierWord(0))
   If Doc.ChoixFichierWord(0) = "Mailing" Then
      Set object = Doc.EmbeddedObjects(1)
   Else ' Courrier simple
      Set object = Doc.EmbeddedObjects(0)
   End If
   Set WApp = object.Activate ( True )
   
   Set BMRange = WApp.Bookmarks("S_ASP").Range ' Affaire suivie par
   BMRange.Text = Doc.ASP(0)
   WApp.Bookmarks.Add "S_ASP", BMRange
   
   Set BMRange = WApp.Bookmarks("S_DEPCODE").Range
   BMRange.Text = Doc.DEPCODE(0)
   WApp.Bookmarks.Add "S_DEPCODE", BMRange

'       etc....
Développeur, administrateur de bases de données.
Christian Delval
Premier posts
Premier posts
 
Message(s) : 31
Inscrit(e) le : 11 Sep 2014 à 08:43


Retour vers Développement