Bonjour,
Je tourne en rond depuis une semaine pour résoudre un problème. Voici les résultats de tests que j'ai fais avec différents utilisateurs:

Utilisateur 1 :
-N'a pas MS Access installé sur son ordinateur.
-Est capable d'écrire dans Access à l'aide de la macro dans Excel
-Message "Excel has stopped working" à la fermeture du fichier Excel

Utilisateur 2:
-N'a pas MS Access installé sur son ordinateur.
-N'est pas capable d'écrire dans Access à l'aide de la macro dans Excel
-Message "Excel has stopped working" à la fermeture du fichier Excel

Utilisateur 3:
-Il a MS Access installé sur son ordinateur.
-Est capable d'écrire dans Access à l'aide de la macro dans Excel
-Message "Excel has stopped working" à la fermeture du fichier Excel

Utilisateur 4 (moi):
-J'ai MS Access installé sur son ordinateur.
-Je suis capable d'écrire dans Access à l'aide de la macro dans Excel.
-Je n'ai pas de message "Excel has stopped working" à la fermeture du fichier Excel

Je ne pense pas que le message "Excel has stopped working" est lié au fait qu’une personne n’a pas MS Access parce que le message apparait pour l'utilisateur 3 (qui a bien MS Access). Pour le message "Excel has stopped working", j'ai essayé de supprimer toutes les feuilles sauf une (parce que Excel ne permet pas de toutes les supprimer), toutes les macros et toutes les références possibles dans l'éditeur de macro, mais le message "Excel has stopped working" est toujours là. Pourtant le message "Excel has stopped working" semble relié à ce fichier spécifique parce que ceux qui ont ce message, ne l'ont pas pour d'autres fichiers Excel. J'envisage de recopier toutes mes macros et tout le contenu de mes feuilles dans un autre fichier en espérant que ça règle le problème. Ce qui est plus problématique est l'impossibilité d'écriture dans MS Access. Certains sites suggéraient l'installation de ACEOLEDB.DLL pour faciliter le transfert des données d'un programme à l'autre. J'ai vérifié et l'utilisateur 2 l'a bien dans son ordinateur. Ce n'est donc pas à cause de ça que ça transfert pas. Qu'est-ce qui peut bien empêcher l'écriture dans Access pour l'utilisateur 2, alors que l'utilisateur 1 peut le faire et que tout deux n'ont pas Access installé sur leurs ordinateurs? Est-ce qu'il y a des réglages que je devrais verifier?

Voici à titre d'information ma macro. Je ne crois pas qu'elle contient d'erreur puisqu'elle fonctionne pour plusieurs utilisateurs dont l'utilisateur 1 qui n'a pas MS Access installé sur son ordinateur.

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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
Sub ADOTest()
'exports data from the active worksheet to a table in an Access database
Dim cn As ADODB.Connection, RS As ADODB.Recordset, r As Long
Dim oRange As Range
Dim JRange As Range
 
Set JRange = ThisWorkbook.Worksheets("Départements").Range("M1")
 
 
Application.ScreenUpdating = False
Application.Calculation = xlManual
 
Worksheets("Parametres").Select
 
If Range("C70").Value = "Oui" Or Range("C70").Value = "" Then
 
    Compte = Application.WorksheetFunction.CountA(Range("B2:B50"))
 
    If Compte = 0 Then
 
        Set cn = New ADODB.Connection
        cn.Open "provider = microsoft.ace.oledb.12.0;" & _
        "Data Source=\\sharepoint.ca\Shared Documents\DataBase51.accdb;"
 
        'open a recordset
        Set RS = New ADODB.Recordset
 
 
        Table = "Table1"
 
 
        RS.Open Table, cn, adOpenKeyset, adLockOptimistic, adCmdTable
        'all records in a table
        r = 38 'the start row in the worksheet
 
        With RS
            Do
                If RS.Fields("NoEmployé") = UserName Then
                    RS.Delete
                    RS.Update
                End If
                RS.MoveNext
            Loop Until RS.EOF
        End With
 
        ThisWorkbook.Activate
        Worksheets("TB OPÉRATIONNEL (global)").Select
 
 
 
 
        Range("E9").Select
        Do While ActiveCell.Offset(0, 1).Value <> ""
 
            If ActiveCell.Value <> "" Then
                With RS
                r = ActiveCell.Row
                .AddNew 'create a new record
                'add values to each field in the record
 
                .Fields("NoEmployé") = UserName
                .Fields("Quadrant") = Range("F" & r).Formula
                .Fields("Indicateur") = Range("G" & r).Formula
                .Fields("Cible") = Range("H" & r).Formula
                .Fields("RendementPrécédent") = Range("J" & r).Formula
                .Fields("AVR") = Range("L" & r).Formula
                .Fields("MAI") = Range("N" & r).Formula
                .Fields("JUIN") = Range("P" & r).Formula
                .Fields("JUIL") = Range("R" & r).Formula
                .Fields("AOUT") = Range("T" & r).Formula
                .Fields("SEPT") = Range("V" & r).Formula
                .Fields("OCT") = Range("X" & r).Formula
                .Fields("NOV") = Range("Z" & r).Formula
                .Fields("DEC") = Range("AB" & r).Formula
                .Fields("JAN") = Range("AD" & r).Formula
                .Fields("FÉV") = Range("AF" & r).Formula
                .Fields("MARS") = Range("AH" & r).Formula
                .Fields("YTD") = Range("AJ" & r).Formula
                .Fields("Inclure") = Range("AL" & r).Formula
                .Fields("TypeDonnées") = Range("H" & r).NumberFormat
                .Fields("Com") = Range("AO" & r).Formula
                'add more fields if necessary…
                .Update 'stores the new record
                End With
            End If
        ActiveCell.Offset(1, 0).Select
 
        Loop
 
 
        ThisWorkbook.Activate
 
 
        RS.Close
        Set RS = Nothing
        cn.Close
        Set cn = Nothing
    End If
End If
 
Application.ScreenUpdating = True
Application.Calculation = xlAutomatic
End Sub