Extraction des documents d'une vue vers excel

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

Extraction des documents d'une vue vers excel

Messagepar clementbp » 09 Fév 2010 à 16:06

Bonjour à tous,

J'ai un soucis avec un agent que j'ai créé, me permettant d'exporter tous les documents d'une vue vers un fichier excel.

Le problème est que mon agent ne se termine pas à chaque fois.
Cela dépend des vues que je souhaite extraire.

Par exemple j'ai une vue avec plus de 6500 documents et 180 champs à exporter qui ne me pose aucun problème, tout se déroule très bien.
Par contre j'en ai une autre de 3800 doc avec 63 champs qui plante à chaque fois sur le meme document

J'aurais simplement voulu savoir s'il y avait une limite au niveau du nombre de documents à extraire (ce qui ne semble pas etre le cas puisqu'une vue avec plus de doc s'exporte correctement)
Ou pensez vous que le problème vient de mon document sur lequel l'extration s'arrete.

Merci de votre réponse
clementbp
Posteur habitué
Posteur habitué
 
Message(s) : 236
Inscrit(e) le : 03 Fév 2010 à 16:42

Messagepar Michael DELIQUE » 09 Fév 2010 à 16:10

salut

les limites sont plus tot du coté d'excel, par contre pour ton souci, as tu inséré une gestion des erreurs dans ton agent ? histoire de savoir précisement ce qui cloche => http://forum.dominoarea.org/gestion-des ... 12054.html d'ailleur qu'as tu comme message d'erreur ?

sinon tu peux aussi faire tourné ton agent avec le débugeur.

as tu lu ceci, ça pourrait t'aider => http://forum.dominoarea.org/initiation- ... 12997.html
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Messagepar clementbp » 09 Fév 2010 à 16:16

Bonjour, je suis impressionné par la rapidité de ta réponse et je te remercie.

Je n'ai pas encore regardé tes liens mais je voulais d'abord t'indiqué que le message que j'avais était :
OLE Automation Object error

Je vais regarder tes liens pour essayer de me débrouiller
clementbp
Posteur habitué
Posteur habitué
 
Message(s) : 236
Inscrit(e) le : 03 Fév 2010 à 16:42

Messagepar Michael DELIQUE » 09 Fév 2010 à 16:18

re au vue de ton message d'erreur je te conseil de lire ceci

=> http://forum.dominoarea.org/la-gestion- ... 13000.html

sinon tu trouvera ici d'est exemple d'export Excel => http://forum.dominoarea.org/importation ... s-f31.html
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Messagepar clementbp » 09 Fév 2010 à 16:25

Ok c'est gentil je vais donc appronfondir mes recherches sur les liens que tu m'as indiqué.
Ce sont déja des documents que j'ai consulté pour coder mon agent (je débute en lotus script) mais j'ai certainement du rater quelque chose.

A bientot et merci encore

Je te tiendrai au courant de ce que je trouve
clementbp
Posteur habitué
Posteur habitué
 
Message(s) : 236
Inscrit(e) le : 03 Fév 2010 à 16:42

Messagepar Michael DELIQUE » 09 Fév 2010 à 16:28

bon si tu as déjà lu ce que je t'ai passé c'est un très bon début

le plus simple serais de nous montrer ton code en nous indiquant la ligne qui plante.

une astuce bien pratique => http://forum.dominoarea.org/vba-et-lotu ... 22722.html
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Messagepar clementbp » 09 Fév 2010 à 16:29

Je viens de penser à quelque chose !

Est ce que dans l'idée je pourrais avoir la possibilité de dire dans mon agent que si la valeure du champ à exporter n'est pas correct il passe automatiquement au champ suivant ou au document suivant ?
clementbp
Posteur habitué
Posteur habitué
 
Message(s) : 236
Inscrit(e) le : 03 Fév 2010 à 16:42

Messagepar clementbp » 09 Fév 2010 à 16:32

Je te fais parvenir mon code, fortement inspiré du doc Initiation a la gestion des fichiers excel en lotus script



Sub Initialize

