Comment rédiger une requête SQL dans un fichier excel?

Bonjour,

Je ne connais pas grand chose au language SQL, donc pardon si je dis des inepties.

J'ai bcp de données à stocker pour qu'elles soient de temps en temps appelée par un fichier excel et je cherche une solution. Les stocker dans une base séparée Access montre ses limites (la base dépasse 2GB). Donc je cherche s'il y a d'autres solutions de stockage des données.

Imaginons que depuis un fichier excel, je souhaite appeler une donnée qui figure dans une base de données SQL.

Imaginons que la table SQL comporte 3 champs : ID, Valeur1, Valeur2

1/ est-il possible via une formule VBA d'éxécuter ce type de requête?

2/ si oui, comment se rédigerait par exemple la requête qui appelle la Valeur1 associée à l'ID "X" ?

Merci de votre aide

Bonjour

Oui c'est possible en VBA

Pour dépasser 2GO il faut vraiment un très gros volume de données : combien d'enregistrements dans ta table ?

Bonjour,

1/ est-il possible via une formule VBA d'éxécuter ce type de requête?

à ma connaissance, ce n'est pas possibles avec les fonctions standards. Il faudra passer par une fonction personnalisée.

2/ si oui, comment se rédigerait par exemple la requête qui appelle la Valeur1 associée à l'ID "X" ?

la syntaxe de la requête SQL pourrait ressembler à ceci

select value1 from table where id='X'

Bonjour à tous,

Je pense que le tutoriel de "tatiak" pourrai bien t'orienter, ici : http://tatiak.canalblog.com/archives/2014/04/06/29605283.html.

Personnellement, je ne pourrai pas t'aider plus que ça au vu de mes capacités désolé

Je laisse donc la main aux personnes plus compétentes

A plus !

Bonjour à tous,

Pour info, pour les requêtes de base, le langage SQL n'est pas très compliqué à apprendre.

LE Site à se garder en marque-page/favoris est : http://sql.sh/

Ensuite, depuis Excel c'est assez simple d'exécuter des requêtes vers des bases SQL-Server / MySQl / Access , ou autres formats. Il faut simplement être attentif à ne pas mélanger langage VBA et langage SQL.

Pour compléter les excellentes sources de Braters (merci au passage) la page suivante donne aussi pas mal d'information => http://tatiak.canalblog.com/archives/excel_base_de_donnees/index.html

Pour répondre précisément à la question 2 de Nicopat la requête en VBA pourrait être du genre :

Dim Requete As String, Id As String

    Id = "X" ' ça pourrait être un truc genre Id = Sheets("Machin").Range("A1").Value
    Requete = "SELECT Valeur1, Valeur2 FROM [LaTable] WHERE ID=" & Id

Autre exemple, avec jointure de plusieurs tables voici une requete copiée d'une de mes appli (écrite sous Excel):

    Req = "SELECT MAX(V.Date_visite), M.Freq, R.Responsable, M.Id, M.Denomination, " & _
          " M.Reference, M.Emplacement, M.Batiment, M.Etage, M.Info1  " & _
          " FROM ([" & Materiel & "] AS M " & _
          " LEFT JOIN [" & Verif & "] AS V On M.Id=V.Id)" & _
          " LEFT JOIN [" & Responsables & "] AS R On R.Id_Resp=M.Id_Resp" & _
          " WHERE (dateadd('m',12/M.freq, V.Date_visite)<=" & CLng(Date) & _
          " OR V.Date_visite>=" & derJ & _
          " OR ISNULL(V.Date_visite)) "

NB : ici 'dateadd' est bien une fonction SQL valide, interprétée par le moteur SQL (ce n'est pas la fonction 'dateadd' du VBA)

Ensuite pour exécuter la requête, un script de connexion avec le bon driver, et on récupère le résultat de la requête dans un tableau. Çà peut donner un code du genre :

Dim Rst As Object, T As Variant

    Set Rst = CreateObject("ADODB.Recordset")
    Rst.Open Requete, Cnx, adOpenStatic
    Rst.MoveFirst
    T = Rst.GetRows

Pour finir, le SQL depuis Excel : Mangez-en! : c'est possible, c'est puissant et ce n'est pas si dur à mettre en place.

(Mais comme toujours, au préalable prenez le temps de bien concevoir la structure des tables!!)

Pierre (tatiak)

PS : pour du concret et comme exemple de code, ci-joint une démo Excel de synchronisation avec n'importe quelle base Access (non protégée).

Dans le code, plusieurs requêtes SQL : SELECT, INSERT, UPDATE le tout parfaitement fonctionnel (pour base de taille modeste : ce n'est qu'une démo).

PS2 : NB pour certaines bases SQL (par exemple MySql), il faut disposer d'un serveur.

PS3 : Ben dis-donc il faut déjà y aller pour atteindre les 2Go avec une base Access !!?!! Il n'y a pas de redondances dans les tables???

1'251synchro-access-v0-6.xlsm (42.08 Ko)
Rechercher des sujets similaires à "comment rediger requete sql fichier"