Extraire Tableau Excel Vers serveur SQL Serveur 2008 R2

bonjour à vous

je viens vers vous pour chercher de l'aide à propos de la relation entre SQL serveur et Excel

je vous expose mon soucis

j'ai un fichier excel avec plusieurs feuilles.

j'ai un serveur SQL qui s'appelle OASIS - FTM - 1

une database qui se nomme LANGUAGE

et plusieurs tables dans cette database

j'ai réussi à me connecter à ce serveur avec une macro VBA

j'aimerai que ma macro VBA copie les données du tableau d'une feuille excel se nommant LANGUAGE_ANA_I et transfert les informations collées dans ma table de mon serveur SQL

j'ai codé ceci mais le code plante au niveau de l'envoie des données

 

Sub ADOExcelToSQLServer()

Dim Cn As ADODB.Connection
Dim ServerName, DatabaseName, TableName, UserID, Password As String
Dim rs As ADODB.Recordset
Dim RowCounter, StartRow, EndRow As Long
Dim ColCounter, NoOfField As Integer
Dim ws As Worksheet

Set rs = New ADODB.Recordset
ServerName = "OASIS-FTM-1"
DatabaseName = "LANGUAGE"
Table = "LANGUAGE.dbo.tab_ANA_I"
UserID = "sa"
Password = "BocO@sis@1"
Set ws = ThisWorkbook.Worksheets("LANGUAGE_ANA_I")

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''Ici on va crée la connexion
sConnString = "Provider=SQLOLEDB;Data Source=" & ServerName & ";Initial Catalog=LANGUAGE;User id = " & UserID & ";password = " & Password
Set Cn = New ADODB.Connection
Cn.Open sConnString
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'With Sheets("LANGUAGE_I_ANA")
'     i = 2
  '   Do
   '       Valeur1 = Sheets("LANGUAGE_I_ANA").Cells(i, 1).Value
 '         Valeur2 = Sheets("LANGUAGE_I_ANA").Cells(i, 2).Value
 '         requete = "INSERT INTO [LANGUAGE].[dbo].[tab_ANA_I] ([TAG],[DESC]) " & _
 '                   " VALUES('" & Valeur1 & "','" & Valeur2 & "')"
'          Cn.Execute requete
 '         i = i + 1
 '    Loop While .Cells(i, 1) <> ""
'End With
'Cn.Close

'requete = "INSERT INTO [LANGUAGE].[dbo].[tab_ANA_I] ([TAG],[DESC]) " & _
                    " VALUES('"SELECT [TAG],[DESC] FROM Sheets('"LANGUAGE_I_ANA"')"')"

Cn.Execute "Insert INTO Table[(TAG[,DESC])"
& " SELECT TAG[,DESC] "
FROM ws

Cn.Close

End Sub

je planche dessus depuis 4 jours j'ai regardé des tutos ect ect mais je suis une vraie bille en SQL

merci à vous tous pour votre aide

ps : je tiens à préciser que j'ai poster le meme post sur un autre forum

merci encore à vous

Boudiou, mais tu fais n'importe quoi!

Tu ne peux pas mélanger dans une même requête un INSERT sur la base sql-server + un SELECT sur le fichier excel.

Et pourquoi ouvrir 2 fils de discussion pour le même problème??

Regarde ce que j'ai écris ici (avec fichier exemple fonctionnel) c'est pour une base mySql, mais le principe est le même

parce que le probleme est un peu différent

et j'ai marqué cela parce que sur des tutos ils marquait que des insert into select existe regarde

https://technet.microsoft.com/fr-fr/library/ms188263(v=sql.105).aspx

et ce code ci fonctionne une seule fois

connaîtrez tu le moyen de update des info au lieu de les copier coller ? car il fonctionne qu'une seule fois car il ne veut pas copier fois la même info

With Sheets("LANGUAGE_I_ANA").UsedRange

For i = 2 To .Rows.Count

Cn.Execute "Insert INTO ([TAG],[DESC]) Values ('" & .Cells(i, 1).Value & "','" & .Cells(i, 2).Value & "');"

Next

End With

Je persiste et je signe : tu ne pourra JAMAIS mélanger dans une même requête un INSERT sur la base sql-server + un SELECT sur le fichier excel

Tu ne peux pas ouvrir une connexion à la fois avec un driver Sql-server et avec un driver Excel => cf ligne :Cnx.Open "Driver={SQL Server}; ...

Une connexion est soit avec Sql-server soit avec excel, JAMAIS les 2 en même temps

Tant que tu mélangera tout et n'importe quoi dans ton code, ça ne marchera pas.

le soucis c'est que le programme fonctionne pour une utilisation et quand je parle du programme je parle de celui la

Sub ADOExcelToSQLServer()

Dim Cn As ADODB.Connection
Dim ServerName, DatabaseName, TableName, UserID, Password As String
Dim rs As ADODB.Recordset
Dim RowCounter, StartRow, EndRow As Long
Dim ColCounter, NoOfField As Integer
Dim ws As Worksheet
Dim Valeurs As String

Set rs = New ADODB.Recordset
ServerName = "OASIS-FTM-1"
DatabaseName = "LANGUAGE"
Table = "LANGUAGE.dbo.tab_ANA_I"
UserID = "sa"
Password = "BocO@sis@1"
Set ws = ThisWorkbook.Worksheets("LANGUAGE_ANA_I")

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''Ici on va crée la connexion
sConnString = "Provider=SQLOLEDB;Data Source=" & ServerName & ";Initial Catalog=LANGUAGE;User id = " & UserID & ";password = " & Password
Set Cn = New ADODB.Connection
Cn.Open sConnString
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
With Sheets("LANGUAGE_ANA_I").UsedRange
    For i = 2 To .Rows.Count
       Cn.Execute "Insert INTO " & Table & "([TAG],[DESC]) Values ('" & .Cells(i, 1).Value & "','" & .Cells(i, 2).Value & "');"
    Next
End With

Cn.Close

le soucis de ce code pour mon projet c'est que mes feuilles peuvent contenir X ligne et X colonnes donc petit soucis

et la première colonne est toujours primaire

Rechercher des sujets similaires à "extraire tableau serveur sql 2008"