Page 1 sur 2

Bouton pour détacher un fichier dans un répertoire

MessagePublié: 01 Nov 2011 à 19:53
par Nutch [Bot]
Bonjour,

Je suis absolument nouveau dans la bidouille sur Lotus Notes 8.5 mais je souhaiterais créer un bouton qui me permette de détacher un fichier dans un mail reçu et le placer toujours dans le même répertoire.

Le nom du fichier sera à chaque fois différent mais le répertoire doit rester identique.

J'ai tenté quelque chose comme ça (ne riez pas, merci !! :)
Code : Tout sélectionner
lefichier=@AttachmentNames
lepath="D:\CB\" & lefichier
@Command([EditDetach];lefichier;lepath)

mais, bien sûr, ça ne fonctionne pas ...

Si vous aviez une petite solution en formule, j'en serai ravi et éternellement reconnaissant !

MessagePublié: 02 Nov 2011 à 09:46
par roubech
Bonjour et bienvenu

perso je le ferai en LS
mais comme ça, à vue de nez, je commencerais par vérifier que @attachmentNames retourne bien quelquechose, et surtout une chaine de texte et pas une liste
ensuite, pour le chemin, je pense que tu vas devoir doubler le caractère \ car c'est un caractère spécial

MessagePublié: 02 Nov 2011 à 10:06
par Michael DELIQUE
salut

pour une première bidouille sous Lotus ta formule est pas mal du tout !

mais je pense que je passerais par du Lotus Script qui te donnera beaucoup plus de flexibilité un petit lien qui pourrais t'aider => http://forum.dominoarea.org/initiation- ... 12997.html

MessagePublié: 02 Nov 2011 à 11:53
par Nutch [Bot]
Merci beaucoup pour vos réponses ... et les compliments ... :lol:

C'est un peu ce que je craignais ... de devoir me mettre au LS, mais bon, après tout, vous avez certainement raison. Mes petites connaissances en VBA devraient m'aider.

Juste deux petites questions subsidiaires :

1) elle s'appelle comment la variable du fichier rattaché ?
2) si je réussis ce code, est-il possible ensuite de l'exporter vers d'autres postes et comment ?

Encore merci pour le coup de main.

MessagePublié: 02 Nov 2011 à 12:00
par Michael DELIQUE
re,

tu trouvera ici des tips concernant la gestions de fichiers attacher en LS => http://forum.dominoarea.org/gestion-de- ... s-f48.html


Code : Tout sélectionner
1) elle s'appelle comment la variable du fichier rattaché ?
2) si je réussis ce code, est-il possible ensuite de l'exporter vers d'autres postes et comment


désolé mais je comprend pas !

MessagePublié: 02 Nov 2011 à 13:48
par roubech

MessagePublié: 02 Nov 2011 à 14:18
par Nutch [Bot]
En fait, je n'en suis qu'au tout début de ma tentative.

Pour faire simple, j'ai une macro excel qui génère un fichier texte. Ce fichier texte est envoyé à un destinataire qui détache ce fichier texte dans un répertoire. Le destinataire utilise la macro excel pour importer ce fichier texte dans le fichier excel. Il y apporte les modifications nécessaires et le renvoie à l'expéditeur.

Donc, je souhaitais créer un bouton en passant par préférences\barres d'outils\personnaliser\créer\bouton et diffuser ces belles formules pour que tous les utilisateurs puissent en profiter. Et c'est là où j'ai coincé ... Encore une fois, je débute complètement et je rame :oops:
Je pense qu'avec les exemples que vous m'avez fourni, je devrais pouvoir sortir quelque chose mais :

    comment déclenche-t-on cet agent nouvellement créé ?
    comment le diffuser à d'autres utilisateurs de Lotus Notes ?


Merci encore et pardon pour mon ignorance crasse

MessagePublié: 02 Nov 2011 à 14:34
par Michael DELIQUE
salut

je te conseil vivement d'investir dans un livre d'auto-formation, j'en connais un bien qui existe depuis des années. Ce n'est pas un pavé mais il te donnera les base (hormis celle du LS et des xpages) et il n'est pas chère => http://www.eyrolles.com/Informatique/Li ... 2746006621

MessagePublié: 02 Nov 2011 à 15:02
par Nutch [Bot]
Bon, j'ai pas mal avancé ! :P

