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 dans macro excel [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de bosk1000
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    706
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 706
    Par défaut SQL dans macro excel
    Bonjour à tous,

    Je voudrais savoir, s'il est possible d'utiliser du SQL dans une macros

    Précisément je cherche à alléger un fichier excel qui fait 12 mo
    et des requêtes sql si cela fonctionne allégerais son temps de traitement.

    Donc, est-il possible de récupérer les élément d'un onglet "operation de tresorerie", les colonnes A à H, U et V, en fonction d'un nom que je saisie dans un combo box "nom"

    pour les mettes dans un onglet "extraction" sur les colonnes A à J

    Avec comme critères de sélection :
    1) la valeur dans la combobox "nom" qui se situe dans la colonne B
    2) la lettre a qui se situe dans la colonne V de l'onglet "operation de tresorerie"

    Merci.

    J'espère avoir été assez explicite

  2. #2
    Invité
    Invité(e)

  3. #3
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 158
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 158
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Il est également possible d'extraire des lignes d'une liste de données excel en fonction de critères en utilisant les filtres avancés d'excel (En VBA c'est la méthode AdvancedFilter de l'objet Range).
    Un tutoriel sur le sujet Les filtres avancés ou élaborés dans Excel
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  4. #4
    Membre éclairé Avatar de bosk1000
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    706
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 706
    Par défaut
    Merci

    Donc on peu effectivement utiliser le sql via ADO

    Mais j'avoue mon ignorance en la matière, c'est la première fois que je vais tenter cela

    1) si je comprend bien je dois d'abord activer dans la bibliothèque
    X Data Objects 2.X Library ?

    2) mon code actuellement se présente comme ceci :

    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
     
    Private Sub nom_Change()
    Application.ScreenUpdating = False
    Sheets("critère").Activate
    Range("b2").Value = nom.Value
     
     
     
     
    Sheets("extraction").Select
        Cells.Select
        Range("H1").Activate
        Selection.ClearContents
     Sheets("operation de tresorerie").Columns("A:v").AdvancedFilter Action:=xlFilterCopy, _
            CriteriaRange:=Sheets("critère").Rows("1:2"), CopyToRange:=Range("A1"), _
            Unique:=False
     Columns("J:j").Select
       Selection.Delete Shift:=xlToLeft
     Columns("k:t").Select
      Selection.Delete Shift:=xlToLeft
     
    Range("K1").Select
        ActiveCell.FormulaR1C1 = "=SUM(C[-2])"
        Range("K2").Select
     
     
     
     
     
    totalbox = Range("k1").Value
    totalbox = Replace(totalbox, ",", ".")
    np.Value = Range("k1").Value
    list_operation.ColumnHeads = True 'en tete de colone
    list_operation.ColumnCount = 10 ' nombre de colone a afficher
    list_operation.ColumnWidths = "60,40;80;40;40;40;40;40;50;50"
    list_operation.RowSource = "extraction!a2:j" & Range("extraction!b65536").End(xlUp).Row ' etendue de la liste a fficher
    list_operation.MultiSelect = fmMultiSelectMulti
    Application.ScreenUpdating = True
    End Sub
    Comment faire intervenir une requête sql ?
    N'ayant jamais fait cela, je suis dans le brouillard

    3) toute requête doit être précédé de " rSQL =" ?

    4) Si je veux, à partir du nom inscrit dans la combobox "nom", executer ma sélection est-ce que la requête semble correct :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from [operation de tresorerie] where [B]=nom.values and [v]='a'
    Sachant que la colonne B contiens les nom et la colonne V, soit la lettre a ou l

    Merci pour votre aide

  5. #5
    Invité
    Invité(e)
    Par défaut
    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
     
    Private Sub nom_Change()
    Application.ScreenUpdating = False
    Sheets("critère").Range("b2").Value = nom.Value
    Sheets("extraction").Range("H1").ClearContents
     
    FiltreActif Range("A1"), Sheets("critère").UsedRange, Sheets("operation de tresorerie").Columns("A:v"), False
     
     
     Columns("J:j").Delete Shift:=xlToLeft
     Columns("k:t").Delete Shift:=xlToLeft
     
    Range("K1").FormulaR1C1 = "=SUM(C[-2])"
     
     
     
     
     
     
    totalbox = Range("k1").Value
    totalbox = Replace(totalbox, ",", ".")
    np.Value = Range("k1").Value
    list_operation.ColumnHeads = True 'en tete de colone
    list_operation.ColumnCount = 10 ' nombre de colone a afficher
    list_operation.ColumnWidths = "60,40;80;40;40;40;40;40;50;50"
    list_operation.RowSource = "extraction!a2:j" & Range("extraction!b65536").End(xlUp).Row ' etendue de la liste a fficher
    list_operation.MultiSelect = fmMultiSelectMulti
    Application.ScreenUpdating = True
    End Sub
     
    Function FiltreActif(RangeSource As Range, CriterRange As Range, CopyRange As Range, Optional Unique As Boolean = True) As Boolean
    FiltreActif = False
    On Error Resume Next
     RangeSource.AdvancedFilter Action:= _
            xlFilterCopy, CriteriaRange:=CriterRange _
            , CopyToRange:=CopyRange, Unique:=Unique
            DoEvents
            If Err = 0 Then FiltreActif = True
            On Error GoTo 0
    End Function

  6. #6
    Membre éclairé Avatar de bosk1000
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    706
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 706
    Par défaut
    Merci pour l'amélioration du code,

    donc aucune utilisation de sql...

    je teste cela lundi

    Bonjour,

    ça ne fonctionne pas du tout

    aucune action sur la feuille extration

  7. #7
    Invité
    Invité(e)
    Par défaut
    bonjour,
    peux tu me donner un fichier XLS?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Accès SQL dans fichier excel erreur sur une ligne
    Par troubleshooting dans le forum Excel
    Réponses: 3
    Dernier message: 17/11/2009, 14h46
  2. executer requete creation dans macro excel
    Par soussou92 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 25/06/2008, 16h57
  3. Réponses: 5
    Dernier message: 27/05/2008, 18h43
  4. Question : SQL dans VB excel
    Par aurele21 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/06/2007, 12h25
  5. [vb excel] différences bizarre dans macro excel
    Par Mugette dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/10/2005, 12h44

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