Page 1 sur 2
mauvaise déclaration

Publié:
16 Juin 2003 à 11:33
par asx9
voici ma déclaration qui me pose problème: Dim entry As NotesViewEntry Dim vwNav As NotesViewNavigatorLe problème doit venir du fait que je travaille sur la version 4.6la question serait alors que deviennent NotesViewEntry et NotesViewNavigator?
Re: mauvaise déclaration

Publié:
16 Juin 2003 à 12:07
par Raziel
Salut,Comme ces 2 classes ne sont pas connu de la 4.6, il va te falloir adapter ton code. Si tu veux de l'aide, envoi nous ton code afin que l'on puisse te dire comment t'y prendre.Raziel.
Re: mauvaise déclaration

Publié:
16 Juin 2003 à 13:03
par asx9
voici mon code (il n'est pas de moi je l'ai récupéré)Sub Initialize Dim Session As New NotesSession Dim db As NotesDatabase Dim sourceview As NotesView Dim sourcedoc As NotesDocument Dim dataview As NotesView Dim dc As NotesDocumentCollection Dim datadoc As NotesDocument Dim maxcols As Integer Dim WS As New Notesuiworkspace Dim ViewString As String Dim Scope As String Dim GetField As Variant Dim C As NotesViewColumn Dim FieldName As String Dim K As Integer Dim N As Integer Dim xlApp As Variant Dim xlsheet As Variant Dim rows As Integer Dim cols As Integer Dim nitem As NotesItem Dim entry As NotesViewEntry Dim vwNav As NotesViewNavigator Dim ShowView() As Variant Dim i As Integer Dim VList As Variant Dim ColVals As Variant '***** Vous pouvez modifier le code pour qu'il fasse appel à une autre base de document Set db = session.CurrentDatabase Vlist= db.views ' Récupère les vue de la base K=Ubound(Vlist) ' Récupère le nombre de vue Redim Preserve ShowView(K) N=-1 For i = 0 To K If Len(Vlist(i).Name) >0 Then FieldName=Trim(Vlist(i).Name) If Mid(Fieldname,1,1) <>"(" Then ' On n'affiche pas les vues caché N=N+1 ShowView(N) = FieldName End If End If Next i Set dataview = db.getview(ViewString) ' Ouvre la vue rows = 1 cols = 1 maxcols = ColumnCount 'Récupère le nombre de colonne Set xlApp = CreateObject("Excel.Application")' Lance Excel xlApp.StatusBar = "Création du tableau. Veuillez patienter..." xlApp.Visible = True xlApp.Workbooks.Add xlApp.ReferenceStyle = 2 Set xlsheet = xlApp.Workbooks(1).Worksheets(1) ' On prend la première feuille du classeur ' On met le titre de la vue xlApp.StatusBar = "Création des entêtes de colonnes. Veuillez patienter..." rows=2 ' On commence à la deuxième ligne For K=1 To maxcols Set c=dataview.columns(K-1) xlsheet.Cells(rows,cols).Value = c.title cols = cols + 1 Next K Set entry=vwnav.GetFirstDocument rows=3 ' On se place sur la troisième ligne Do While Not (entry Is Nothing) For cols=1 To maxcols colvals=entry.ColumnValues(cols-1) scope=Typename(colvals) Select Case scope Case "STRING" xlsheet.Cells(rows,cols).Value ="'" + colvals Case Else xlsheet.Cells(rows,cols).Value = colvals End Select Next cols xlApp.StatusBar = "Importation des données - Document " & rows-1 '& " sur " & dc.count & "." rows=rows+1 Set entry = vwnav.getnextdocument(entry) Loop xlApp.Rows("1:1").Select xlApp.Selection.Font.Bold = True xlApp.Selection.Font.Underline = True xlApp.Range(xlsheet.Cells(2,1), xlsheet.Cells(rows,maxcols)).Select xlApp.Selection.Font.Name = "Arial" xlApp.Selection.Font.Size = 9 xlApp.Selection.Columns.AutoFit With xlApp.Worksheets(1) .PageSetup.Orientation = 2 .PageSetup.centerheader = "Rapport" .Pagesetup.RightFooter = "Page &P" & Chr$(13) & "Date : &D" .Pagesetup.CenterFooter = "" End With xlApp.ReferenceStyle = 1 xlApp.Range("A1").Select xlApp.StatusBar = "L'importation des données de Lotus Notes est terminé."'***** Vous pouvez activer la ligne ci-dessous si vous voulez enregistrer le document en automatique'xlapp.ActiveWorkbook.saveas "C:\Vue" + Trim(Format(Now,"yyy")) ' Sauve le document Set xlapp=Nothing ' Stop l'automation excel Set db=Nothing End Sub
Re: mauvaise déclaration

