Quelle syntaxe me faut-il??

Bonjour à tous,

Dsl de venir vous déranger si tôt, mais j'ai un petit problème.

J'aimerais me connecter à une BDD, mais, quand j'essaye cela me retranscrit ma base dans un tableau sur ma feuille, alors que j'aimerais juste m'y connecter afin d'effectuer des requêtes "SELECT" à partir de ma feuille.

Comment dois-je faire?? Ou écrire mes requêtes??

Cela fonctionne via SQL Server!

Merci.

Personne pour m'aider??

Bonjour kris0311,

1- Est-ce que tu es à l'aise avec VBA?

2- Tes données sont stocké où: SQL SERVER, ACCESS.

En attendant ta réponse.

Bonjour dsl du retard je n'avais pas internet hier!

Avec le vba non je ne suis pas a l'aise, bien que je connai un tout petit peu la programmation en general.

Quant a mes données, elle sont stocké sur SQL server.

Ok, disons que tu veux faire une requête à ton serveur SQL pour afficher le résultat d'une requete dans une cellule.

-Commence par créer une procedure en VBA

Public Sub Connection()

End Sub

- ensuite active la référence à Microsoft ActiveX Data Object 2.8 Library: dans l'éditeur VBA, Outils, Références et coche la bonne référence.

-Maintenant on peu se connecté à SQL Server avec ADO. Déclare les variables suivante:

'L'objet cnn servira de connexion avec le Serveur
    Dim cnn As ADODB.Connection
    'La chaine de connection au serveur
    Dim connectionString As String
    'L'objet rst contiendra le résultat de la requete
    Dim rst As ADODB.Recordset
    'Ta chaine SQL
    Dim strSQL As String

-Ensuite on initialise les variables:

Set cnn = New ADODB.Connection
    connectionString = "Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;"
    strSQL = "Select * FROM MaTable WHERE CodeClient = 1"

Dans la deuxième ligne tu dois remplacer les valeurs myServerAddress, myDataBase, MyUsername et myPassword.

- On établit ensuite la connexion et on affecte le résultat de la requete à l'objet rst.

cnn.Open connectionString
Set rst = cnn.Execute(strSQL)

-Maintenant que le résultat de la requète est dans l'objet rst, tu peux afficher les résultats de diverse façon, la plus facile est la suivante:

sheets("Feuil1").Range("A1").CopyFromRecordset rst

le résultat sera copié depuis la cellule A1 de la feuille 1.

- Un fois le traitement terminé, fait un peu de netoyage

rst.Close
cnn.Close
Set rst = Nothing
Set cnn = Nothing

en résumé ça donne ceci:

Public Sub Connection()
    'Il faut activer la référence à Microsoft ActiveX Data Object 2.8 Library
    'L'objet cnn servira de connexion avec le Serveur
    Dim cnn As ADODB.Connection
    'La chaine de connection au serveur
    Dim connectionString As String
    'L'objet rst contiendra le résultat de la requete
    Dim rst As ADODB.Recordset
    'Ta chaine SQL
    Dim strSQL As String

    Set cnn = New ADODB.Connection
    connectionString = "Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;"
    strSQL = "Select * FROM MaTable WHERE CodeClient = 1"

    cnn.Open connectionString
    Set rst = cnn.Execute(strSQL)

    sheets("Feuil1").Range("A1").CopyFromRecordset rst

    rst.Close
    cnn.Close
    Set rst = Nothing
    Set cnn = Nothing
End Sub

la chaine de connexion au serveur change selon la version de SQL SERVER que tu as.

Ce site liste des chaines de connexion pour les différentes versions.

www.connectionstrings.com

Hésite pas si tu as des questions.

Bonjour,

Déjà merci pout ton aide.

J'ai un petit souci a la ligne "cnn.Open connectionString"

Message "Erreur d'execution"

Source de données introuvable et nom de pilote non spécifié

Pour tant j'ai exactement fait ce que tu m'a dit.

serait-ce a cause du data source ou j'ai mis 127.0.0.1 ?? car la base est sur mon PC

essaie la connection proposé sur le site que je t'ai donnée :

Connect via an IP address

Data Source=190.190.200.100,1433;Network Library=DBMSSOCN;Initial Catalog=myDataBase;User ID=myUsername;Password=myPassword;

DBMSSOCN=TCP/IP. This is how to use TCP/IP instead of Named Pipes. At the end of the Data Source is the port to use. 1433 is the default port for SQL Server.

