exportation Notes-Excel

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

Re: exportation Notes-Excel

Messagepar Raziel » 06 Mai 2003 à 14:13

Salut Leila,Concernant ta 2 ème question, voici un code. Ce dernier scan ma vue inbox afin de récupérer toutes les colonnes non cachées et ayant un titre. Ensuite il me fait apparaitre une petite fenêtre me permettant de sélectionnez les colonnes que je veux exporter.Concernant ta deuxième question : Le user doit donc pouvour sélectionnez son fichier. L'export écrase t'il le contenu du fichier ou doit il faire un append ? Tes fichiers possèdent il plusieurs feuilles ? Dans ce cas, dans laquelle de ces feuilles l'export doit il se faire.CODE :---------Sub Initialize Dim Session As New notessession Dim ws As New notesuiworkspace Dim db As notesdatabase Dim Vue As notesview Dim NomCol() As String Dim TabCol As Variant Dim Indice As Integer Set db = Session.currentdatabase Set Vue = db.getview("($Inbox)") Redim NomCol(Ubound(Vue.Columns)) As String Indice = 0 Forall Colonne In Vue.Columns If Colonne.Title <> "" And Colonne.IsHidden = False Then NomCol(indice) = Colonne.Title + "|" + Str$(Indice) Indice = Indice + 1 End Forall TabCol = ws.Prompt(PROMPT_OKCANCELLISTMULT, "Exportation vers Excel", _ "Sélectionnez les colonnes à exporter","" , Fulltrim(NomCol)) If Not Isempty(TabCol) Then For indice = 0 To Ubound(TabCol) TabCol(Indice) = Trim(Right(TabCol(Indice), 2)) Next Call ExtractNotesToExcel(Vue, TabCol) End IfEnd SubSub ExtractNotesToExcel (Vue, TabCol As Variant) Dim Doc As notesdocument Dim Valeur As Variant Dim xlApp As Variant Dim Ligne As Integer Dim Colonne As Integer Dim IndiceTab As Integer Set Doc = Vue.getfirstdocument If Not Doc Is Nothing Then ' Création de l'objet Excel Set xlApp = createObject("Excel.sheet") ' Création du classeur Excel xlApp.Application.Workbooks.add ' Création d'une page avec renommage xlApp.Application.Sheets.add xlApp.Application.Sheets(xlApp.Application.activesheet.name).Name = "Exportation vue Notes" End If Ligne = 1 While Not Doc Is Nothing Colonne = 1 For IndiceTab = 0 To Ubound(TabCol) Valeur = Doc.ColumnValues(Val(TabCol(IndiceTab))) xlApp.Application.activesheet.Cells(Ligne,Colonne).Value = Valeur Colonne = Colonne + 1 Next ' Passage au doc suivant Set Doc = Vue.getnextdocument(Doc) Ligne = Ligne + 1 Wend ' On rend le classeur Excel visible xlApp.application.visible= True ' Enregistrement du doc xlApp.Application.activesheet.SaveAs "C:\Temp\Classeur2.xls"End Sub
Raziel

L'administration est un lieu ou les gens qui arrivent en retard croisent dans l'escalier ceux qui partent en avance. [Georges Courteline]
Avatar de l’utilisateur
Raziel
Modérateur
Modérateur
 
Message(s) : 1795
Inscrit(e) le : 21 Déc 2004 à 11:06
Localisation : Roubaix

Re: exportation Notes-Excel

Messagepar leila » 06 Mai 2003 à 14:27

Je vais tester le code, et je te dirai si ca a marché.En fait, mon fichier excel possède 3 feuilles... et c'est dans la seconde ou je dois mettre les données exportées. il faut ke mon programme affiche les données et le nom des colonnes en question.J'espere que c'est assez clair la.Merci
leila
 

Re: exportation Notes-Excel

Messagepar leila » 06 Mai 2003 à 14:33

Salut Raziel, j'ai encore une petite question:Pourquoi ca marche pas cette comande??TabCol = ws.Prompt(PROMPT_OKCANCELLISTMULT, "Exportation",_on me dit qu'il y a erreur.... et je sais pas pourquoi.
leila
 

Re: exportation Notes-Excel

Messagepar Raziel » 06 Mai 2003 à 14:49

Tu as bien tapez toute la ligneTabCol = ws.Prompt(PROMPT_OKCANCELLISTMULT, "Exportation vers Excel", "Sélectionnez les colonnes à exporter","" , Fulltrim(NomCol))Tu as aussi bien déclaré la ws de cette manière ?Dim ws As New notesuiworkspaceOte moi d'un doute, tu es bien en V5.x ou supérieur ?Quand tu dis qu'il faut que "ton programme affiche les données et le nom des colonnes en question", tu parles biens des colonnes de la vue Notes ? Qu'entends tu par "Afficher les données"J'ai les idées un peu embrumées aujourd'hui :-))Faut que je dorme un peu plus...
Raziel

L'administration est un lieu ou les gens qui arrivent en retard croisent dans l'escalier ceux qui partent en avance. [Georges Courteline]
Avatar de l’utilisateur
Raziel
Modérateur
Modérateur
 
Message(s) : 1795
Inscrit(e) le : 21 Déc 2004 à 11:06
Localisation : Roubaix

Re: exportation Notes-Excel

Messagepar leila » 07 Mai 2003 à 08:36

Salut Raziel,désolée de t'embeter encore... mais, c'est que ca marche pas!En fait, il y a une erreur au niveau du PROMPTvoila ce qu'on me dit:Exporter:Initialize: 22 : Not a member: PROMPT(je précise que Exporter c'est le nom que j'ai donné a ma procédure...)Alors, ca veut dire quoi cette erreur???Merci de bien vouloir me répondre!
leila
 

Re: exportation Notes-Excel

Messagepar Raphaël » 07 Mai 2003 à 08:36

Hello, un petit plus : Est t'il possible de récupérer les noms des colonnes dans la feuilles Excel? Cela serait vraiment top!!Merci d'avance @+Raph
Raphaël
 

Re: exportation Notes-Excel

Messagepar leila » 07 Mai 2003 à 08:42

j'aimerai savoir aussi, comment dans ton programme tu arrives a savoir de quelle vue tu parle? est-ce que tu paramètre ca, ou l'utilisateur est obligé à chaque fois d'entrer lui meme le nom de la vue en question??
leila
 

Re: exportation Notes-Excel

Messagepar Raziel » 07 Mai 2003 à 09:03

Salut,Mais non vous ne m'embêtez pas :-)))-> Leila d'abord (et oui Raph, les femmes d'abord).La méthode prompt de la classe NotesuiWorkspace est apparu à partir de la version 5. Le message qui tu as indique que cette méthode n'a pas pu être trouvé dans cette classe. Es tu bien en V5 ? Si tu veux, tu peux m'envoyer ton code pourque j'y jette un coup d'oeil.Ensuite, la ligne qui me dit que j'attaque la vue Inbox est la ligne suivante du codeSet Vue = db.getview("($Inbox)")Tu peux bien sur rendre cela dynamique. Soit par une sélection dans une boite soit en prenant la vue courante a partir de laquelle le code l'export est lancé.-> Raph maintenant (tu vois que je ne t'ai pas oublié)A partir du moment où tu as créer l'objet Excel, tu peux faire toutes les manipulations que tu ferai toi même. Alors oui, tu peux récupérer les colonnes de ton fichier. Si tu veux avoir une idée de comment t'y prendre, rien de plus simple : Dans Excel, tu lances l'enregistreur de macro. Tu fais toutes les manip que le code Notes devrait effectué et ensuite tu regarde le code que t'a généré l'enregistreur. Ne reste plus qu'a adapter quelques lignes et le tour est joué.
Raziel

L'administration est un lieu ou les gens qui arrivent en retard croisent dans l'escalier ceux qui partent en avance. [Georges Courteline]
Avatar de l’utilisateur
Raziel
Modérateur
Modérateur
 
Message(s) : 1795
Inscrit(e) le : 21 Déc 2004 à 11:06
Localisation : Roubaix

Re: exportation Notes-Excel

