Bonjour à tous,
J'utilise une base de donnée access dans laquelle j'extrait une table AS400 que je copie dans une table ACCESS. Je voudrais faire la même chose dans Excel et c'est la que j'ai un peu de mal ... Je ne sais pas comment lui indiquer de copier les données dans une feuille Excel.
Voici le code que j'utilise actuellement :
Sub Essai()
' variables paramètres
Dim Nas As String 'variable nom de l'As400
Dim Nus As String 'Variable nom utilisateur
Dim Cus As String 'Variable Code Utilisateur
' Les trois variables suivantes vont chercher leurs valeurs dans la table " Paramètres "
Nas = "XXXXX"
Nus = "XXXXX"
Cus = "XXXXX"
bibli = XXXXX
repert = XXXXX
soc = XXXXX
' Nous lançons la connexion.
Set CnnAs400 = CreateObject("ADODB.connection")
Set CnnAs400 = CreateObject("ADODB.connection")
CnnAs400.Open "provider=IBMDA400;data source=" & Nas & "", Nus, Cus
'Set Cnndb = CurrentProject.Connection
Set RsAs400 = CreateObject("ADODB.recordset")
RsAs400.ActiveConnection = CnnAs400
' Nous créons la Requête.
query = " " & _
" select XXXXX " & _
" from " + bibli + "." + repert + "" & _
" where (XXXXX= '" + soc$ + )"
RsAs400.Open query
Do Until RsAs400.EOF
i = 1
For Each fld In RsAs400.Fields
Select Case i
Case 1
champ1 = fld.Value
Case 2
champ2 = fld.Value
Case 3
champ3 = fld.Value
Case 4
champ4 = fld.Value
Case 5
champ5 = fld.Value
Case 6
champ6 = fld.Value
Case Else
End Select
i = i + 1
Next fld
If Rsdb.State = 0 Then
' ouverture de la table et remplissage
Rsdb.Open "Table", Cnndb, adOpenKeyset, adlockoptimistic
End If
With Rsdb
' attribution des valeurs aux champs correspondants
.AddNew Array("XXXXX", "XXXXX", "XXXXX", "XXXX", "XXXX", "XXXX"), _
Array(champ1, champ2, champ3, champ4, champ5, champ6)
.Update
End With
RsAs400.MoveNext
Loop
' ferme la connexion
RsAs400.Close
Set RsAs400 = Nothing
Set Rsdb = Nothing
Set CnnAs400 = Nothing
Set Cnndb = Nothing
Merci d'avance