Publié:
16 Juin 2003 à 13:11
par Raziel
A quoi correspond le vwnav de la ligne suivante "Set entry=vwnav.GetFirstDocument" ? Il n'est jamais initialisé...Il va te falloir remplacé les Notesentry par des notesdocumentsQuant à la NotesViewNavigator, je ne vois pas à quoi elle sert dans ce code...
Re: mauvaise déclaration

Publié:
16 Juin 2003 à 13:36
par Stephane Maillard
Bonjour,Il est utilisé pour récupérer les valeurs de colonnes dans la boucle qui suit :Set entry=vwnav.GetFirstDocumentrows=3 ' On se place sur la troisième ligneDo While Not (entry Is Nothing)For cols=1 To maxcolscolvals=entry.ColumnValues(cols-1) '<=== Iciscope=Typename(colvals)Select Case scopeCase "STRING"xlsheet.Cells(rows,cols).Value ="'" + colvalsCase Elsexlsheet.Cells(rows,cols).Value = colvalsEnd SelectNext colsxlApp.StatusBar = "Importation des données - Document " & rows-1 '& " sur " & dc.count & "."rows=rows+1Set entry = vwnav.getnextdocument(entry) '<=== Et iciLoop[%sig%]
Re: mauvaise déclaration

Publié:
16 Juin 2003 à 13:41
par Raziel
Soit mais où "vwnav" est il initialisé ?Je devrais normalement avoir une ligne du type set vwnav = .....
Re: mauvaise déclaration