J'ai juste un petit problème : le code suivant fonctionne bien quand le fichier se trouve dans ou en dessous du corps du message :
Code : Tout sélectionner
Sub Initialize()
   
   
   Dim Session As New NotesSession
   Dim doc As NotesDocument
   Set doc = session.DocumentContext
   
   Dim rtitem As Variant
   Set rtitem = doc.GetFirstItem( "Body" )
   
   Dim Compteur As Integer
   Compteur = 0
   
   If ( rtitem.Type = RICHTEXT ) Then
      Forall o In rtitem.EmbeddedObjects
         Compteur = Compteur + 1
         Call o.ExtractFile ( "d:\CB" & o.name)
      End Forall
   End If
   
   
   
End Sub


Seulement, ma macro excel ne met pas le fichier attaché dans le corps du message mais dans la partie supérieure avec l'expéditeur, le destinataire, le sujet, etc.
Je suppose que je dois changer rtitem.Type = RICHTEXT mais je ne sais pas quoi utiliser. Auriez-vous une idée ?
Encore merci

MessagePublié: 02 Nov 2011 à 15:20
par Michael DELIQUE
re,

version courte , regarde ce tips => http://forum.dominoarea.org/detacher-le ... 11940.html

version longue

remplace

le

rtitem.EmbeddedObjects

par

NotesDocument.EmbeddedObjects

ce qui dans ton cas donne


Code : Tout sélectionner
Sub Initialize()
   
   
   Dim Session As New NotesSession
   Dim doc As NotesDocument
   Set doc = session.DocumentContext
   
   Dim rtitem As Variant
   Set rtitem = doc.GetFirstItem( "Body" )
   
   Dim Compteur As Integer
   Compteur = 0
   
   If ( rtitem.Type = RICHTEXT ) Then
      Forall o In doc.EmbeddedObjects
         Compteur = Compteur + 1
         Call o.ExtractFile ( "d:\CB" & o.name)
      End Forall
   End If
     
End Sub

MessagePublié: 02 Nov 2011 à 16:11
par Nutch [Bot]
Désolé, ça me donne une erreur (la même que tout à l'heure, d'ailleurs) :
.
Type incompatible dans la méthode ForAllnit : FROMVAR trouvé(s), Unknown attendu(s)

C'est clair comme du jus de boudin, ça dites donc ! En passant par le débugeur, il s'arrête sur
Code : Tout sélectionner
Forall o In doc.EmbeddedObjects


J'allais me mettre à ta proposition de version longue mais je séche sur la façon d'indiquer le répertoire où l'on souhaite détacher le fichier.

Je présume, comme il s'agit d'une fonction, qu'il faut appeler par une sub quelconque et qu'il faut lui passer les variables ...

MessagePublié: 02 Nov 2011 à 16:27
par Michael DELIQUE
re,

version corrigé avec gestion des erreurs.

- le path (répertoire de détachement) doit exister


Code : Tout sélectionner
Sub Initialize()
   Dim Session As New NotesSession
   Dim doc As NotesDocument
   Dim rtitem As NotesRichTextItem
   Dim Compteur As Integer
   Dim path As string
   On Error GoTo CatchError
   
   Set doc = session.DocumentContext
   
   
   If Doc.Hasembedded = False Then
      Exit sub
   End If
   
   Compteur = 0
   path = "d:\CB\"
   
   ForAll o In doc.EmbeddedObjects
      Compteur = Compteur + 1
      Call o.ExtractFile ( path + o.name)
   End ForAll
   
   Set rtitem = doc.GetFirstItem( "Body" )
   If Not rtItem Is Nothing Then
      ForAll o In rtitem.EmbeddedObjects
         Compteur = Compteur + 1
         Call o.ExtractFile ( path + o.name)
      End ForAll
   End If

   Exit Sub
CatchError:
   MsgBox Cstr(GetThreadInfo (1))+" Call by "+Cstr(GetThreadInfo(10))+")"+Chr(10)+"Erreur " + Str(Err) + " : "+Chr(10) + CStr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl),16," ERREUR !"
   Exit Sub
End Sub

MessagePublié: 02 Nov 2011 à 16:30
par Michael DELIQUE
pour ton affaire de répertoire regarde là => http://forum.dominoarea.org/gestion-de- ... s-f48.html

tu devrais trouver ton bonheur

MessagePublié: 02 Nov 2011 à 17:01
par Nutch [Bot]
Ah, là, je comprends mieux ... ou moins mal, disons :D

Par contre, ça bloque toujours sur
Code : Tout sélectionner
Forall o In doc.EmbeddedObjects
:(
Il me dit :
Type mismatch on line 19

On dirait qu'il n'aime pas le "doc.". Pourtant, la variable est bien déclarée ... Je ne comprends pas

MessagePublié: 02 Nov 2011 à 21:16
par Michael DELIQUE
re,

ton agent est lancé comment ? parceque documentcontext j'ai comme un doute pour l'initialisation de ton doc !