Dim Session As New NotesSession
Dim db As NotesDatabase
Dim dataview As NotesView
Dim vwNav As NotesViewNavigator
Dim XLApp As Variant
Dim XLWorkBook As Variant
Dim ActiveWorkBook As Variant
Dim Sheet As Variant
Dim ligne As Long
Dim colonne As Long
Dim K As Variant
Dim Nbcolonne As Integer
Dim c As NotesViewColumn
Dim XlSheet As Variant
Dim entry As NotesViewEntry

Dim colvals As Variant
Dim scope As String
Dim doc As NotesDocument
'On Error Goto Erreur

' Initialisation de la session, base actuelle et vue
Set session = New NotesSession
Set db = session.CurrentDatabase
Set dataview = db.GetView("CBP - Documents\Extraction\RVAT") 'SPECIFIER ICI LE NOM DE LA VUE

Set vwNav=dataview.CreateViewNav

' initialisation de l'objet OLE ou Instance OLE
' ouverture de l'application Excel sans ouverture de classeur
Set XLApp = CreateObject("Excel.Application")
XLApp.Visible = True
XLApp.DisplayAlerts = True
XLApp.StatusBar = "Traitement en cours ...."
Set XLWorkBook=XLApp.Workbooks.Add
Set ActiveWorkBook=XLApp.ActiveWorkBook
Set Sheet=ActiveWorkBook.ActiveSheet
Sheet.Name = "RVAT" ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''NOM DE LA FEUILLE

'1. Ecriture du titre des colonnes

XLApp.StatusBar = "Ecriture des titres de colonne...."

Nbcolonne=dataview.ColumnCount ' Récupère le nombre de colonne de la vue
ligne=1 ' On se place sur la première ligne
colonne=1

Set XlSheet=CreateObject("Excel.Sheet")

For K=1 To Nbcolonne
Set c=dataview.columns(K-1)
Sheet.Cells(ligne,colonne) = c.title
colonne = colonne + 1
Next K

Set entry=vwnav.GetFirstDocument


'2. Renseigne les valeures des champs du document

XLApp.StatusBar = "Ecriture des valeurs des champs ...."

ligne=2 ' On se place sur la deuxième ligne
colonne=1 'On se remet sur la premiere colonne

Do While Not (entry Is Nothing)

For colonne=1 To Nbcolonne
colvals=entry.ColumnValues(colonne-1)
scope=Typename(colvals)
Select Case scope
Case "STRING"
Sheet.Cells(ligne,colonne) ="'" + colvals
Case Else
Sheet.Cells(ligne,colonne) = colvals
End Select
Next colonne

ligne=ligne+1
Set entry = vwnav.getnextdocument(entry)
Loop ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''COPIE TOUTS LES VALEURS DE LA VUE

XlApp.ActiveWorkBook.SaveAs "H:\DOCUMENTS_QUALITE\Fichier Extraction Wkf\RVAT.xls" '''''''''''NOM DONNE A L ENREGISTREMENT DU FICHIER EXCEL
ActiveWorkBook.Close
XLApp.Quit
Exit Sub

'Erreur:
' XLApp.Quit
' Resume Fin

'Fin:
End Sub




Voila
clementbp
Posteur habitué
Posteur habitué
 
Message(s) : 236
Inscrit(e) le : 03 Fév 2010 à 16:42

Messagepar Michael DELIQUE » 09 Fév 2010 à 16:36

ça bug ou ?
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Messagepar clementbp » 09 Fév 2010 à 16:40

C'est bien là mon problème c'est que ca dépend de la vue que j'exporte ......

Alors je sais pas comment on peut faire
clementbp
Posteur habitué
Posteur habitué
 
Message(s) : 236
Inscrit(e) le : 03 Fév 2010 à 16:42

Messagepar Michael DELIQUE » 09 Fév 2010 à 16:46

déjà retire le commentaire sur le on erreur

en suite rajoute juste apres "Erreur: "

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 !"

et débug avec la premiere vue et ensuite avec la deuxiement tu as peut etre 2 soucis
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Messagepar clementbp » 09 Fév 2010 à 16:57

J'ai ce message là qui apparait


INITIALIZE call by INITIALIZE
Erreur 213 :
OLE : Automation object error
Ligne N° 77
clementbp
Posteur habitué
Posteur habitué
 
Message(s) : 236
Inscrit(e) le : 03 Fév 2010 à 16:42

Messagepar Michael DELIQUE » 09 Fév 2010 à 17:00

c'est quelle ligne la 77 ?
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Messagepar clementbp » 09 Fév 2010 à 17:14

Voici le code avec la ligne 77 qui est précisée
La ligne 77 est :
Case Else ''''''''''''''''''''''''''''''''''''''''LIGNE 77





