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 :

extraction des données entre deux dates


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    administrateur
    Inscrit en
    Mai 2015
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : administrateur
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2015
    Messages : 29
    Par défaut extraction des données entre deux dates
    Bonjour à tous,

    je suis débutant en VBA j'ai réussi à effectuer la connexion avec ma bd Orale et même faire une extraction avec une requête simple(select * from ...) jusqu'à la tout va bien.
    objectif :à partir de deux champs texte qui contiennent une date de début et une date de fin à saisir, exécuter une requête d'extraction des valeurs incluent entre ces deux dates .

    j’espère d’être claire dans mes explications .

    Cordialement

  2. #2
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    Bonsoir ACHRAF , La forum
    Hypothèse :
    en feuil1 des données : en colonne A les date et En colonne B les montant
    en feuil2 tu saisi en B1 la date de départ et en B2 la date fin
    pour obtenir le total des sommes entre ces deux date en B3 tu utilise ce code :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub Calculer()
    Dim Tablo
    Dim i As Long
    Tablo = Sheets("Feui1").Range("A2", "B" & Sheets("Feuil1").Range("B" & Rows.Count).End(xlUp).Row)
    For i = LBound(Tablo, 1) To UBound(Tablo, 1)
        If Tablo(i, 1) >= Sheets("feuil2").Range("B1") And Tablo(i, 1) <= Sheets("feuil2").Range("B2") Then
            resultat = resultat + Tablo(i, 2)
        End If
    Next i
    Sheets("feuil2").Range("B3") = resultat
        Application.ScreenUpdating = True
    End Sub

  3. #3
    Membre averti
    Homme Profil pro
    administrateur
    Inscrit en
    Mai 2015
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : administrateur
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2015
    Messages : 29
    Par défaut
    j'essaye de saisir les deux dates à partir d'une interface VB et non dans les champs de ma Feuil ??

  4. #4
    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 184
    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 184
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    D'après la lecture de ta demande, il s'agit d'exporter des données suivant critères
    La solution certainement à l'aide du filtre avancé d'excel (en VBA la méthode AdvancedFilter)
    A lire le tutoriel Les filtres avancés ou élaborés dans Excel
    A voir également Exporter des lignes suivant critères avec la méthode AdvancedFilter

    S'il s'agit de faire la somme ou la moyenne ou d'autres agrégations suivant critères le principe est le même avec une zone de données et une zone des critères avec les fonctions de la catégorie Base de données (BDSOMME, BDMOYENNE, etc.)
    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

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Ou et comment extrais tu ta requête?

    si c'est dans VBA poste ton script SQL.

    et même faire une extraction avec une requête simple(select * from ...)
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from [DateTable] where format([deb],'yyyy-mm-dd')=>'2017-02-23' and format([Fin],'yyyy-mm-dd')<='2017-05-23'
    Dernière modification par LittleWhite ; 26/02/2017 à 20h07. Motif: Balise CODE

  6. #6
    Membre averti
    Homme Profil pro
    administrateur
    Inscrit en
    Mai 2015
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : administrateur
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2015
    Messages : 29
    Par défaut
    on fait c'est ça ma requête (je sais qu'elle est un peu compliquée mais j'ai pas le choix), en exécutant cette requête il m'affiche une interface pour saisir date_début et date_fin après l'extraction se fait sous SQLDeveloper ,et maintenant je veux éviter cette étape et de la faire dès le début via une interface VBA comme j'ai mentionné au début dans ma question :
    requête :
    reqete.txt

  7. #7
    Invité
    Invité(e)
    Par défaut
    Code Exécute requête Excel VBA : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    set Rs=Conx.execute(Sql) 'Exécution de la requête via ta connection
    ActiveCell.CopyFromRecordset Rs
    Code Script SQL VBA : 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
    sql="SELECT DRI_ACC.DRI_CODE," & vbCrLfSql=sql & "      DRI_ACC.DRI_LINK," & vbCrLf
    Sql=sql & "      DRI_REF.DRI_SEC_SETTLT_SYST_REF AS REF_GSP," & vbCrLf
    Sql=sql & "      DRI_ACC.DRI_CLIENT_REF AS REF_CLIENT," & vbCrLf
    Sql=sql & "      SCO.SCO_CODE AS ISIN," & vbCrLf
    Sql=sql & "      SCO.SCO_NAME AS LIB_ISIN," & vbCrLf
    Sql=sql & "      DRI_ACC.DEP_CODE," & vbCrLf
    Sql=sql & "      DEP.DEP_NAME," & vbCrLf
    Sql=sql & "      DRI_ACC.SAC_CODE," & vbCrLf
    Sql=sql & "      SAC.SAC_NAME," & vbCrLf
    Sql=sql & "      DRI_ACC.STS_CODE," & vbCrLf
    Sql=sql & "      (SELECT ICO_CODE FROM ITL_CONTEXT WHERE IL_LNG_ID = '001' AND ICO_PSEUDO = DRI_ACC.IL_CTX_ID) AS CONTEXTE," & vbCrLf
    Sql=sql & "      to_char(PFC_54X.DATE_CREATION, 'YYYY/MM/DD HH24:MI:SS')AS DATE_CREATION_PFC_54X," & vbCrLf
    Sql=sql & "      to_char (PFC_54X.DATE_MODIFICATION,'YYYY/MM/DD HH24:MI:SS')AS DATE_MODIF_PFC_54X," & vbCrLf
    Sql=sql & "      to_char (DRI_ACC.DRI_CREATE_DATE,'YYYY/MM/DD HH24:MI:SS' )AS DATE_CREATION_SIB," & vbCrLf
    Sql=sql & "      to_char (DRI_EV.DRI_INPUT_DATE,'YYYY/MM/DD HH24:MI:SS') AS DATE_EV_SIB," & vbCrLf
    Sql=sql & "      to_char (DRI_ACC.DRI_INPUT_DATE,'YYYY/MM/DD HH24:MI:SS' )AS DATE_ACQ_SIB," & vbCrLf
    Sql=sql & "      to_char (PFC_548.DATE_CREATION,'YYYY/MM/DD HH24:MI:SS' )AS DATE_CREATION_PFC_548," & vbCrLf
    Sql=sql & "      to_char (PFC_548.DATE_MODIFICATION,'YYYY/MM/DD HH24:MI:SS') AS DATE_ACQ_PFC_548," & vbCrLf
    Sql=sql & "     to_char (PFC_54X.DATE_MODIFICATION - PFC_54X.DATE_CREATION)* 86400 AS TRAITEMENT_PFC," & vbCrLf
    Sql=sql & "     to_char (DRI_EV.DRI_INPUT_DATE - PFC_54X.DATE_MODIFICATION)* 86400 AS TRAITEMENT_SIB," & vbCrLf
    Sql=sql & "     to_char (DRI_ACC.DRI_INPUT_DATE - DRI_EV.DRI_INPUT_DATE)* 86400 AS DELAI_ALLER_RETOUR_T2S," & vbCrLf
    Sql=sql & "     to_char (PFC_548.DATE_MODIFICATION - DRI_EV.DRI_INPUT_DATE)* 86400 AS DELAI_1ER_548," & vbCrLf
    Sql=sql & "     to_char (PFC_548.DATE_MODIFICATION - PFC_54X.DATE_CREATION)* 86400 AS DELAI_TOTAL_548" & vbCrLf
    Sql=sql & " FROM PFCMSGH PFC_54X, PFCMSGH PFC_548, DRI_HISTO DRI_ACC, DRI_HISTO DRI_EV, DEPOSITARY DEP, SECURITIES_ACCOUNT SAC, DRI_HISTO DRI_REF, SECURITY_CODIF SCO" & vbCrLf
    Sql=sql & " WHERE 1=1" & vbCrLf
    Sql=sql & " AND (DRI_ACC.dri_create_date >= TO_DATE(:date_deb_DDMMYYYY,'DDMMYYYY')" & vbCrLf
    Sql=sql & " AND DRI_ACC.dri_create_date < TO_DATE(:date_fin_DDMMYYYY,'DDMMYYYY'))" & vbCrLf
    Sql=sql & " AND PFC_54X.ID = (SELECT MIN(ID) FROM LIEN_MESSAGE WHERE LME_APP_CODE = DRI_ACC.DRI_CODE||DRI_ACC.DRI_LINK AND IL_APP_ID = '001' AND IC_LME_SENS = '001')" & vbCrLf
    Sql=sql & " AND PFC_54X.IL_PFS_ID = '075'" & vbCrLf
    Sql=sql & " AND SAC.SAC_CODE = DRI_ACC.SAC_CODE AND SAC.SAC_BAK_CODE = DRI_ACC.SAC_BAK_CODE" & vbCrLf
    Sql=sql & " AND DRI_ACC.SEC_CODE = SCO.SEC_CODE AND SCO.COF_CODE = 'ISIN'" & vbCrLf
    Sql=sql & " AND DRI_ACC.DEP_CODE = DEP.DEP_CODE" & vbCrLf
    Sql=sql & " AND PFC_548.ID = (SELECT MIN(ID) FROM LIEN_MESSAGE WHERE LME_APP_CODE = DRI_ACC.DRI_CODE||DRI_ACC.DRI_LINK AND IL_APP_ID = '001' AND IL_REP_ID IN ('193','194','195','198','201') AND LME_CREATION_DATE >= DRI_ACC.DRI_INPUT_DATE)" & vbCrLf
    Sql=sql & " " & vbCrLf
    Sql=sql & " AND PFC_548.IL_PFS_ID = '040'" & vbCrLf
    Sql=sql & " " & vbCrLf
    Sql=sql & " AND DRI_ACC.DRI_INPUT_DATE = (SELECT MIN(DRI_INPUT_DATE) FROM DRI_HISTO DRI_MIN WHERE DRI_MIN.DRI_CODE = DRI_ACC.DRI_CODE AND DRI_MIN.DRI_LINK = DRI_ACC.DRI_LINK AND DRI_MIN.IL_STA_ID = '009')" & vbCrLf
    Sql=sql & " AND DRI_ACC.IL_STA_ID = '009'" & vbCrLf
    Sql=sql & " AND DRI_REF.DRI_CODE = DRI_ACC.DRI_CODE AND DRI_REF.DRI_LINK = DRI_ACC.DRI_LINK" & vbCrLf
    Sql=sql & " AND DRI_REF.DRI_INPUT_DATE = (SELECT MIN(DRI_INPUT_DATE) FROM DRI_HISTO DRI_MIN WHERE DRI_MIN.DRI_CODE = DRI_ACC.DRI_CODE AND DRI_MIN.DRI_LINK = DRI_ACC.DRI_LINK AND DRI_MIN.DRI_SEC_SETTLT_SYST_REF IS NOT NULL)" & vbCrLf
    Sql=sql & " AND DRI_EV.DRI_CODE = DRI_ACC.DRI_CODE AND DRI_EV.DRI_LINK = DRI_ACC.DRI_LINK" & vbCrLf
    Sql=sql & " AND DRI_EV.DRI_INPUT_DATE = (SELECT MIN(DRI_INPUT_DATE) FROM DRI_HISTO DRI_MIN WHERE DRI_MIN.DRI_CODE = DRI_ACC.DRI_CODE AND DRI_MIN.DRI_LINK = DRI_ACC.DRI_LINK AND DRI_MIN.IL_STA_ID = '012')" & vbCrLf
    Sql=sql & " AND DRI_EV.IL_STA_ID = '012'" & vbCrLf
    Sql=sql & " AND NOT EXISTS (SELECT NULL FROM DRI_HISTO WHERE DRI_CODE = DRI_ACC.DRI_CODE AND IL_STA_ID IN ('001','007')" & vbCrLf
    Sql=sql & " UNION SELECT NULL FROM DRI_HISTO_RECENT WHERE DRI_CODE = DRI_ACC.DRI_CODE AND IL_STA_ID IN ('001','007'))" & vbCrLf
    Sql=sql & " AND TRUNC(PFC_54X.DATE_MODIFICATION) = TRUNC(PFC_548.DATE_CREATION) " & vbCrLf
    Sql=sql & " AND DRI_ACC.STS_CODE = 'T2S';" & vbCrLf
    Sql=sql & " select count(*)," & vbCrLf
    Sql=sql & "       substr(to_char(dri_create_date, 'YYYY/MM/DD HH24:MI:SS'), 12, 2) AS HOURS," & vbCrLf
    Sql=sql & "       substr(to_char(dri_create_date, 'YYYY/MM/DD HH24:MI:SS'), 15, 2) AS MINUTES," & vbCrLf
    Sql=sql & "       trunc(dri_create_date), " & vbCrLf
    Sql=sql & "       (SELECT ICO_CODE||' - '||ICO_NAME  FROM ITL_CONTEXT WHERE IL_LNG_ID = '001' AND ICO_PSEUDO = DRI.IL_CTX_ID) AS CONTEXTE," & vbCrLf
    Sql=sql & "       (SELECT IOC_CODE||' - '||IOC_NAME FROM ITL_OPERATION_CODE WHERE IL_LNG_ID = '001' AND IOC_PSEUDO = DRI.IL_OPC_ID) AS CODE_OPE," & vbCrLf
    Sql=sql & "       DRI.DEP_CODE, DEP.DEP_NAME," & vbCrLf
    Sql=sql & "       DRI.STS_CODE" & vbCrLf
    Sql=sql & " FROM DRI_HISTO DRI, DEPOSITARY DEP" & vbCrLf
    Sql=sql & " WHERE 1=1" & vbCrLf
    Sql=sql & " AND DRI.IL_STA_ID IN ('003','008')" & vbCrLf
    Sql=sql & " AND DRI.DEP_CODE = DEP.DEP_CODE" & vbCrLf
    Sql=sql & " AND DRI.dri_create_date >= TO_DATE(:date_deb_DDMMYYYY,'DDMMYYYY')" & vbCrLf
    Sql=sql & " AND DRI.dri_create_date < TO_DATE(:date_fin_DDMMYYYY,'DDMMYYYY')" & vbCrLf
    Sql=sql & " group by" & vbCrLf
    Sql=sql & "       substr(to_char(dri_create_date, 'YYYY/MM/DD HH24:MI:SS'), 12, 2)," & vbCrLf
    Sql=sql & "       substr(to_char(dri_create_date, 'YYYY/MM/DD HH24:MI:SS'), 15, 2)," & vbCrLf
    Sql=sql & "       trunc(dri_create_date), " & vbCrLf
    Sql=sql & "       DRI.IL_CTX_ID," & vbCrLf
    Sql=sql & "       DRI.IL_OPC_ID," & vbCrLf
    Sql=sql & "       DRI.DEP_CODE," & vbCrLf
    Sql=sql & "       DEP.DEP_NAME," & vbCrLf
    Sql=sql & "       DRI.STS_CODE;"

  8. #8
    Membre averti
    Homme Profil pro
    administrateur
    Inscrit en
    Mai 2015
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : administrateur
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2015
    Messages : 29
    Par défaut
    j'ai eu l'erreur suivant :
    Nom : ERREUR.PNG
Affichages : 960
Taille : 25,8 Ko

  9. #9
    Membre averti
    Homme Profil pro
    administrateur
    Inscrit en
    Mai 2015
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : administrateur
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2015
    Messages : 29
    Par défaut
    Bonjour ,

    après une nuit de recherche j'arrive pas à trouver une une solution à cette erreur , any help please ??

    cdt

Discussions similaires

  1. [XL-2000] VBA pour sommer des valeures entre deux dates (nombreuses données)
    Par maxhor dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 11/04/2014, 18h30
  2. donne le nombre des mois entre deux dates
    Par Sokol dans le forum SAS Base
    Réponses: 1
    Dernier message: 09/11/2009, 13h55
  3. Générer le listing des jours entre deux dates
    Par gsmdu62 dans le forum Langage
    Réponses: 8
    Dernier message: 01/05/2006, 12h08
  4. Changement Des données entre deux bases
    Par Chakib dans le forum Access
    Réponses: 4
    Dernier message: 28/01/2006, 11h59
  5. [ADO.Net][VB.NET] Comment copier des données entre deux BDD différentes ?
    Par maddog2032 dans le forum Accès aux données
    Réponses: 6
    Dernier message: 06/06/2005, 12h01

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