Bonjour,
Nouveau sur le forum (même si j'ai déjà pas mal consulté de posts), je me trouve dans une impasse et me permets donc de faire appel à vous.
J'utilise le modèle ADODB pour récupérer des données dans un classeur qui me sert de base de donnée.
Je suis parti du tuto http://silkyroad.developpez.com/VBA/ClasseursFermes/ et cela fonctionne plutôt bien, mais il arrive (j'ai l'impression aléatoirement) que mon classeur de donnée s'ouvre, plutôt que de rester fermé.
Auriez-vous une explication ?
Y'aurait-il un code pour éviter que le classeur s'ouvre ?
Voici le code :
Merci d'avance pour votre aide
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 Sub MiseajourFicheArticle() Dim Cn As ADODB.Connection Dim Fichier As String Dim NomFeuille As String, texte_SQL As String Dim ADOCommand As ADODB.Command Dim Rst As ADODB.Recordset Sheets("Fiche article").Cells.Clear 'Définit le classeur fermé servant de base de données Fichier = ActiveWorkbook.Path & "\Extractions LX.xlsx" 'Nom de la feuille dans le classeur fermé NomFeuille = "Fiche article" & "$" Set Cn = New ADODB.Connection '--- Connection --- With Cn .Provider = "Microsoft.ACE.OLEDB.12.0" .ConnectionString = "Data Source=" & Fichier & ";Extended Properties=""Excel 12.0 Xml;HDR=YES"";" .Open End With '----------------- Set ADOCommand = New ADODB.Command With ADOCommand .ActiveConnection = Cn .CommandText = "SELECT * FROM [" & NomFeuille & "]" End With Set Rst = New ADODB.Recordset Rst.Open ADOCommand, , adOpenKeyset, adLockOptimistic Set Rst = Cn.Execute("[" & NomFeuille & "]") 'Copie du Recordset dans la feuille "Fiche article" Sheets("Fiche article").Range("A2").CopyFromRecordset Rst '--- Fermeture connexion --- Rst.Close Cn.Close Set Cn = Nothing Set Rst = Nothing Set ADOCommand = Nothing End Sub
Partager