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 :

Incrémentation d'une date de façon hebdomadaire


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 68
    Par défaut Incrémentation d'une date de façon hebdomadaire
    Bonjour,

    J'ai affaire à une base de données sous PL/SQL Developer, et j'aimerai interroger cette base via le VBA et dans le même temps, à chaque interrogation, je voudrais que les dates puissent s'incrémenter dans le même temps d'un "step" de 7 :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    select count(*) from e_envoi_souscription, e_cde_document, E_CDE
    where ((ees_mab_nume<>'0003' and ees_mab_nume<>'6300') or ees_mab_nume is null)
    and EES_ETAT='EN_COURS'
    and e_cde_document.cde_do_souscrip_ees_id = e_envoi_souscription.ees_id
    and e_cde_document.cde_do_ty_se_c='WV2'
    --and e_cde_document.cde_do_d between to_date('&date', 'dd/mm/yyyy hh24:mi:ss')-6
    --and to_date('&date', 'dd/mm/yyyy hh24:mi:ss')
    and e_cde_document.cde_do_d between
    to_date('01/06/2009 00:00:00', 'dd/mm/yyyy hh24:mi:ss')
    and to_date('07/06/2009 23:59:59', 'dd/mm/yyyy hh24:mi:ss')
    and e_cde.cde_ty_se_c=e_cde_document.cde_do_ty_se_c
    and e_cde.cde_d=e_cde_document.cde_do_d
    and e_cde.cde_c=e_cde_document.cde_do_cde_c
    and ees_duree_mois>0
    and e_cde.cde_souscript_eed_ees_id is null;


    Du coup, j'aurai voulu d'abords savoir s'il était plus judicieux de faire cette incrémentation en VBA (possible ? ) ou de le faire via PL/SQL Developer mais...comment ?

    Je pense utiliser un Sysdate, afin d'obtenir la date du système et de l'utiliser comme date butoir puis à partir de ça, il faudrait que je puisse décrémenter chaque semaine depuis le 1er janvier 2009.
    Au final, il faudrait que j'obtienne le résultat de ma requête entre le 1er janvier et le 4 janvier (1er semaine), puis du 5 janvier jusqu'au 11 janvier, puis du 12 janvier jusqu'au 18 et ainsi de suite...jusqu'à la date du système.


    Enfin, je suis en possession d'une requête SQL qui me fournie un certain nombre de statistiques que j'aimerai incorporer dans un tableau Excel à l'aide d'une macro mais j'ai beaucoup de mal avec cette connexion (cependant...ce n'est peut être pas le bon endroit pour cette question...)
    Voici mes premiers pas, peu concluant :

    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
    Private Sub recupNumeroSemaine()
        'Récupérer le numéro de la semaine actuelle
        Dim iNumeroSemaine As Integer
        iNumeroSemaine = DatePart("ww", Now())
    End Sub
    Sub RemplirTableau()
    '
    ' Macro1 Macro
    ' Macro enregistrée le 23/06/2009 par cman
    '
     
    '
        For i = 1 To iNumeroSemaine Step 1
            Sheets("Semaine " & i - 1).Select
            Range("E6").Select
            With ActiveSheet.QueryTables.Add(Connection:= _
            "FINDER;\\SSOPFIL01\GTC\Statistiques contractuelles\HEBDO\KBIS PERIODIQUES\Requete\Stats Kbis Périodiques New.sql" _
            , Destination:=Range("E6")) _
            End With
        Next
    End Sub
    Merci d'avance pour votre préciseuse aide !

    Cordialement,
    Clément.

  2. #2
    Invité
    Invité(e)
    Par défaut
    regarde du côté des triggers Oracle !
    http://sheikyerbouti.developpez.com/pl_sql/?page=Chap6

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 68
    Par défaut
    Sachant que mes dates sont des critères de sélection, les triggers sont-ils toujours LA solution ?

  4. #4
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    Non, un trigger ne se déclenche pas sur SELECT. C'est à ton code VBA de faire ça.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 68
    Par défaut
    Ok, du coup toutes les manipulations que je dois effectuer doivent se faire via le VBA, mais que dois-je mettre à la place de :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ...
    and e_cde_document.cde_do_d between
    to_date('01/06/2009 00:00:00', 'dd/mm/yyyy hh24:mi:ss')
    and to_date('07/06/2009 23:59:59', 'dd/mm/yyyy hh24:mi:ss')
    ...

    Car pour le moment je change ces dates manuellement...

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par orafrance Voir le message
    Non, un trigger ne se déclenche pas sur SELECT. C'est à ton code VBA de faire ça.
    Ah bon ? Pas moyen de lancer sur un select ? Je croyais.
    Il reste que l'on doit bien pouvoir faire ça d'un trigger system mais que ce n'est surement pas la meilleure solution...

    Et pourquoi pas une bête procédure pl/sql qui serait lancée par VB ?

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 68
    Par défaut
    Voilà où j'en suis, j'ai décidé de faire la requête via le VBA, ce qui donne :
    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
    Sub Macro1()
        Dim sql As String
        Dim debutperiode As Date
        Dim ddeb As String
        Dim dfin As String
        For debutperiode = DateSerial(2009, 1, 1) To Now() Step 7
        ddeb = Format(debutperiode, "dd/mm/yyyy")
        dfin = Format(debutperiode + 6, "dd/mm/yyyy")
        sql = "select count(*) from e_envoi_souscription, e_cde_document, E_CDE" + _
            "where ((ees_mab_nume<>'0003' and ees_mab_nume<>'6300') or ees_mab_nume is null)" + _
            "and EES_ETAT='EN_COURS'" + _
            "and e_cde_document.cde_do_souscrip_ees_id = e_envoi_souscription.ees_id" + _
            "and e_cde_document.cde_do_ty_se_c='WV2'" + _
            "and e_cde_document.cde_do_d between" + _
            "and to_date('" + ddeb + " 00:00:00' , 'dd/mm/yyyy hh24:mi:ss')" + _
            "and to_date('" + dfin + " 23:59:59', 'dd/mm/yyyy hh24:mi:ss') " + _
            "and e_cde.cde_ty_se_c=e_cde_document.cde_do_ty_se_c" + _
            "and e_cde.cde_d=e_cde_document.cde_do_d" + _
            "and e_cde.cde_c=e_cde_document.cde_do_cde_c" + _
            "and ees_duree_mois>0" + _
            "and e_cde.cde_souscript_eed_ees_id is null;" _
        'exécuter sql
        Next
    End Sub
    Cependant, ça devient plus un problème de spécialiste VB que de spécialiste PL/SQL maintenant.

    Pour l'exécution, j'ai pensé à cela :

    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
    Private Sub recupNumeroSemaine()
        'Récupérer le numéro de la semaine actuelle
        Dim iNumeroSemaine As Integer
        iNumeroSemaine = DatePart("ww", Now())
    End Sub
     
    Sub RemplirTableau()
        For i = 1 To iNumeroSemaine Step 1
            Sheets("Semaine " & i - 1).Select
            Range("E6").Select
            With ActiveSheet.QueryTables.Add(Connection:= _
            "FINDER;chemin_à_la_base_.sql" _
            , Destination:=Range("E6"), _
            sql:=sql) _
            End With
        Next
    End Sub
    Suis-je sur la bonne voie ?

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

Discussions similaires

  1. Comment incrémenter une date d'un an ?
    Par imedg dans le forum SQL
    Réponses: 13
    Dernier message: 22/01/2021, 17h12
  2. [XL-2007] Incrémentation d'une date à partir d'un calendrier
    Par amauri dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 28/06/2012, 16h44
  3. Réponses: 5
    Dernier message: 09/03/2007, 19h39
  4. JSP incrémentation des jours d'une date
    Par taroudant dans le forum Servlets/JSP
    Réponses: 8
    Dernier message: 07/08/2006, 10h20
  5. [ORACLE 10G]Incrémentation d'une date d'un jour
    Par titanblanc dans le forum Oracle
    Réponses: 2
    Dernier message: 05/01/2006, 11h07

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