Sub Initialize

Dim Session As New NotesSession
Dim db As NotesDatabase
Dim dataview As NotesView
Dim vwNav As NotesViewNavigator
Dim XLApp As Variant
Dim XLWorkBook As Variant
Dim ActiveWorkBook As Variant
Dim Sheet As Variant
Dim ligne As Long
Dim colonne As Long
Dim K As Variant
Dim Nbcolonne As Integer
Dim c As NotesViewColumn
Dim XlSheet As Variant
Dim entry As NotesViewEntry

Dim colvals As Variant
Dim scope As String
Dim doc As NotesDocument
On Error Goto Erreur

' Initialisation de la session, base actuelle et vue
Set session = New NotesSession
Set db = session.CurrentDatabase
Set dataview = db.GetView("CBP - Documents\Extraction\RVAT") 'SPECIFIER ICI LE NOM DE LA VUE

Set vwNav=dataview.CreateViewNav

' initialisation de l'objet OLE ou Instance OLE
' ouverture de l'application Excel sans ouverture de classeur
Set XLApp = CreateObject("Excel.Application")
XLApp.Visible = True
XLApp.DisplayAlerts = True
XLApp.StatusBar = "Traitement en cours ...."
Set XLWorkBook=XLApp.Workbooks.Add
Set ActiveWorkBook=XLApp.ActiveWorkBook
Set Sheet=ActiveWorkBook.ActiveSheet
Sheet.Name = "RVAT" ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''NOM DE LA FEUILLE

'1. Ecriture du titre des colonnes

XLApp.StatusBar = "Ecriture des titres de colonne...."

Nbcolonne=dataview.ColumnCount ' Récupère le nombre de colonne de la vue
ligne=1 ' On se place sur la première ligne
colonne=1

Set XlSheet=CreateObject("Excel.Sheet")

For K=1 To Nbcolonne
Set c=dataview.columns(K-1)
Sheet.Cells(ligne,colonne) = c.title
colonne = colonne + 1
Next K

Set entry=vwnav.GetFirstDocument


'2. Renseigne les valeures des champs du document

XLApp.StatusBar = "Ecriture des valeurs des champs ...."

ligne=2 ' On se place sur la deuxième ligne
colonne=1 'On se remet sur la premiere colonne

Do While Not (entry Is Nothing)

For colonne=1 To Nbcolonne
colvals=entry.ColumnValues(colonne-1)
scope=Typename(colvals)
Select Case scope
Case "STRING"
Sheet.Cells(ligne,colonne) ="'" + colvals
Case Else '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''LIGNE 77
Sheet.Cells(ligne,colonne) = colvals
End Select
Next colonne

ligne=ligne+1
Set entry = vwnav.getnextdocument(entry)
Loop ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''COPIE TOUTS LES VALEURS DE LA VUE

XlApp.ActiveWorkBook.SaveAs "H:\DOCUMENTS_QUALITE\Fichier Extraction Wkf\RVAT.xls" '''''''''''NOM DONNE A L ENREGISTREMENT DU FICHIER EXCEL
ActiveWorkBook.Close
XLApp.Quit
Exit Sub

Erreur:
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 !"
' XLApp.Quit
' Resume Fin

'Fin:
End Sub
clementbp
Posteur habitué
Posteur habitué
 
Message(s) : 236
Inscrit(e) le : 03 Fév 2010 à 16:42

Messagepar Michael DELIQUE » 10 Fév 2010 à 08:55

salut

concernant
Sheet.Cells(ligne,colonne) = colvals
colvals est un variant, regarde en débug ce qu'il contient a mon avis le pb vient de là
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Suivant

Retour vers Développement

cron