Bonjour,

En son temps, j'avais un peu investi VBA pour Excel et je comprenais (à peu près !) ce que je faisais.

J'ai donc développé une application (pointeuse) qui fonctionne bien. Le principe : on enregistre des heures dans une base Access à l'aide de connexion ADO, et on fait des récapitulations à l'aide d'un tableau croisé dynamique Excel.

L'utilisation de Excel par contre ne présente aucun intérêt pour la saisie, d'où l'idée de passer tout ça sous VB 2008.

Comme je n'ai pas beaucoup de temps pour tout comprendre dans VB 2008 ,à l'aide de copier coller, je transfert le code VBA dans l'éditeur VB, en apportant les corrections si nécessaire. Un problème se pose, que je n'arrive pas à résoudre : j'ai une erreur "propriété 'Item' est Readonly" lorsque je veux affecter une valeur à un recorset.Voici le code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
    Private Sub Pointer()
        Me.TextBox1.Focus()
        On Error GoTo ErreurOuvertureFichier
 
        Conn.Open("Provider=Microsoft.Jet.OLEDB.4.0;" & _
                  "Data Source=" & Chemin & Fichierbase & ";" & _
                  "Jet OLEDB:Database Password=" & MotPasse)
 
        On Error GoTo 0
 
        Rst.Open("Select * from [Agents]", Conn)
        Rst.Filter = "Code LIKE '" & CodeBarre & "'"
 
        If Rst.RecordCount = 1 Then
 
            Me.Label1.Text = Rst(2)
            Me.Label1.BackColor = Color.Green
 
            Numjour = Int(Now - CDate("1/1/" & Year(Now))) + 1
            NumAgent = Year(Now) & "-" & Format(Numjour, "000") _
                & "-" & Format(Rst(0), "00")
            Rst.Close()
 
            Rst.LockType = ADODB.LockTypeEnum.adLockOptimistic
            Rst.Open("Select * from [Base]", Conn)
 
            Rst.Filter = "Code LIKE '" & NumAgent & "%" & "'"
 
            Select Case Rst.RecordCount
                Case 0
                    Rst.AddNew()
                    Rst(0) = NumAgent & "-01"
                    Rst(1) = Now
                    Rst.Update()
                    Texte = "Début du service : "
                    son = "BeepOkDébut"
                Case Else
                    Rst.MoveLast()
                    If Rst(2) Is Nothing Then
                        Rst(2) = Now
                        Rst.Update()
                        Texte = "Fin du service  : "
                        Son = "BeepOkFin"
                    Else
                        Numpointage = Rst.RecordCount + 1
                        Rst.AddNew()
                        Rst(0) = NumAgent & "-" & Format(Numpointage, "00")
                        Rst(1) = Now
                        Rst.Update()
                        Texte = "Début du service : "
                        Son = "BeepOkDébut"
                    End If
            End Select
 
            Me.Label2.Text = Texte & Format(Now, "hh:mm")
            'Run (son)
 
            Rst.Close()
            Conn.Close()
            Me.TextBox1.Focus()
 
            Exit Sub
 
        Else
            Me.Label1.Text = "Carte non reconnue. Recommencez"
            Me.Label1.BackColor = Color.Red
            Run("BeepPasOk")
 
            Rst.Close()
            Conn.Close()
 
        End If
 
        On Error Resume Next
        Rst.Close()
        Conn.Close()
        Me.TextBox1.Focus()
        Exit Sub
 
ErreurOuvertureFichier:
        MsgBox("Ouverture du fichier de données impossible." & vbCrLf & _
            "Contactez l'administrateur")
        Exit Sub
 
 
    End Sub
qui me provoque cette erreur pour les lignes :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
                    Rst(0) = NumAgent & "-01"
                    Rst(1) = Now
Pourriez vous m'aider ? Merci

Olivier