Salut à tous, un grand merci pour votre aide.
Voici un exemple de code qui fonctionne entre 2 bases, traitement calculer le total pour une même clé depuis une 2 ème base et mettre à jour ce total dans une autre base (base en cours), le traitement s'appuie sur 2 vues indexés selon vos besoins.
Cordialement
Sub Initialize
On Error Goto ErrorHandler
Dim s As New NotesSession
Dim db1 As NotesDatabase, db2 As NotesDatabase
Dim view1 As NotesView, view2 As NotesView
Dim dc2 As NotesDocumentCollection
Dim doc1 As NotesDocument, doc2 As NotesDocument
Dim prefix As String,ticket As String, cle As String, clelue As String
Dim total As Double,hr As Double
Dim server As String,bases As String
Dim vue1 As String, vue2 As String
'Initialisation Serveur
server ="NOM du SERVEUR"
'Initialisation 2ème Base
bases = "iExtensions\IENTime.nsf"
'Initialisation1ère vue de la base en cours
vue1= "(AllTickets)"
'Initialisation 2ème vue de la 2ème Base
vue2= "(Intervention Par Ticket)"
' instancier la vue des docs Demande INTERVENTION de la base courante
Set db1 = s.CurrentDatabase
Set view1 = db1.GetView(vue1)
If view1 Is Nothing Then
Msgbox "Erreur déclaration 1ère vue base en cours..."
Exit Sub
End If
' instancier la vue des docs detail Des Fiches D'Intervention dans la base 2 (sur le même serveur)
Set db2 = New NotesDatabase(server, bases )
If Not db2.IsOpen Then
Msgbox "Erreur déclaration serveur..."
Exit Sub
End If
Set view2 = db2.GetView(vue2 )
If view2 Is Nothing Then
Msgbox "Erreur déclaration 2ème vue 2ème base..."
Exit Sub
End If
' Parcourir les docs Demandes D'Intervention
Set doc1 = view1.GetFirstDocument()
While Not doc1 Is Nothing
' remettre le compteur à 0 quand on change de doc Demande Intervention
total = 0
' Rechercher les docs detail associés
prefix = doc1.GetItemValue("IENTicketPrefix")(0)
ticket = doc1.GetItemValue("IENTicket")(0)
cle = prefix+ticket
' Set dc2 = view2.GetAllDocumentsByKey( cle, True )
' Parcourir les docs detail pour calculer le total
Set doc2 = view2.GetDocumentByKey(cle)
While Not doc2 Is Nothing
' incrémenter le compteur
clelue = doc2.GetItemValue("css_ticket_display")(0)
'test si même clé
If Not cle = clelue Goto suite
'Totalisation Heures
hr = doc2.GetItemValue("IENTime")(0)
total = total + hr
' passer au doc detail suivant
Set doc2 = view2.GetNextDocument(doc2)
Wend
suite:
' mettre à jour le doc Demande Intervention
Set item= doc1.ReplaceItemValue("IENUserHelpSysNumber03Value",total)
Call doc1.Save(True,True)
' passer au doc Demande Intervention Suivante
Set doc1 = view1.GetNextDocument(doc1)
Wend
Exit Sub
ErrorHandler :
Msgbox "Erreur n° " & Err & " dans 'CalculTotal' à la ligne " & Erl & " : " & Error
Exit Sub
End Sub