Utiliser deux loops do pour insert correctement datatables dans la database

J'essaye d'insert des données d'Excel à une database SQL au moyen de VBA. J'utilise la structure suivante dans Excel:

entrez la description de l'image ici

J'utilise le code suivant:

Private Sub CommandButton1_Click() Dim i As Integer Dim p As Integer Dim product As Ssortingng Dim version As Ssortingng Dim opt As Ssortingng Dim visible As Ssortingng Excel.Worksheets("Blad2").Select i = 3 Do Until IsEmpty(Cells(i, 1)) opt = ActiveSheet.Cells(i, 1) p = 3 Do Until IsEmpty(Cells(1, p)) product = ActiveSheet.Cells(1, p) version = ActiveSheet.Cells(2, p) visible = ActiveSheet.Cells(i, p) Debug.Print product & version & opt & visible p = p + 1 Loop i = i + 1 Loop End Sub 

Le résultat de l'exécution du script est le suivant:

  product#1 version#1 option#1 0 product#1 version#2 option#1 1 option#1 

Alors que je veux que cela se traduise par:

  product#1 version#1 option#1 0 product#1 version#2 option#1 1 product#1 version#1 option#2 0 product#1 version#2 option#2 0 

Est-ce que quelqu'un peut m'aider?

C'est quelque chose qui devrait fonctionner pour l'input de ceci:

entrez la description de l'image ici

apportant ceci:

 product1 version1 option1 0 product1 version2 option1 1 product1 version1 option2 0 product1 version2 option2 0 

 Option Explicit Public Sub TestMe() Dim k As Long Dim i As Long Dim p As Long Dim product As Ssortingng Dim version As Ssortingng Dim opt As Ssortingng Dim visible As Ssortingng With ActiveSheet i = 3 Do Until IsEmpty(.Cells(i, 1)) p = 3 k = 0 Do Until IsEmpty(.Cells(1, p)) opt = .Cells(i, 1) product = .Cells(1, p) visible = .Cells(i, p) version = .Cells(2, 3 + k) k = k + 1 Debug.Print product & " " & version & " " & opt & " " & visible p = p + 1 Loop i = i + 1 Loop End With End Sub 

En général, pensez à utiliser de meilleurs noms pour les variables et à utiliser Long au lieu de Integer .

J'ai peut-être manqué quelque chose mais semble que la variable visible est coincée avec la rangée 3 .Cells(3, p) , c'est pourquoi il insère seulement l'option 1 et ne tient pas count de la première boucle.

essayez de le changer avec visible = ActiveSheet.Cells(i, p)

Edit: Vous avez dit que cela ne fonctionne pas, mais semble quand je l'ai testé, je reçois le bon résultat.

Il est possible que la string SQL à exécuter soit le problème ici.

entrez la description de l'image ici