Bonjour,

Nous utilisons SAP B1 HANA.
Après avoir défini une connexion ADODB avec Recordset

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
    Dim cNBusinessPartner As ADODB.Connection
    Dim rsUserFacture As ADODB.Recordset
    Dim rsBusinessParner As Recordset
j'établis la connexion (les XXX sont remplacés par mes valeurs)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
   cNBusinessPartner.ConnectionString = "Driver={HDBODBC};ServerNode=XXX:XXX;Database=" & MyBaseSap & "; Uid=XXX;Password=XXX;"
   cNBusinessPartner.Open
 
  Set rsUserFacture = New ADODB.Recordset
je créé une requête SQL qui va me chercher les données :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
     requete = "SELECT * FROM " & vbNewLine
     requete = requete & " (  " & vbNewLine
     requete = requete & "  SELECT T0.""DocNum"" AS ""DocNum"" " & vbNewLine
etc...


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
   With rsUserFacture
       .CursorLocation = adUseClient
       .ActiveConnection = cNBusinessPartner
       .Open requete, cNBusinessPartner
    End With
Par ailleurs, j'ai défini un tableau :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
   Dim MyRange() As Variant
dans lequel je verse les données reçues :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
        MyRange = rsUserFacture.GetRows
        NbrCol = UBound(MyRange, 1)
        NbrRow = UBound(MyRange, 2)
Quand je fais :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Worksheets("Activité").Range(Cells(4, 4), Cells(NbrRow, NbrCol)) = MyRange
C'est la cata, le positionnement des cellules n'est pas respecté.

Quand je fais :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
       For i = 0 To (NbrRow - 1)
        '  For i = 0 To 100
            For j = 0 To NbrCol
                Worksheets("Facture").Cells(MyDebRowFactureData + i, MyDebColumnFacture + j).Value = MyRange(j, i)
            Next j
        Next i
Nickel, cela fonctionne parfaitement ... avec quelques lignes (exemple ici 100 lignes pour le 1ier For mis en commentaire) !

Sauf que j'ai 22 colonnes et environ plus de 10 000 lignes.

L'utilisation de la double boucle pour remplir le tableau est beaucoup, beaucoup trop longue.

Comment faire, quelle méthode utiliser pour être plus performant ?