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 .

Rechercher des sujets similaires à "vba sql coller premiere information"