Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : VBA - SQL - Récupérer une requête dans une variable [ Langages dérivés / VBA ] (VibiA)

samedi 24 novembre 2007 à 12:46:47 | VBA - SQL - Récupérer une requête dans une variable

VibiA

Bonjour à tous,

J'ai découvert depuis peu de temps qu'il était possible de générer des requêtes SQL directement via Excel, via MS Query plus précisément.

Je sais que ce n'est pas aussi puissant qu'Acces ou que MySql qui sont de 'vraies' BDD mais je n'ai que cela sous la main.

Mon problème est certainement très simple, je cherche simplement à récupérer le résultat de ma requête dans une variable et non la renvoyer directement sur Excel.

Je n'utilise que le 'Count' donc ce résultat n'est qu'une valeur.

Ex de code que je dois modifier (code provenant du mode enregistrement d'Excel)

    With ActiveSheet.QueryTables.Add(Connection:=Array(Array( _
        "ODBC;DBQ=C:\Documents and Settings\jbw\Bureau\sql test\Classeur1.xls;DefaultDir=C:\Documents and Settings\jbw\Bureau\sql test;Driver" _
        ), Array( _
        "={Driver do Microsoft Excel(*.xls)};DriverId=790;FIL=excel 8.0;MaxBufferSize=2048;MaxScanRows=8;PageTimeout=5;ReadOnly=1;SafeTr" _
        ), Array("ansactions=0;Threads=3;UID=admin;UserCommitSync=Yes;")), Destination _
        :=Range("G8"))
        .CommandText = Array( _
         "SELECT Count(AAA1.ColA)" & Chr(13) & "" & Chr(10) & "FROM `C:\Documents and Settings\jbw\Bureau\sql test\Classeur1`.AAA1 AAA1, `C:\Documents and Settings\jbw\Bureau\sql test\Classeur1`.ZZZ1 ZZZ1" & Chr(13) & "" & Chr(10) & "WHERE AAA1.ColA = ZZZ1.ColB" _
        )
        .Name = "Lancer la requête à partir de aaaaaaaaaaaaaaaaaaaa"
        .FieldNames = False
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .PreserveColumnInfo = True
        .Refresh BackgroundQuery:=False
    End With


samedi 24 novembre 2007 à 12:48:14 | Re : VBA - SQL - Récupérer une requête dans une variable

VibiA

Merci pour votre aide

samedi 24 novembre 2007 à 12:50:00 | Re : VBA - SQL - Récupérer une requête dans une variable

VibiA

Dsl pour le flood, mais comment édite t'on nos messages ? merci

samedi 24 novembre 2007 à 14:36:26 | Re : VBA - SQL - Récupérer une requête dans une variable

MPi

Pourquoi ne pas utiliser les fonctions Excel plutôt que de te compliquer la vie avec MsQuery ?

ex:
    Dim nbValeurs As Long

    ' nombre de fois que le chiffre 2 apparaît en colonne A
    nbValeurs = [COUNTIF(A:A, "2")]  ' équivaut à NB.SI
    MsgBox nbValeurs


MPi²

samedi 24 novembre 2007 à 15:19:01 | Re : VBA - SQL - Récupérer une requête dans une variable

VibiA

Je ne peux pas car en fait je cherche un équivalent du VLOOKUP, je souhaite comparer 2 fichiers, d'un jour sur l'autre savoir combien de lignes ont apparu et/ou disparu (sachant que je compare seulement 2 colonnes car j'ai une colonne avec des entrées uniques).

Donc avec un vlookup, je le fais sans problème mais c'est long (les 2 fichiers font plus de 50k lignes), donc j'ai pensé qu'une requête SQL 'count' ferait l'affaire beaucoup plus rapidement.

samedi 24 novembre 2007 à 15:32:53 | Re : VBA - SQL - Récupérer une requête dans une variable

VibiA

et aussi, existe t'il un CountIF avec plusieurs conditions ?
Peut on les imbriquer comme les IF ?

samedi 24 novembre 2007 à 17:06:40 | Re : VBA - SQL - Récupérer une requête dans une variable

VibiA

Finalement, je me rends compte que c'est inutile, car je peux réécrire par dessus, donc ni vu ni connu

mais par contre, le countif avec plusieurs conditions, ca m'interesserait de savoir car je me suis mis au SQL juste parce que le countif (ou sumif) ne gère (selon moi) qu'une condition.

samedi 24 novembre 2007 à 18:48:56 | Re : VBA - SQL - Récupérer une requête dans une variable

MPi

Pour plusieurs conditions, regarde du côté de SOMMEPROD ou SUMPRODUCT pour les formules anglaises.

MPi²

samedi 24 novembre 2007 à 19:56:30 | Re : VBA - SQL - Récupérer une requête dans une variable

VibiA

ouaip, j'ai vu ca, j'ai réussi à faire 2 conditions mais pas 3 ou 4

dimanche 25 novembre 2007 à 02:02:41 | Re : VBA - SQL - Récupérer une requête dans une variable

MPi

=SOMMEPROD((1ere condition)*(2e condition)*(3e condition)*(zone de somme))

L'important , c'est que les plages de chaque condition et de la somme soient de même grandeur.


MPi²


1 2

Cette discussion est classé dans : sql, excel, true, array, false


Répondre à ce message

Sujets en rapport avec ce message

modifier une macro sous excel pour l'importation de fichier avec nom variable [ par vbasamuel ] bonjour,Je cherche à "automatiser" un import de fichier .xml via excel le fichier importer sous Excel est uniquement à titre d'édition papier devenu a Message d'erreur d'Excel sur des requêtes Web parfairement correctes [ par Arbiel ] Bonjour A la recherche d'aide sur la programmation en VBA pour Excel, je viens de m'inscrire sur ce forum. Je ne suis pas certain d'inclure le présent Mettre à TRUE une propriété d'un classeur Excel [ par Edgar ] Bonjour,Je souhaiterais mettre à TRUE systématiquement une propriété d'un classeur Excel.Update Remote References est toujours à false à l'ouverture d mettre à True une propriété Excel [ par Edgar ] Bonjour,Je souhaiterais mettre à TRUE systématiquement une propriété d'un classeur Excel.Update Remote References est toujours à false à l'ouverture d urgent! gérer deux fichiers textes sur excel sans ouvrir excel [ par hanenjam ] okkk!!!hanenBonjourJe suis débutante en vb, j'ai besoin gérer 2 fichiers textes distincts sur excel , VBA excel problème avec la cellule active [ par chamelle ] Bonjour,je découvre le vba Excel et je dois réussir à faire fonctionner une macro existante...Alors le problème est que l'on écrit dans une feuille ex OpenText sous excel (en VB 6.0) [ par Clonk ] Bonjour,pour importer un fichier texte sous Excel, j'utilise la méthode opentext de excel (merci moustachu ^^)je fais donc : Set exc = CreateObject Requette paramétré entre excel et acces et autres opération... [ par indicadesbois ] Bonjour les Codeurs fous ;-)Alors autant vous le dire tout de suite je sais bien programé en php ou C++ mais pas du tout du tout en VB !!!Et la on me OpenText sous EXCEL 2003 [ par DrAlucard ] Bonjour à tous, Je suis actuellement sur une macro qui doit me rapporter le contenu d'un fichier plat dans une feuille excel. J'utilise la fonction Op Erreur 91 [ par captaine93 ] Bonjour !J ai un message d'erreur sur le code suivant...erreur 91 variable non définie...excel pointe sur la dernière boucle "ActiveWorbook.SaveAs....


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,562 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.