VBA SQL coller sur première cellule sans information
Salutations ,
J'utilise un code Vba avec SQL pour importer des données à partir d'un fichier fermé.
ci-dessous est la partie du code qui colle les informations dans la feuille de calcul cible.
Sub RequeteClasseurFerme(Fichier As String, Destination As String, Req As String)
Dim Cn As Object, Rst As Object, j As Integer
Set Cn = CreateObject("ADODB.Connection")
Cn.Provider = "MSDASQL"
Cn.Open "Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};" & _
"DBQ=" & Fichier & "; ReadOnly=False;"
Set Rst = CreateObject("ADODB.Recordset")
Rst.Open Req, Cn, 3
With Sheets(Destination)
.UsedRange.ClearContents
For j = 1 To Rst.Fields.Count
.Cells(1, j) = Rst.Fields(j - 1).Name
Next j
.Range("A2").CopyFromRecordset Rst
End With
Cn.Close
Set Rst = Nothing
Set Cn = Nothing
End Sub
Je veux coller dans la prochaine cellule vide de la colonne A les informations importées, c'est-à-dire ,
lorsque l'importation se produit, il y a déjà des données dans la feuille cible, donc je veux coller les informations dans la prochaine cellule vide de la colonne A de la feuille cible.
car le code actuel colle toujours les informations à propos de la cellule A2 .
Merci pour votre aide .
Bonjour star,
Votre code efface le contenu et insère ensuite les valeurs
Il faut donc le modifier comme suit :
Sub RequeteClasseurFerme(Fichier As String, Destination As String, Req As String)
Dim Cn As Object, Rst As Object, j As Integer
Dim CelDest as Range
Set Cn = CreateObject("ADODB.Connection")
Cn.Provider = "MSDASQL"
Cn.Open "Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};" & _
"DBQ=" & Fichier & "; ReadOnly=False;"
Set Rst = CreateObject("ADODB.Recordset")
Rst.Open Req, Cn, 3
With Sheets(Destination)
' Lignes inutiles puisque les entêtes sont déjà présentes
'For j = 1 To Rst.Fields.Count
'.Cells(1, j) = Rst.Fields(j - 1).Name
'Next j
' Définir la prochaine cellule vide
Set CelDest = .range("A" & rows.count).end(xlup).offset(1,0)
CelDest.CopyFromRecordset Rst
End With
Cn.Close
Set Rst = Nothing
Set Cn = Nothing
End Sub
A tester
Salutations BrunoM45 ,
Merci beaucoup d'avoir apporté une solution .