compréhension macro connection ADODB
bonjour,
je me tourne vers vous car je n'arrive pas a comprendre le code pour les connection ADODB
Serait il possible de le commenter afin que je puisse comprendre ce code et pouvoir le refaire à ma guise?
Car ce code prend les donénes d'une base de données or ce n'est pas un copier coller pur vu que les données apparaissantes dans la feuille base de ce classeur ne sont pas exactement les même. Il prend pas toutes les données donc j'aimerai comprendre pourquoi.. Peut être est ce a cause des cellules fusionées dans la base de donnée?
J'ai regardé les tutos et tout mais je ne comprend pas toutes ces propriétés..
Y aurait il quelqu'un qui prendrait un petit peu de son temps pour m'expliquer ce code?
et comment choisir les bonnes référence car il y a plusieurs référence et si j'en choisi une différente, le copier coller n'est pas le même...
Merci d'avance et bonne journée
Code:
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
| Private Sub Workbook_Open()
If Not (ThisWorkbook.ReadOnly) Then
Application.ScreenUpdating = False
Application.DisplayAlerts = False
'===================================================================================================
'Mise à jour de la base de données
'===================================================================================================
Worksheets("Base").Range("A2:I4000").ClearContents
Dim Source As ADODB.Connection
Dim Rst As ADODB.Recordset
Dim ADOCommand As ADODB.Command
Dim Fichier As String, Plage As String, Feuille As String
Plage = "A2:I4000"
Feuille = "Base$"
Fichier = "" & Worksheets("Paramètres").Cells(5, 3) & ""
Set Source = New ADODB.Connection
Source.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Fichier & ";Extended Properties=""Excel 8.0;IMEX=1;HDR=No;"";"
Set ADOCommand = New ADODB.Command
With ADOCommand
.ActiveConnection = Source
.CommandText = "SELECT * FROM [" & Feuille & Plage & "]"
End With
Set Rst = New ADODB.Recordset
Rst.Open ADOCommand, , adOpenKeyset, adLockOptimistic
Set Rst = Source.Execute("[" & Feuille & Plage & "]")
ThisWorkbook.Worksheets("Base").Range("A2").CopyFromRecordset Rst
Rst.Close
Source.Close
Worksheets("Base").Visible = True
Worksheets("Base").Activate
Columns("A:A").Select
Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(1, 1)
Worksheets("Base").Visible = False
Set Source = Nothing
Set Rst = Nothing
Set ADOCommand = Nothing
'Liste PETRI
If Worksheets("Liste PETRI").AutoFilterMode Then
Worksheets("Liste PETRI").Rows("2:2").AutoFilter
Worksheets("Liste PETRI").Rows("2:2").AutoFilter
Else
Worksheets("Liste PETRI").Rows("2:2").AutoFilter
End If
'Liste T&F
If Worksheets("Liste T&F").AutoFilterMode Then
Worksheets("Liste T&F").Rows("2:2").AutoFilter
Worksheets("Liste T&F").Rows("2:2").AutoFilter
Else
Worksheets("Liste T&F").Rows("2:2").AutoFilter
End If
Application.Windows(ThisWorkbook.Name).Visible = True
End If |