KioskeaKioskeaCommentCaMarcheInscrivez-vous, c'est gratuit !
Samedi 17 mai 2008 - 23:53:20

Excel et base de données SQL server

Rechercher : dans
Excel et base de données SQL server
par ppil
 Fil de Discussions
Statut : Résolu
vendredi 28 décembre 2007 à 14:13:00
Bonjour,

Je souhaiterai apprendre à programmer en VBA depuis Excel pour aller en lecture/écriture dans une base de donnée SQL Serveur.

Existe-t-il un tutorial, un site ou un livre qui me permettrait de me former. Je suis autodidacte en informatique...

Si possible en français.

Merci d'avance.

ppil
Configuration: Windows Vista
Internet Explorer 7.0
Répondre à ppil  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par bnb, le vendredi 28 décembre 2007 à 14:27:41 Fil de Discussions
Peut être que pour un débutant ce serait préférable de créer un lien ODBC depuis access vers sql server et apprendre le VBA via access! ;-)
Répondre à bnb

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par ppil, le vendredi 28 décembre 2007 à 14:32:57 Fil de Discussions
Merci bnb,

Mais je ne souhaite pas passer/transiter par Access, pour divers raison ;-(
Répondre à ppil

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par brolino, le vendredi 28 décembre 2007 à 16:45:18 Fil de Discussions
Il ya un moyen mais je ne sais si c'est suffisant, sachant que ça ne fait que de la lecture simple:
- Créer un fichier Excel (2003).
- Aller dans Outils > Macro > Visual Basic Editor.
- Ajouter les références suivantes : Microsoft DAO 3.6 Object Library et Microsoft ActiveX Data Objects 2.8 Library.
- Dans la fenêtre VB qui s'ouvre créer un nouveau module depuis l'onglet de gauche et y insérer ce code :
Public cN As ADODB.Connection
Public rs As ADODB.Recordset
Public Sub conNect()
    Set cN = New ADODB.Connection
    dbPath = paTh
    cN.ConnectionString = "Provider=SQLOLEDB;Data Source=Nom_Du_Serveur;Initial Catalog=Nom_de_La_Base; User ID=Votre_Login;Password=Votre_Password;"
    cN.Open
End Sub

- Double-cliquer sur ThisWorkBook (dans l'explorateur d'objects) et insérer ce code:
Private Sub Workbook_Open()
Module1.conNect
Set rs = New ADODB.Recordset
rs.Open ("select * from Ma_Table"), cN
i = 1
While Not rs.EOF
        For j = 1 To rs.Fields.Count - 1
            Feuil1.Cells(i, j) = rs(j - 1)
        Next
i = i + 1
rs.MoveNext
Wend
End Sub

- Sauvegarder le tout.
- Fermer et ouvrir le fichier XLS créé.
Les données de la table se chargent dans la Feuille Feuill1
Répondre à brolino

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par ppil, le samedi 29 décembre 2007 à 18:10:25 Fil de Discussions
Merci Brolino,

Mais mon but est d'apprendre.

Je souhaiterai comprendre pourquoi et comment on doit utiliser telle ou telle instruction.

Je me débrouille en VBA de base, mais concernant les instructions pour SQL serveur je nage.

Donc je suis à la recherche de document qui me permettrait d'apprendre.

Brolino où as-tu appris pour arriver à écrire ce code?

merci d'avance
ppil
Répondre à ppil

5


  • 1
    Ce message vous semble utile, votez !
  • Ce message ne vous semble pas utile, votez !
  • Signaler ce message aux modérateurs
Par brolino, le vendredi 4 janvier 2008 à 13:30:26 Fil de Discussions
Bonjour ppil,

D'abord, pour accéder à une source de données, SQL Server en l'occurence, il faut :
1 - Se connecter à cette source de données :
1 - 1 - Ajouter les références requises, pour pouvoir déclarer l'objet de connection.
1 - 2 - Déclarer l'objet de connection :
Public cN As ADODB.Connection

1 - 3 - Instancier l'objet de connection :
Set cN = New ADODB.Connection

1 - 4 - Définir une connection string (chaine de connection) et l'affecter à la connection.Cette chaine doit renseigner sur :
- Le Provider (fournisseur de BDD ou SGBD)
- Le nom de la BDD.
- Les paramètres de login et mot de passe (optionnels).
cN.ConnectionString = "Provider=SQLOLEDB;Data Source=Nom_Du_Serveur;Initial Catalog=Nom_de_La_Base; User ID=Votre_Login;Password=Votre_Password;"

1 - 5 - Ouvrir la connection en utilisant l'object de connection instancié (1-3) et la connection string (1-4) :
cN.Open

ignore la ligne (
dbPath = paTh
)

2 - Utiliser un recordset pour accéder aux données:
Le recordset est un objet qui parcourt une le résultat d'une requête SQL.
2 - 1 - Déclarer le recordset:
Public rs As ADODB.Recordset

2 - 2 - Instancier l'objet de connection :
Set rs = New ADODB.Recordset

2 - 3 - Exécuter la requête SQL en utilisant le recordset et la connection instanciés:
rs.Open ("select * from Ma_Table"), cN

"cN" étant le nom de la connection utilisée.
Le recordset "rs" est ainsi une sorte de table virtuelle dont le contenu reflète la requête SQL utilisée comme paramètre.
Ce recordset peut être parcouru, ou utlisé pour faire une mise à jour ou une suppression par exemple.
rs(0) => le contenu de la première colonne
rs("Nom") => le contenu de la colonne "Nom"
rs.movenext => le recordset navigue vers l'enregistrement suivant.

Il y a plein d'autres choses possibles, mais je te laisse les découvrir vu que l'interface de VBA facilite l'apprentissage.

Quand à ta question par rapport à mes sources d'apprentissage, j'ai quelques bases (minimes) du temps de mes études, mais le tout est de télécharger des projets ou des codes source déjà prêts, et d'essayer de les comprendre et de trouver une logique à tout ça.
Les documentations peuvent aussi beaucoup t'aider, je te conseille d'aller voir sur www.developpez.com.
Répondre à brolino

6


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par ppil, le lundi 7 janvier 2008 à 10:31:47 Fil de Discussions
Merci Brolino,

C'est vrai, "petit à petit l'oiseau fait son nid".

Je trouve dommage qu'il n'a pas d'ouvrage sur le sujet.

On trouve beaucoup de livres ou de tutoriaux pour débutant, mais dès que l'on veut faire un pas suivant, il ne reste que la débrouillardise.

Enfin, j'ai déjà un bout de ma réponse. Pour le reste ... j'irais voir sur www.developpez.com


ppil
Répondre à ppil

7


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par ppil, le mercredi 9 janvier 2008 à 11:26:32 Fil de Discussions
Bonjour,

Pour ceux que ça intéressent, j'ai trouvé un livre qui répond à ma question.

Voici le lien:
http://www.pearson.ch/...

Je viens de le recevoir, il ne me reste plus qu'à ...

Salutations,

ppil
Répondre à ppil

8


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par fredd, le mercredi 23 avril 2008 à 14:20:25 Fil de Discussions
Bonjour à vous,

Après quelques recherche sur notre amis à tous... Google pour trouver un moyen d'extraire des infos d'une base de donées SQL sur un fichier Excel, j'ai trouvé ce post.

Ne connaisant pas grand chose... pour ne pas dire rien au VBA j'ai donc essayé l'exemple de brolino mais sans succes :-(

Je n'ai pas de message d'erreur , mais mes feuilles1,2 et 3 sont vides.

Dois-je créer un lien ODBC ? Comment ?
Répondre à fredd

9


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par fredd, le jeudi 24 avril 2008 à 15:41:55 Fil de Discussions 
Après encor quelques heures de recherche j'ai finalement trouvé ce que je voulais.

Il suffit d'aller dans le menu d'Excel, Données ,Données Externes.

Il y a plusieur technique , la premiere asssez basique qui ne permet pas faire vraiment de tri. ( Importer des donées)

Et l'autre que j'ai choisis qui est créer une requête. Avant de choisir cette technique, il faut créer un lien ODBC.
Je vous rassure j'y suis arrivé et je n'y avas jamais touché.

Je vais donc décrir la technique que j'ai choisis :

1- Créer un lien ODBC : Aller dans démarer->Paneau de configuration ->Outils d'admoinistration ->Sources de données (ODBC).Pour mon cas ma bdd etait sur un serveur distant et ma base de bdd est en sql donc cliquer sur l'onglet: Sources de données System puis Ajouter.
Une liste s'affiche aller tout en bas pour choisir SQL Server, cliquer sur terminer.
suivez l'assistant et tout devrait bien se passer.


2-Sous Excel aller dans le menu, Données ,Données Externes,créer une requête. (Important le composant MSQUERY doit etre installé,il ne l'est pas forcement par defaut, il va falloir retrouver le cd qui doit trainer sous la pouciere ^^)
-Choisir votre lien ODBC.
-Choisir votre table et vos champ.

Après je vous laisse découvrir les jois d'SQL.

dans mon cas ma bdd était assez grosse et pour eviter d'importer des information en doublons dans la requete SQL je vous conseil d'utiliser la fonction DISTINCT exemple :

SELECT DISTINCT (MATABLE.MATABLE_MONCHANP1)

Bonne chance a tous.
Répondre à fredd
Discussions pertinentes trouvées dans le forum
30/04 21h16Comment exporter une base donnée Sql Server 7Programmation30/04 21h160
16/10 16h45Connexion aux base de données SQL serverProgrammation08/05 17h1721
14/04 17h31[asp.net et base de donnees sql server]Programmation08/04 21h5013
10/10 17h24migration d'une base de données sql serverProgrammation18/02 23h197
Plus de discussions sur « Excel et base de données SQL server » Discussion en cours Discussion fermée Problème résolu
Répondre
Titre du message :
Votre pseudo:
Votre email :
Message: 
  •  
  •  
Options: Recevoir les réponses par mail.
 

Aide