Publié:
16 Juin 2003 à 13:46
par Stephane Maillard
Re,C'est mon code, et en regardant ce qu'il à récupéré ne correspond pas à l'original, il manque une grande parti de ce que c'était dont l'initialisation vwnav. Sur le coup je n'avais pas vue la ligne d'initialisation était manquante, ci-dessous le d'origine avec toutes les déclarations correct :Sub Initialize Dim Session As New NotesSession Dim db As NotesDatabase Dim sourceview As NotesView Dim sourcedoc As NotesDocument Dim dataview As NotesView Dim dc As NotesDocumentCollection Dim datadoc As NotesDocument Dim maxcols As Integer Dim WS As New Notesuiworkspace Dim ViewString As String Dim Scope As String Dim GetField As Variant Dim C As NotesViewColumn Dim FieldName As String Dim K As Integer Dim N As Integer Dim xlApp As Variant Dim xlsheet As Variant Dim rows As Integer Dim cols As Integer Dim nitem As NotesItem Dim entry As NotesViewEntry Dim vwNav As NotesViewNavigator Dim ShowView() As Variant Dim i As Integer Dim VList As Variant Dim ColVals As Variant '***** Vous pouvez modifier le code pour qu'il fasse appel à une autre base dedocument Set db = session.CurrentDatabase Vlist= db.views ' Récupère les vue de la base K=Ubound(Vlist) ' Récupère le nombre de vue Redim Preserve ShowView(K) N=-1 For i = 0 To K If Len(Vlist(i).Name) >0 Then FieldName=Trim(Vlist(i).Name) If Mid(Fieldname,1,1) <>"(" Then ' On n'affiche pas les vues caché N=N+1 ShowView(N) = FieldName End If End If Next i Redim Preserve ShowView(N) ' Trie les vues par ordre alphabétique For i=0 To N For K=i To N If ShowView(i) > ShowView(k) Then FieldName=ShowView(i) ShowView(i) = ShowView(k) ShowView(k)=FieldName End If Next k Next i viewstring= ws.Prompt(PROMPT_OKCANCELLIST,"Liste des vues","Choisissez unevue","",ShowView ) If Len(viewstring)=0 Then Exit Sub Set dataview = db.getview(ViewString) ' Ouvre la vue'*******************************************' Initilisation manquante ci-dessous : Set vwnav= dataview.createViewnav() rows = 1 cols = 1 maxcols=dataview.ColumnCount ' Récupère le nombre de colonne Set xlApp = CreateObject("Excel.Application")' Lance Excel xlApp.StatusBar = "Création du tableau. Veuillez patienter..." xlApp.Visible = True xlApp.Workbooks.Add xlApp.ReferenceStyle = 2 Set xlsheet = xlApp.Workbooks(1).Worksheets(1) ' On prend la premièrefeuille du classeur ' On met le titre de la vue xlsheet.Cells(rows,cols).Value ="Vue : " + ViewString + ", de la base : " +db.title +", extraction du : " + Format(Now,"mm/dd/yyyy HH:MM") xlApp.StatusBar = "Création des entêtes de colonnes. Veuillez patienter..." rows=2 ' On commence à la deuxième ligne For K=1 To maxcols Set c=dataview.columns(K-1) xlsheet.Cells(rows,cols).Value = c.title cols = cols + 1 Next K Set entry=vwnav.GetFirstDocument rows=3 ' On se place sur la troisième ligne Do While Not (entry Is Nothing) For cols=1 To maxcols colvals=entry.ColumnValues(cols-1) scope=Typename(colvals) Select Case scope Case "STRING" xlsheet.Cells(rows,cols).Value ="'" + colvals Case Else xlsheet.Cells(rows,cols).Value = colvals End Select Next cols xlApp.StatusBar = "Importation des données - Document " & rows-1 '& " sur" & dc.count & "." rows=rows+1 Set entry = vwnav.getnextdocument(entry) Loop xlApp.Rows("1:1").Select xlApp.Selection.Font.Bold = True xlApp.Selection.Font.Underline = True xlApp.Range(xlsheet.Cells(2,1), xlsheet.Cells(rows,maxcols)).Select xlApp.Selection.Font.Name = "Arial" xlApp.Selection.Font.Size = 9 xlApp.Selection.Columns.AutoFit With xlApp.Worksheets(1) .PageSetup.Orientation = 2 .PageSetup.centerheader = "Rapport" .Pagesetup.RightFooter = "Page &P" & Chr$(13) & "Date : &D" .Pagesetup.CenterFooter = "" End With xlApp.ReferenceStyle = 1 xlApp.Range("A1").Select xlApp.StatusBar = "L'importation des données de Lotus Notes est terminé." '***** Vous pouvez activer la ligne ci-dessous si vous voulez enregistrerle document en automatique 'xlapp.ActiveWorkbook.saveas "C:\Vue" + Trim(Format(Now,"yyy")) ' Sauve ledocument dataview.clear Set xlapp=Nothing ' Stop l'automation excel Set db=NothingEnd Sub[%sig%]
Re: mauvaise déclaration

Publié:
16 Juin 2003 à 13:58
par asx9
j'en profite pour remercier Stéphane Maillard pour son code qui me permet d'avoir un bon exemple de Script.mais il y a plusieurs petites choses qui ne correspondent pas avec la version 4.6si vous savez comment modifier ce code pour le rendre compatible avec la V4.6 cela m'arrangerai pas mal.
Re: mauvaise déclaration