Messagepar leila » 07 Mai 2003 à 09:25

ah d'accord !!!! je viens de comprendre...En fait, moi je travaille sur la version 4.6 alors comment je peux modifier tout ca pour que ca marche?Merci
leila
 

Re: exportation Notes-Excel

Messagepar Raziel » 07 Mai 2003 à 10:41

Pour Leila,Voici ce que tu dois faire pour que ce code fonctionne en V4.6Tout d'abord tu créé un masque que tu appele par exemple "SelectColonnes"Dans ce masque, tu créé une zone de présentation. Dans cette zone, tu créé un champ du type "Case à cocher" que tu nomme "SelectColonnes".Pour ce champ, tu choisi choix via formule et tu mets comme formule le code suivant :@GetProfileField("Exportation" ; "NomColonnes"; @UserName)Ensuit, toujours dans le masque, évènement QueryClose, tu mets le code suivant :@SetProfileField("Exportation" ; "SelectColonnes"; SelectColonnes; @UserName)ENFIN, REMPLACES LE CODE SUIVANT :Sub InitializeDim Session As New notessessionDim ws As New notesuiworkspaceDim db As notesdatabaseDim Vue As notesviewDim NomCol() As StringDim TabCol As VariantDim Indice As IntegerSet db = Session.currentdatabaseSet Vue = db.getview("($Inbox)")Redim NomCol(Ubound(Vue.Columns)) As StringIndice = 0Forall Colonne In Vue.ColumnsIf Colonne.Title <> "" And Colonne.IsHidden = False Then NomCol(indice) = Colonne.Title + "|" + Str$(Indice)Indice = Indice + 1End ForallTabCol = ws.Prompt(PROMPT_OKCANCELLISTMULT, "Exportation vers Excel", _"Sélectionnez les colonnes à exporter","" , Fulltrim(NomCol))If Not Isempty(TabCol) ThenFor indice = 0 To Ubound(TabCol)TabCol(Indice) = Trim(Right(TabCol(Indice), 2))NextCall ExtractNotesToExcel(Vue, TabCol)End IfEnd SubPAR :Sub Initialize Dim Session As New notessession Dim ws As New notesuiworkspace Dim db As notesdatabase Dim Vue As notesview Dim DocProfil As notesdocument Dim NomCol() As String Dim TabCol As Variant Dim Indice As Integer Set db = Session.currentdatabase Set Vue = db.getview("($Inbox)") Redim NomCol(Ubound(Vue.Columns)) As String Indice = 0 Forall Colonne In Vue.Columns If Colonne.Title <> "" And Colonne.IsHidden = False Then NomCol(indice) = Colonne.Title + "|" + Str$(Indice) Indice = Indice + 1 End Forall Set DocProfil = db.getprofiledocument("Exportation", session.username) DocProfil.NomColonnes = Fulltrim(NomCol) DocProfil.save True, True ' TabCol = ws.Prompt(PROMPT_OKCANCELLISTMULT, "Exportation vers Excel", _' "Sélectionnez les colonnes à exporter","" , Fulltrim(NomCol)) If ws.DialogBox("SelectColonnes", True, True, False, True, True, False, "Exportation vers Excel") Then TabCol = DocProfil.getitemvalue("SelectColonnes") TabCol = Fulltrim(TabCol) If TabCol(0) <> "" Then For indice = 0 To Ubound(TabCol) TabCol(Indice) = Trim(Right(TabCol(Indice), 2)) Next Call ExtractNotesToExcel(Vue, TabCol) End If End If End Sub
Raziel

L'administration est un lieu ou les gens qui arrivent en retard croisent dans l'escalier ceux qui partent en avance. [Georges Courteline]
Avatar de l’utilisateur
Raziel
Modérateur
Modérateur
 
Message(s) : 1795
Inscrit(e) le : 21 Déc 2004 à 11:06
Localisation : Roubaix

Re: exportation Notes-Excel

Messagepar leila » 07 Mai 2003 à 11:15

j'ai bien creer le masque et j'ai remplacé le code, mais il faut déclarer FULLTRIM sinon il y a une erreur, je l'ai déclaré en tant que STRING, mais ca marche pas, j'ai essayé VARIANT aussi mais ca ne marche pas non plus, sinon on me dit d'enlever les parenthèses dans la ligne de code DocProfil.NomColonnes = Fulltrim(NomCol)et ca me semble pas tres normal...
leila
 

Re: exportation Notes-Excel

Messagepar Raziel » 07 Mai 2003 à 12:44

Il semblerai que le FullTrim soit une fonction non reconnue de la 4.6.Ce n'est pas grave.Remplace :DocProfil.NomColonnes = Fulltrim(NomCol)par DocProfil.NomColonnes = NomColDu fait que l'on exclue juste au dessus les colonnes dont le titire est vide, le Fulltrim (qui était là par sécurité) n'est pas capital.Enfin supprime la ligne suivante :TabCol = Fulltrim(TabCol)Là encore, le FullTrim y était plus par sécurité.Une autre méthode serai d'écrite une fonction qui reproduirai le fonctionnement du FullTrim
Raziel

L'administration est un lieu ou les gens qui arrivent en retard croisent dans l'escalier ceux qui partent en avance. [Georges Courteline]
Avatar de l’utilisateur
Raziel
Modérateur
Modérateur
 
Message(s) : 1795
Inscrit(e) le : 21 Déc 2004 à 11:06
Localisation : Roubaix

Re: exportation Notes-Excel

Messagepar Raziel » 07 Mai 2003 à 12:57

Encore une chose pour être réellement complet.Remplace :Redim NomCol(Ubound(Vue.Columns)) As StringIndice = 0Forall Colonne In Vue.ColumnsIf Colonne.Title <> "" And Colonne.IsHidden = False Then NomCol(indice) = Colonne.Title + "|" + Str$(Indice)Indice = Indice + 1End Forallpar' Redim NomCol(Ubound(Vue.Columns)) As String Indice = 0 Indice2 = 0 Forall Colonne In Vue.Columns If Colonne.Title <> "" And Colonne.IsHidden = False Then Redim Preserve NomCol(Indice2) As String NomCol(indice2) = Colonne.Title + "|" + Str$(Indice) Indice2 = Indice2 + 1 End If Indice = Indice + 1 End ForallTu déclare Indice2 comme ceciDim Indice2 as integer
Raziel

L'administration est un lieu ou les gens qui arrivent en retard croisent dans l'escalier ceux qui partent en avance. [Georges Courteline]
Avatar de l’utilisateur
Raziel
Modérateur
Modérateur
 
Message(s) : 1795
Inscrit(e) le : 21 Déc 2004 à 11:06
Localisation : Roubaix

Re: exportation Notes-Excel

Messagepar leila » 07 Mai 2003 à 13:32

J'ai tout changé, c'est bon, mais il reste encore un petit probleme! :)En fait, le programme ne m'affiche de 3 noms de colonnes dans la liste ou je dois faire mon choix, alors que la vue possède 19 colonnes.... ext-ce normal????Sinon, avant la fin de l'execution du programme, il y a une erreur qui ferme tout...
leila
 

Re: exportation Notes-Excel

Messagepar Raziel » 07 Mai 2003 à 13:39

Le script fait en sorte de ne pas prendre les colonnes ne possédant pas de titre ni les colonnes cachées.Ceci est fait par la ligne suivant :If Colonne.Title <> "" And Colonne.IsHidden = False Then NomCol(indice) = Colonne.Title + "|" + Str$(Indice)Si tu veux tout prendre en compte, remplace là parNomCol(indice) = Colonne.Title + "|" + Str$(Indice)A la fin du script, tu obtiens quelle erreur ? Est ce une erreur généré par excel ou par Notes ?
Raziel

L'administration est un lieu ou les gens qui arrivent en retard croisent dans l'escalier ceux qui partent en avance. [Georges Courteline]
Avatar de l’utilisateur
Raziel
Modérateur
Modérateur
 
Message(s) : 1795
Inscrit(e) le : 21 Déc 2004 à 11:06
Localisation : Roubaix

PrécédentSuivant

Retour vers Développement

cron