IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Contribuez Discussion :

le SQL dans Excel simplement


Sujet :

Contribuez

  1. #1
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut le SQL dans Excel simplement
    Bonjour à tous,

    Une solution pour utiliser rapidement du SQL sur une plage de données.
    Personnellement j'ai intégré un formulaire pour écrire la requête et rafraichir en macro complémentaire, mais c'est utilisable tel quel.


    Voici le code (à lettre dans un module) :
    NB : utilisation de DAO sans nécessité d'ajouter une référence.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    Option Explicit
     
    Sub RefreshSQL()
     
    Dim res As Range
    Dim firstAddress As String
     
        With ActiveSheet.Cells
            Set res = .Find(What:="RUNSQL", After:=ActiveCell, LookIn:=xlFormulas _
                , LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
                MatchCase:=False, SearchFormat:=False)
     
            If Not res Is Nothing Then
                firstAddress = res.Address
                Do
                    'Debug.Print res.Address, res.Value
                    If res.Value Like "RUNSQL:SOURCE=*" Then
                        ' exécution du SQL
                        Dim db As Object, dbEng As Object, rec As Object
                        Dim txtSource As String, txtTarget As String
                        Dim txtSQL As String, chkTitre As String, sSQL As String
                        Dim rt As Range, rs As Range
     
                        txtSource = Split(Split(res.Value, "SOURCE=")(1), ";TITRE=")(0)
                        chkTitre = CInt(Split(Split(res.Value, "TITRE=")(1), ";CMD=")(0))
                        txtSQL = Split(res.Value, ";CMD=")(1)
                        Set rs = Range(txtSource)
                        Set rt = res.Offset(1, 0)
     
                        Set dbEng = CreateObject("DAO.DBEngine.36")
                        Set db = dbEng.Workspaces(0).OpenDatabase(rs.Parent.Parent.FullName, _
                                                  False, _
                                                  False, _
                                                  "Excel 8.0;HDR=" & _
                                        IIf(chkTitre = True, "YES", "NO") & ";")
     
                        sSQL = Replace(txtSQL, "<Table>", "[" & rs.Parent.Name & "$" & rs.Address(False, False, xlA1) & "]")
                        Set rec = db.OpenRecordset(sSQL, 4)
                        rt.CopyFromRecordset rec
                        rec.Close
     
                        Set dbEng = Nothing
                        Set db = Nothing
                        Set rs = Nothing
     
                    End If
                    Set res = .Find(What:="RUNSQL", After:=res, LookIn:=xlFormulas _
                            , LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
                            MatchCase:=False, SearchFormat:=False)
                Loop While Not res Is Nothing And res.Address <> firstAddress
            End If
        End With
     
    Set res = Nothing
     
    End Sub
    Fichiers attachés Fichiers attachés
    Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème
    12 tutoriels Access



Discussions similaires

  1. requete sql dans excel + outlook
    Par princearchimed dans le forum Excel
    Réponses: 3
    Dernier message: 22/08/2013, 23h22
  2. [XL-2003] Import de données SQL dans excel
    Par lulu3111 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 20/04/2009, 10h14
  3. langage SQL dans Excel
    Par Daranc dans le forum Langage SQL
    Réponses: 3
    Dernier message: 05/03/2008, 08h58
  4. Donnee excel pour requete sql dans fichier txt ou doc
    Par Yogi_01 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 13/04/2006, 10h04
  5. [VBA]SQL dans Excel manipulation de données
    Par Deejoh dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 08/02/2006, 16h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo