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 :

compter avec une requete SQL dans VBA


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 7
    Points : 4
    Points
    4
    Par défaut compter avec une requete SQL dans VBA
    Bonjour a tous

    je voudrais savoir s'il est possible dans une requete SQL de compter le nombre de 1 dans une colonne d'un fichier excel
    Je m'explique: je ne peux ouvrir les fichiers excel ils sont trop lourd ( pas un fichier inferieur à 10 Mo ) et comme je dois compiler les donnees qu'il y a dans les fichiers vers un tableau de synthese, je me pose la question si il est possible de compter avec une requete?.

    un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sql ="SELECT * FROM ["onglet & colonne"]compter(X)
    merci de vos reponses

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour et bienvenue sur le forum Office de DVP

    C'est possible, une lecture de cette article te donnera des indications pour savoir comment procéder : Lire et écrire dans les classeurs Excel fermés


    Starec

  3. #3
    Membre éprouvé
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Points : 1 207
    Points
    1 207
    Par défaut
    bonjour,

    En plus de la lecture que te suggère Starec que je salue, je te propose un exemple qui je l'espère te sera utile.
    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
    Option Explicit
     
    Sub ADO_Compte()
    Dim Cn As ADODB.Connection
    Dim Cd As ADODB.Command
    Dim Rst As ADODB.Recordset
    Dim strSQL As String
    Dim intCompteur As Integer
    Dim strRecherche As String
     
    Const Fichier As String = "Chemin complet du classeur"  'à adapter
    Const NomFeuille As String = "Nom de l'onglet" 'à adapter
    Const NomDuChamps As String = "nom" ' à adapter
     
    strRecherche = "1" 'à adapter
     
    Set Cn = New ADODB.Connection
    'version 2007
    Cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
       "Data Source=" & Fichier & ";" & _
       "Extended Properties=""Excel 12.0;HDR=Yes;"""
     'version antérieure
     'Cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
          "Data Source=" & Fichier & ";" & _
          "Extended Properties=""Excel 8.0;HDR=Yes;"";"
     
    Set Cd = New ADODB.Command
    Cd.ActiveConnection = Cn
     
    strSQL = "SELECT * FROM [" & NomFeuille & "$] ORDER BY " & NomDuChamps
     
    Set Rst = New ADODB.Recordset
    Rst.Open strSQL, Cn, adOpenStatic, adLockReadOnly, adCmdText
     
    intCompteur = 0
     
    strRecherche = NomDuChamps & "  = '" & strRecherche & "'"  ' & "%'"
     
    Rst.Find strRecherche
     
          'boucle jusqu'à la fin de la BD
          Do While Not Rst.EOF
             'compteur d'occurence du nom
             intCompteur = intCompteur + 1
    '         ' recherche du suivant
             Rst.Find strRecherche, 1, adSearchForward, Rst.Bookmark
          Loop
     
          MsgBox intCompteur & " occurence(s)."
     
    Rst.Close: Cn.Close
    Set Cn = Nothing:   Set Cd = Nothing:   Set Rst = Nothing
    End Sub
    Adapte les lignes où cela est spécifié, ainsi que le mode de connection suivant ta version d'excel.

    Cordialement

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Bonjour au forum, fred65300 et starec

    merci de vos reponses je vais etudier tout ça ce soir,
    je vous tiens au courant

    Slts

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    bonjour a tous

    apres avoir passé une pârtie de la nuit a lire le tres bon "Lire et écrire dans les classeurs Excel fermés" et etudier la macro de fred 65200 qui va d'ailleurs me servir pour d'autres fichiers ( c'est fou le gain de temps )

    je suis toujour enfin presque au meme point avec mon probleme mais je pense avoir mal voir tres mal expliquer mon probleme. je joins donc un fichier avec un exemple, dans le fichier 2 onglets.
    le 1er "nbr_d'occurence" qui est le resultat attendu en ordonnée le nom des fichiers en abcisse les items ( 1-a,1-b,etc..) en vrai il y en a une vingtaine
    ensuite dans le 2eme onglet qui lui represente un des x fichiers
    le but etant de pouvoir faire un tableau de synthese avec le nom des fichiers et le nombre de croix en A,B,C,D,E par items.

    donc est ce que c'est possible de faire ce genre de chose avec requete ADO ?

    et mille excuses pour vous avoir peut etre fait travailler pour rien, j'en suis désolé

    salutations
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. [AC-2007] Agregation requete SQL dans VBA avec combobox
    Par kimai dans le forum VBA Access
    Réponses: 5
    Dernier message: 22/03/2011, 04h23
  2. Réponses: 5
    Dernier message: 28/01/2010, 19h40
  3. [VB] avec une requete SQL la mettre dans une TextBox
    Par hellreaperdd dans le forum VB.NET
    Réponses: 5
    Dernier message: 15/09/2009, 16h22
  4. Probleme avec une requete sql dans VB6 pour un champ date
    Par jacko842 dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 27/01/2009, 08h31
  5. Réponses: 5
    Dernier message: 09/07/2008, 17h04

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