Requête SQL UPDATE sur base de données SQL Server
Bonjour à tous,
Pour info, j'utilise actuellement un classeur avec l'extension .XLSB avec un modèle de données PowerPivot relié à une base de données SQL Server 2008 R2.
Ce classeur récupère des informations de ma base de données puis utilise ces données pour créer un tableau simple avec une liste d'articles et de temps dans une nouvelle feuille.
Mon problème est le suivant, je souhaiterais envoyer les données de ce tableau vers ma BDD SQL Server via une requête UPDATE.
Pour ce faire, j'utilise une macro liée à un bouton sur la feuille concernée.
Pour chaque ligne de mon tableau (nommé "Données"), je voudrais exécuter une requête UPDATE avec les paramètres récupérés sur la ligne.
Après quelques recherches et une petite révision de VBA, voici ce que j'ai produis :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| Sub EnvoiDonnéesBDD()
'Déclaration des variables de connexion
Dim connexion As New ADODB.Connection
Set connexion = New Connection
'Définition de la chaine de connexion - Chaine de connexion utilisée par PowerPivot
connexionChaine = "Provider=SQLOLEDB; " & _
"Data Source=SHV-PMISGBDR; " & _
"Persist Security Info=false; " & _
"Integrated Security=SSPI; " & _
"Initial Catalog=TEST"
'Ouverture de la base de données
connexion.Open connectionChaine
With ThisWorkbook.Worksheets(3)
Dim article, temps, composant As String
Dim I As Integer
Dim tableau As Range
Set tableau = Range("Données")
I = 3
'Boucle qui parcoure chaque ligne du tableau
For Each ligne In tableau.Rows
'Affectation des variables pour la requête
article = ThisWorkbook.ActiveSheet.Range("B" & I).Value
temps = ThisWorkbook.ActiveSheet.Range("D" & I).Value
composant = ThisWorkbook.ActiveSheet.Range("F" & I).Value
'Création de la requête UPDATE
requete = "UPDATE NOMENCLATURE SET TEMPS = " & temps & " WHERE SOCIÉTÉ = '100' AND ARTICLE = " & article & " AND COMPOSANT = " & composant
connexion.Execute requete
I = I + 1
Next ligne
connexion.Close
Set connexion = Nothing
Exit Sub
End With
End Sub |
Il s'avère que ce code ne fonctionne pas car le fournisseur de la connexion n'est pas pris en charge par Excel.
J'avoue ne pas être suffisamment calé en VBA pour déterminer comment résoudre mon problème.
De plus, utilisant PowerPivot, je me doute (ou du moins j'espère) qu'il doit y avoir une meilleure manière de faire le traitement que je recherche.
Je m'en remet donc à vos connaissances pour m'aider dans cette tâche.
Merci d'avance. :D