Publié:
16 Juin 2003 à 14:00
par Stephane Maillard
Bonjour,Je n'est plus de 4.6, je vais essayer de voir ce que je peux faire.[%sig%]
Re: mauvaise déclaration

Publié:
16 Juin 2003 à 14:09
par Stephane Maillard
Re,Je viens de retrouver un vieux CD d'une 4.6.6b, il est un peu raillé, j'espère qu'il va fonctionner.[%sig%]
Re: mauvaise déclaration

Publié:
16 Juin 2003 à 14:35
par Stephane Maillard
Re,Voici un code qui fonctionne sur ma 4.6.6b, personnellement je l'ai testé dans une action sur une vue :Sub Click(Source As Button) ' Variables Dim session As New NotesSession Dim db As NotesDatabase Dim v As NotesView 'Constantes Const View$="Locations" '<=== Nom de la vue à exporté Const ExportItem$="Export" '<=== Champs qui indique si le document à été exporté Const xlsSave$="False" '<=== Détermine si le document doit être enregistré Const xlsFileName$="c:\temp\file_name.xls" '<=== Nom du fichier à enregistrer avec le chemin complet 'Variable de session Set db = session.CurrentDatabase Set v = db.GetView(View$) Set xl = CreateObject("Excel.application") Set xlWbk = xl.Workbooks.Add col!=1 Forall vColumn In v.Columns xlWbk.ActiveSheet.Cells(1, col!)=vColumn.Title col!=col!+1 End Forall Dim docX As NotesDocument Set docX=v.GetFirstDocument row!=2 While Not docX Is Nothing col!=1 Set item=docX.GetFirstItem(ExportItem$) Process=False If item Is Nothing Then Process=True Elseif item.Text="" Then Process=True End If If Process=True Then Forall cValue In docX.ColumnValues xlWbk.ActiveSheet.Cells(row!, col!)=cValue col!=col!+1 End Forall row!=row!+1 End If Call docX.ReplaceItemValue(ExportItem$, Now) Call docX.Save (True, True) Set docX=v.GetNextDocument(docX) Wend If xlsSave$="True" Then Call xlWbk.SaveAs(xlsFileName$) Call xlWbk.Close Else xl.Visible=True End IfEnd SubVoilà, j'espère que cela vous sera util.[%sig%]
Re: mauvaise déclaration

Publié:
16 Juin 2003 à 14:36
par Raziel
Vous allez surement dire que je suis tétu mais je ne vois tjs pas l'intérét de passer par une NotesViewNavigator pour rélaiser ce traitement...Enfin bref...Voici 1 code qui devrai fonctionné :Sub Initialize Dim Session As New NotesSession Dim db As NotesDatabase Dim sourceview As NotesView Dim sourcedoc As NotesDocument Dim dataview As NotesView Dim dc As NotesDocumentCollection Dim datadoc As NotesDocument Dim maxcols As Integer Dim WS As New Notesuiworkspace Dim ViewString As String Dim Scope As String Dim GetField As Variant Dim C As NotesViewColumn Dim FieldName As String Dim K As Integer Dim N As Integer Dim xlApp As Variant Dim xlsheet As Variant Dim rows As Integer Dim cols As Integer Dim nitem As NotesItem Dim ShowView() As Variant Dim i As Integer Dim VList As Variant Dim ColVals As Variant Dim doc As notesdocument '***** Vous pouvez modifier le code pour qu'il fasse appel à une autre base de document Set db = session.CurrentDatabase Vlist= db.views ' Récupère les vue de la base K=Ubound(Vlist) ' Récupère le nombre de vue Redim Preserve ShowView(K) N=-1 For i = 0 To K If Len(Vlist(i).Name) >0 Then FieldName=Trim(Vlist(i).Name) If Mid(Fieldname,1,1) <>"(" Then ' On n'affiche pas les vues caché N=N+1 ShowView(N) = FieldName End If End If Next i Redim Preserve ShowView(N)' Trie les vues par ordre alphabétique For i=0 To N For K=i To N If ShowView(i) > ShowView(k) Then FieldName=ShowView(i) ShowView(i) = ShowView(k) ShowView(k)=FieldName End If Next k Next i viewstring= ws.Prompt(PROMPT_OKCANCELLIST,"Liste des vues","Choisissez une vue","",ShowView ) If Len(viewstring)=0 Then Exit Sub Set dataview = db.getview(ViewString) ' Ouvre la vue'******************************************* rows = 1 cols = 1 maxcols=dataview.ColumnCount ' Récupère le nombre de colonne Set xlApp = CreateObject("Excel.Application")' Lance Excel xlApp.StatusBar = "Création du tableau. Veuillez patienter..." xlApp.Visible = True xlApp.Workbooks.Add xlApp.ReferenceStyle = 2 Set xlsheet = xlApp.Workbooks(1).Worksheets(1) ' On met le titre de la vue xlsheet.Cells(rows,cols).Value ="Vue : " + ViewString + ", de la base : " + db.title +", extraction du : " + Format(Now,"mm/dd/yyyy HH:MM") xlApp.StatusBar = "Création des entêtes de colonnes. Veuillez patienter..." rows=2 ' On commence à la deuxième ligne For K=1 To maxcols Set c=dataview.columns(K-1) xlsheet.Cells(rows,cols).Value = c.title cols = cols + 1 Next K Set doc=dataview.GetFirstDocument rows=3 ' On se place sur la troisième ligne Do While Not (Doc Is Nothing) For cols=1 To maxcols colvals=doc.ColumnValues(cols-1) scope=Typename(colvals) Select Case scope Case "STRING" xlsheet.Cells(rows,cols).Value ="'" + colvals Case Else xlsheet.Cells(rows,cols).Value = colvals End Select Next cols xlApp.StatusBar = "Importation des données - Document " & rows-1 '& " sur" & dc.count & "." rows=rows+1 Set doc = dataview.getnextdocument(doc) Loop xlApp.Rows("1:1").Select xlApp.Selection.Font.Bold = True xlApp.Selection.Font.Underline = True xlApp.Range(xlsheet.Cells(2,1), xlsheet.Cells(rows,maxcols)).Select xlApp.Selection.Font.Name = "Arial" xlApp.Selection.Font.Size = 9 xlApp.Selection.Columns.AutoFit With xlApp.Worksheets(1) .PageSetup.Orientation = 2 .PageSetup.centerheader = "Rapport" .Pagesetup.RightFooter = "Page &P" & Chr$(13) & "Date : &D" .Pagesetup.CenterFooter = "" End With xlApp.ReferenceStyle = 1 xlApp.Range("A1").Select xlApp.StatusBar = "L'importation des données de Lotus Notes est terminé." 'xlapp.ActiveWorkbook.saveas "C:\Vue" + Trim(Format(Now,"yyy")) ' Sauve le document dataview.clear Set xlapp=Nothing ' Stop l'automation excel Set db=NothingEnd Sub
Re: mauvaise déclaration

Publié:
16 Juin 2003 à 14:41
par Stephane Maillard
Re,Normalement non, car dans la 4.6, le prompt n'est pas encore dans la classe NotesUIWorkspace, tout du moins sur ma 4.6.6b[%sig%]
Re: mauvaise déclaration

Publié:
16 Juin 2003 à 14:54
par Raziel
Oups, j'avais pas fais gaffe au prompt....Je modifie ça de suite.
Re: mauvaise déclaration

Publié:
16 Juin 2003 à 15:03
par asx9
je vais tester tout cela, ça risque d'être un peu long car ça rame un max aujourd'hui.encore mercips je suis exactement sur v4.6.3a