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

Macros et VBA Excel Discussion :

Sql et excel


Sujet :

Macros et VBA Excel

  1. #1
    En attente de confirmation mail
    Inscrit en
    Septembre 2009
    Messages
    269
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 269
    Points : 96
    Points
    96
    Par défaut Sql et excel
    Bonjour,

    Je vous ai déjà consulté sur ce point, mais je n'avais pas posé les bonnes questions :
    Dans un classeur excel, le voudrais utiliser une ou plusieurs feuilles comme une base de donnée, et afficher les résultats de la requête dans une nouvelle feuille, je crois savoir que c'est possible.
    Je ne vous demande pas de code, mais plutôt une marche à suivre et aussi quelque chose qui m'échappe : où écrire cette requête et faut-il des modules complémentaires, faisant cela dans le cadre de mon travail, j'ai le strict excel de MSoffice mais s'il faut autre chose les droits d'administrateurs interdisent toute installation supplémentaire, et toute demande particulière aboutit à un refus.

    Voilà, c'est très basique.
    Je vous remercie,

    Philippe

  2. #2
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Points : 1 199
    Points
    1 199
    Par défaut
    A ma connaissance, ce n'est pas possible. Un tableur n'est pas une base de données.
    Toute requête sur des feuilles Excel se fera par des instructions find et il est possible de les concaténer mais cela n'a évidemment pas la puissance du sql.

    Si tu as vu du code sql dans une source vba ce devait être des requêtes sur des bases de données. Ca, bien sûr que c'est possible.

  3. #3
    En attente de confirmation mail
    Inscrit en
    Septembre 2009
    Messages
    269
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 269
    Points : 96
    Points
    96
    Par défaut
    Merci,

    C'est pas de chance !

    Philippe

  4. #4
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonjour,

    Tu peux effectivement utiliser SQL pour gérer une base de données dans Excel mais c'est bien moins souple que dans Access. Pour ça, tu peux utiliser ADO.
    Un petit exemple qui transfère les données situées en feuille "Feuil2" dans la feuille "BDD", les deux feuilles étant dans le même classeur. Adapte les noms de feuilles, le chemin du classeur (il doit être enregistré sur le disque) et le nombre de champs doit être identique car il fait une boucle sur les lignes 2 à x en colonne A, B, C, D et E. Lance la proc "AjoutALaFeuille" après avoir coché la référence "Microsoft ActiveX Data Objects x.x Library" où x.x est la version disponible sur ton PC. Dans la chaine SQL tu peux voir que les différents champs sont identifiés par F1, F2, F3. etc.. tu doit en avoir autant qu'il y a de champs dans ta base. Tu va voir que pour adapter à ton classeur ça ne va pas être de tout repos et là, je n'est pas encore regardé pour les requêtes ! (si tu n'y arrive pas, je tâcherai de me pencher sur le sujet. Comme le dit defluc, je pense qu'il sera plus simple d'utiliser les fonctions VB :
    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
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
     
    'Ajouter la bibliothèque suivante :
    'Microsoft ActiveX Data Objects x.x Library
     
    Private Sub ConnecterBase(ConnectBD As ADODB.Connection, _
                              Fichier As String, _
                              Optional Rs)
     
     
        Set ConnectBD = New ADODB.Connection
     
        'initialise le jeux d'enregistrements si on l'utilise
        If Not IsMissing(Rs) Then
     
            Set Rs = New ADODB.Recordset
     
        End If
     
        'ouvre la connexion
        ConnectBD.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                       "Data Source=" & Fichier & ";" & _
                       "Extended Properties=""Excel 8.0;HDR=NO;IMEX=2;"""
     
    End Sub
     
    Private Sub AjoutALaFeuille()
     
        Dim ConnectBD As ADODB.Connection
        Dim NomFeuille As String
        Dim ChaineSQL As String
        Dim Nom As String
        Dim Prenom As String
        Dim Adresse As String
        Dim CP As String
        Dim Ville As String
        Dim I As Integer
        Dim Fichier As String
     
        'Chemin du fichier, à adapter...
        Fichier = "F:\Base de données.xls"
     
        'ouvre la connexion au fichier
        ConnecterBase ConnectBD, Fichier
     
        'nom de la feuille devant recevoir les valeurs
        NomFeuille = "BDD"
     
        'boucle sur la feuille "Feuil2" pour récupérer les valeurs des différents champs
        'afin de les tranférer vers la feuille "BDD" qui se trouve dans le même classeur
        With Worksheets("Feuil2")
     
            For I = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
     
                'ici tu peux éviter les variables en entrant directement
                'dans la chaine les valeurs mais c'est moins clair
                Nom = .Cells(I, 1)
                Prenom = .Cells(I, 2)
                Adresse = .Cells(I, 3)
                CP = .Cells(I, 4)
                Ville = .Cells(I, 5)
     
                'construit la chaine SQL
                'Col A = F1, Col B = F2, etc...
                'les valeurs texte entre apostrophes (') les valeurs date ente dièse (#)
                ChaineSQL = "INSERT INTO `" & NomFeuille & "$` "
                ChaineSQL = ChaineSQL & "(F1,F2,F3,F4,F5)"
                ChaineSQL = ChaineSQL & "VALUES ('" & Nom & "','" & Prenom & "','" & Adresse & "','" & CP & "','" & Ville & "')"
     
                'entre les valeurs dans la feuille servant de base de données
                ConnectBD.Execute ChaineSQL
     
            Next I
     
        End With
     
        'ferme la connexion
        ConnectBD.Close
     
    End Sub
    Hervé.

  5. #5
    En attente de confirmation mail
    Inscrit en
    Septembre 2009
    Messages
    269
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 269
    Points : 96
    Points
    96
    Par défaut
    Bonjour,

    Merci, avec du retard, je ne pouvais pa me connecter ces derniers jours, je vais essayer, un peu inquiet tout de même, je te dirais si je suis fier de moi ou pas,

    Merci,

    Philippe

  6. #6
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Points : 1 199
    Points
    1 199
    Par défaut
    Fier et modeste ou modeste et fier ?

  7. #7
    En attente de confirmation mail
    Inscrit en
    Septembre 2009
    Messages
    269
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 269
    Points : 96
    Points
    96
    Par défaut
    Qu'importe, ce qui me donne le sens, c'est :
    ne touchez pas au décor !
    Un hic, je ne sais pas si c'est de moi, peut-être un ami avait pensé très fort et je l'ai récupéré, ou bien, c'est à lui et à moi, (ça a plus de vingt ans).
    Dans tous les cas, je pense pouvoir dire l'un et l'autre.
    Pour notre sujet, je n'ai pas avancé, travail et ma femme, ma fille, qui sont une autre passion après le boulot et beaucoup de concentration avant de commencer, peut-être demain ou plutôt sûrement demain.

    Merci pour ce coucou,

    Philippe

Discussions similaires

  1. [MySQL] Exportation SQL vers Excel
    Par Foudébois dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 28/08/2006, 15h56
  2. Résultat d'une requete SQL vers Excel
    Par climz dans le forum Access
    Réponses: 6
    Dernier message: 09/05/2006, 15h44
  3. [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
  4. Exporter des données d'un requete SQL vers excel (csv)
    Par PrinceMaster77 dans le forum ASP
    Réponses: 9
    Dernier message: 08/10/2005, 22h28
  5. Connexion base SQL via Excel
    Par dp_favresa dans le forum Langage SQL
    Réponses: 2
    Dernier message: 10/01/2005, 14h32

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