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 :

Débutant : variable


Sujet :

Macros et VBA Excel

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

    Informations forums :
    Inscription : Janvier 2008
    Messages : 2
    Par défaut Débutant : variable
    Bonjour,

    Je début en VBA, alors soyez indulgent

    je n'arrive pas à insérer une variable (DateDevis) dans ma requete SQL :

    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
     
    Sub importDonnees_DAO()
     
        ' EFFACER FEUILLE
        Feuil2.Range("A1:K999").Clear
     
        ' CONSTRUCTION DE LA REQUETE
        Dim Db As DAO.Database
        Dim Rs As DAO.Recordset
        Dim strSQL As String
     
        Dim DateDevis As String
    '    DateDevis = Feuil1.Range("B1").Value
        DateDevis = "01/12/2007"
     
        Set Db = DAO.OpenDatabase(ActiveWorkbook.Path & "\Database.mdb", False, False)
     
       strSQL = "SELECT s3.[L1], s3.[L2], s3.[L3], s3.[Unité],s3.[Désignation], 
    s3.[Libellé technique], s1.[Date], s1.[Prix total]/s1.[Quantité] AS PU 
    FROM [Achats] s1 LEFT JOIN [Articles] s3 ON s1.[ID_article]=s3.[ID] WHERE 
    (Date=(SELECT MAX(s2.Date) FROM [Achats] s2 WHERE s1.ID_article=s2.ID_article AND s2.Date<=#" & DateDevis & "#)) 
    ORDER BY Code L1 ASC"
     
        Set Rs = Db.OpenRecordset(strSQL, DAO.dbOpenSnapshot)
     
        ' RECUPERATION DES ENTETES
        Dim i As Integer
        Dim Cellule As Range
     
        Set Cellule = Range("a1")
        For i = 0 To Rs.Fields.Count - 1
            Cellule = Rs.Fields(i).Name
            Set Cellule = Cellule(1, 2)
        Next i
     
        ' AFFICHAGE DES RESULTATS
        Feuil2.Range("A2").CopyFromRecordset Rs
     
        Db.Close
    End Sub
    Normalement, cette variable fait référence à une cellule qui a comme nom d'étiquette "DATE_DEVIS" ; comment faire pour que cette variable soit reliée à cette cellule ?

    Merci pour votre aide.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Essayes ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim DateDevis As string
    DateDevis = format(ThisWorkbook.WorkSheet("Feuil1").Range("B1").Value,"mm/dd/yyyy")
    Il faut que ta date soit au format US.

    Si cela ne fonctionne pas, donne nous un peu plus de détail sur le comportement de ton programme, car tu ne nous dis pas ce qui se passe.

    Starec

  3. #3
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 2
    Par défaut J'avance ...
    Je me suis rendu compte en effet depuis mon dernier message que la date doit être MM/DD/AAAA.

    Maintenant cela fonctionne :

    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
    Sub Import_Articles()
     
        ' EFFACAGE FEUILLE
        Feuil16.Select
        Feuil16.Range("A1:Z999").Clear
     
        ' CONSTRUCTION DE LA REQUETE
        Dim Db As DAO.Database
        Dim Rs As DAO.Recordset
        Dim strSQL As String
        Dim DateDevis As Date
     
    '   Attention : DateDevis doit être au format anglais ("mm/dd/yyyy") pour les requetes SQL
        DateDevis = Format(Feuil7.Range("AE6").Value, "mm/dd/yyyy")
     
        Set Db = DAO.OpenDatabase(ActiveWorkbook.Path & "\Database.mdb", False, False)
     
       strSQL = "SELECT s3.[Code ], s3.[L1], s3.[L2], s3.[L3], s3.[Unité],s3.[Désignation], s3.[Libellé technique],  " & _
       "s1.[Date], s1.[Prix total]/s1.[Quantité] AS PU FROM [Achats] s1 LEFT JOIN [XLS Articles] s3 ON s1.[ID_article]=s3.[ID] " & _
       "WHERE (Date=(SELECT MAX(s2.Date) FROM [Achats] s2 WHERE s1.ID_article=s2.ID_article AND s2.Date<=#" & DateDevis & "#)) ORDER BY Code ASC"
     
        Set Rs = Db.OpenRecordset(strSQL, DAO.dbOpenSnapshot)
     
        ' RECUPERATION DES ENTETES
        Dim i As Integer
        Dim Cellule As Range
     
        Set Cellule = Range("a1")
        For i = 0 To Rs.Fields.Count - 1
            Cellule = Rs.Fields(i).Name
            Set Cellule = Cellule(1, 2)
        Next i
     
        ' AFFICHAGE DES RESULTATS
        Feuil16.Range("A2").CopyFromRecordset Rs
     
        Db.Close
    End Sub
    Comment puis-je remplacer Feuil7.Range("AE6").Value par le nom d'étiquette de la cellule ?

Discussions similaires

  1. [débutant] variable entre class
    Par rvzip64 dans le forum Windows Forms
    Réponses: 6
    Dernier message: 25/02/2009, 08h55
  2. [PHP-JS] [Débutant]Variables php dans javascript
    Par Nibor dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 17/07/2007, 20h58
  3. [débutant] variables d'environnement
    Par cyrill.gremaud dans le forum Langage
    Réponses: 2
    Dernier message: 13/11/2006, 10h57
  4. [PHP-JS] [Débutant] Variables et inclusion
    Par fredrik dans le forum Langage
    Réponses: 4
    Dernier message: 03/08/2006, 11h51
  5. [débutante] Variable long
    Par monia dans le forum MFC
    Réponses: 5
    Dernier message: 05/07/2005, 17h33

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