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
Partager