est-ce que tu peux donner ta chaine de connection, si ce n'est pas trop privé?

Quel version de SQL SERVER tu utilises? car avec SQL EXPRESS tu dois utilisé NomDuServeur/SQLEXPRESS comme nom de serveur.

11exemple-1.xlsx (88.90 Ko)

J'utilise sql server 2008!!

Ma chaine?? celle que tu as ecris ecrit deans le code!!??

J'ai essayé avec plusieurs "ecriture" differente dans le data source!!!, mais j'ai toujours la même erreur qui est:

Erreur d'execution '-2147467259 (80004005)':

[Microsoft][Gestionnaire de pilotes ODBC] Source de données

introuvable et nom de pilote non spécifié.

J'ai regardé un peu partout sur internet a propos de cette erreur, apparament il manquerait des drivers ODBC que je n'aurai pas installé. Serait-ce ca??

Voila la Chaine de connexion que j'ai écrit:

connectionString = "Data Souce=127.0.0.1;Initial Catalog=Gene; User ID=cdanis;Password=test;"

Pour faire une connection ODBC

-Dans le panneau de configuration, va dans outils d'administration. Clique ensuite sur Source de données ODBC.

- Clique sur ajouter, choisi SQL SERVER. Clique sur Terminer

- Entre un nom et une description pour ta connection. Ensuite choisi ton serveur dans la liste ( ou inscrit le ) . Tu devrais y retrouver ton adresse 127.0.0.1 Clique sur suivant.

- Choisi l'option "Avec l'authentification SQL ..." et entre ton Id et ton mot de passe. Clique sur suivant

- Choisi le nom de ta base de donnée par défaut et clique sur suivant

- Tu n'as rien à changer dans la fenêtre suivante, clique sur Terminer et le tour est joué. Tu peux tester la connection avec le bouton du même nom.

Maintenant tu as une connection ODBC vers ton serveur SQL. Réessaie ton code ça devrait marché.

re,

Alors je n'ai pas pu faire cela avec une authentification SQL, donc je l'ai fais avec Authentifiant windows intégré, pour le serveur j'ai mis 127.0.0.1.

Le resultat est le meme!!!

ReBonjour,

- Pourquoi est-ce que tu ne peux le faire avec une authentification SQL ? Est-ce que ça te génère une erreur?

- Avec la connection que tu as crée, si tu clique sur "Tester la source de données" est-ce que le test est concluant.

a plus ,

Math

Quand j'essai avec l'Auth SQL, je ne peux pas faire suivant pout terminer la config car ca me met ca:

Echec de connexion:

Etat SQL: '28000'

Erreur SQL Server : 18456

[Microsoft][SQL Native Server Client 10.0][SQL Server]

Echec de l'ouverture de session de l'utilisateur 'cdanis'.

Bonjour kris0311,

tu vas peut-être me trouver un peu idiot, mais est-tu sur que le User et le mot de passe sont bon? Et si tu essaie avec un nouveau User qui a tous les droits ? L'erreur 18456 signifie habituellement une erreur de mot de passe ou de Login, mais ça peut être autre chose http://msdn.microsoft.com/fr-fr/library/ms366351.aspx.

Désolé, mais connaissance sont assez limité en SQL Server. Je me connecte de la facon que je t'ai indiqué et ça fonctionne. Vérifie du coté de la configuration de ton serveur.

Donne moi des nouvelles de ta progression

Math

Slt Math

Eh bien j'ai essayé plusieurs login et mot de passe mais sans succès!!

Sur mon server (Microsoft SQL Server Management Studio), j'ai juste crée une nouvelle base sans avoir paramétré qulque de spécial.

Personne aurait une petite idée??

Problème résolu concernant la connexion, donc d'autres problème apparaissent!!!

Mon soucis maintenant est que j'aimerai mettre le résultat de ma requete dans une liste déroulante (comboBox) qui est en cellule C5

je vous ecrit une partie du code

Dim VarSem AS Interger

VarSem = Range(("B5") => B5 est une liste deroulante de 1 a 52 (semaine de l'année)

strSQL = "SELECT DISTINCT Affaire FROM genex where Semaine = VarSem"

mais il ne veux apparement pas accepter le VarSem

Je vous met un fichier pour plus de clareté!!

Merci

Content de voir que tu peux te connecter.

Pour ta chaine SQL essaie ceci:

strSQL = "SELECT DISTINCT Affaire FROM genex where Semaine = " & VarSem
Rechercher des sujets similaires à "quelle syntaxe faut"