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

VBA Access Discussion :

Resultat d'une requete union parametrée sous Excel [AC-2003]


Sujet :

VBA Access

  1. #61
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Comme je l’ai dit au poste #48, le formulaire est charge dans la requête, mais rien empêche de rajouter dans le formulaire la date début et fin initialisé avec les valeurs de la feuille.
    Ainsi l’hors de la validation du chois modifier ces information pour filtre la requête

  2. #62
    Membre actif
    Inscrit en
    Avril 2007
    Messages
    1 239
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 239
    Points : 213
    Points
    213
    Par défaut
    Bonjour rdurupt
    je comprend ta démarche.
    je vais essayer donc d'insérer dans le formulaire les paramètre debut et fin.
    Je reviens vers toi si je bloque..

  3. #63
    Membre actif
    Inscrit en
    Avril 2007
    Messages
    1 239
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 239
    Points : 213
    Points
    213
    Par défaut
    rdurupt
    heu..disons que...pourrais tu me guider pour modifier le formulaire en inserant les parametre "debut "et "fin"..

  4. #64
    Invité
    Invité(e)
    Par défaut
    Pas de soucis je te prépares ça!

  5. #65
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Code UserForm : 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
    Public Function Chargement() As String
    Me.Show vbModal
    Dim I As Integer, Wh As String
    With Me.ListBox1
        For I = 0 To .ListCount - 1
         If .Selected(I) = True Then
            If Wh = "" Then Wh = "'" & .List(I) & "'" Else Wh = Wh & ",'" & .List(I) & "'"
         End If
        Next
    End With
     If Wh <> "" Then
        Chargement = "" & Format(Me.TextBox1, "yyyy-mm-dd hh:mm:ss") & ";" & Format(Me.TextBox2, "yyyy-mm-dd hh:mm:ss") & "; Where injonctions in (" & Wh & ")"
     Else
        Chargement = "" & Format(Me.TextBox1, "yyyy-mm-dd hh:mm:ss") & ";" & Format(Me.TextBox2, "yyyy-mm-dd hh:mm:ss") & ";"
     End If
     Unload Me
    End Function
     
    Private Sub CommandButton1_Click()
    Debug.Print Me.CommandButton1.Caption = "Désélectionner tout"
    Dim I As Integer
    With Me.ListBox1
        For I = 0 To .ListCount - 1
          .Selected(I) = Me.CommandButton1.Caption = "Sélectionner tout"
        Next
    End With
    If Me.CommandButton1.Caption = "Sélectionner tout" Then Me.CommandButton1.Caption = "Désélectionner tout" Else Me.CommandButton1.Caption = "Sélectionner tout"
    End Sub
    Private Sub CommandButton2_Click()
    Dim Errs As String
    If IsDate(Me.TextBox1) = False Then
        Errs = "Date début: n'est pas au bon format jj/mm/aaaa hh:mm:ss ou pas résinée : " & vbCrLf & Me.TextBox1 & vbCrLf
    End If
    If IsDate(Me.TextBox2) = False Then
         Errs = Errs & "Date Fin: n'est pas au bon format jj/mm/aaaa hh:mm:ss ou pas résinée : " & vbCrLf & Me.TextBox2 & vbCrLf
    End If
    If Errs <> "" Then MsgBox Errs: Exit Sub
     Me.Hide
    End Sub
    Private Sub UserForm_Initialize()
    Me.TextBox1 = ThisWorkbook.Sheets("Req_ExportUnionExcel").Range("B1")
    Me.TextBox2 = ThisWorkbook.Sheets("Req_ExportUnionExcel").Range("B2")
    Me.ListBox1.List = Array("0001", "0002", "0003", "0004", "0005", "0006", "0007", "0008", "0009", "0010")
    End Sub
    Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    Cancel = Not CBool(CloseMode)
    End Sub
    Code M_NbreColisInjectes : 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
    Option Explicit
    Sub ColisInjectes()
     
    Dim sql As String
    Dim GenereCSTRING As String
    Dim Debut As Object
    Dim Fin As Object
    Dim Cm As Object 'Pour utiliser une requête parametrés il faut utiliser l'oblet Command!
    Dim cn As Object 'Pour ce connecter à un base de données Access il faut utiliser l'objet Connection!
    Dim rs As Object
    Dim I As Integer
    Dim ligfin As Integer
    Dim whre As String
    whre = UserForm1.Chargement
    sql = "SELECT  * FROM PROD_Supervision_NbColis_Injectes " & Split(whre, ";")(2) ' je détermine une requête sql qui pointe sur ta requête Acces."
     
    Set cn = CreateObject("ADODB.Connection")
    Set Cm = CreateObject("Adodb.Command")
     
     GenereCSTRING = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=P:\chemin\BaseDonnee.mdb;;Persist Security Info=False" 'Je defini un chêne de texte qui contient les information de ma connection.
     cn.Open GenereCSTRING 'J'ouvre ma connection.
     
    Cm.CommandText = sql 'je passe ma requête à mon objet command
    Cm.ActiveConnection = cn 'j'affecte ma connection à ma commande
     
    Const adDate = 7 'defini le type de parametre
    Const adVarChar = 200
     
    'c'est avec l'objet Parameter que je vais renseigner les parmetres de ma requête Access.
    'Cellule où est stokcé la date cdate(format(ThisWorkbook.Sheets("Req_ExportUnionExcel").range("B1").value,"yyyy-mm-dd hh:mm"))
     
    Set Debut = CreateObject("ADODB.Parameter")
    Debut.Name = "debut": Debut.Type = adDate: Debut.Value = CDate(CDate(Split(whre, ";")(0))): Cm.Parameters.Append Debut
     
    Set Fin = CreateObject("ADODB.Parameter") 'c'est avec l'objet Parameter que je vais reseigner les parmetres de ma requête Access.
    Fin.Name = "Fin": Fin.Type = adDate: Fin.Value = CDate(Split(whre, ";")(1)): Cm.Parameters.Append Fin
     
     
     
    Set rs = Cm.Execute 'on recupere le résultat de la requête.
     
    With ThisWorkbook.Sheets("Req_ExportUnionExcel")
     
         For I = 0 To rs.Fields.Count - 1 'On place le nom des champs sur la ligne 4 de ma feuille Excel
                   .Range("A4").Offset(0, I) = rs(I).Name
         Next
     
            ligfin = .Cells(.Cells.Rows.Count, "A").End(xlUp).Row + 1 'Dernière ligne +1 de la colonne A
           .Cells(ligfin, "A").CopyFromRecordset rs 'la on copie le résultat de la requête!
     
        Columns("K:L").NumberFormat = "[$-F400]h:mm:ss AM/PM"
     
     
    End With
    End Sub
    Fichiers attachés Fichiers attachés

  6. #66
    Membre actif
    Inscrit en
    Avril 2007
    Messages
    1 239
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 239
    Points : 213
    Points
    213
    Par défaut
    Bonjour rdurupt
    merveilleux ton code...
    je vais surement être pénible
    dans l'userform, dans la liste des injections, j'ai rajouté le critère "ANNULER"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub UserForm_Initialize()
    Me.TextBox1 = ThisWorkbook.Sheets("DONNEE").Range("B1")
    Me.TextBox2 = ThisWorkbook.Sheets("DONNEE").Range("B2")
    Me.ListBox1.List = Array("ANNULER", "Injection 0001", "Injection 0002", "Injection 0003", "Injection 0004", "Injection 0005", "Injection 0006", "Injection 0007", "Injection 0008", "Injection 0009", "Injection 0010")
    End Sub
    J'essaye de creer une ligne de code qui stiplue que si je clique sur "ANNULER", et ensuite je clique sur "valider votre choix", l'Userform se ferme sans enregistrer aucune valeur.
    cela fonctionnait sur ta précédente version ( sans les dates dans le formulaire) .
    Mais dans cette version, cela ne fonctionne pas car on me demande de référencer les dates DEBUT et FIN.

    En résume , j'aimerais rentrer la ligne de code en rouge dans la procédure suivante ( D'ailleurs,je ne sais pas c'est dans cette procédure que la ligne de code doit etre insérer..)
    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
    Private Sub CommandButton2_Click()
    Dim Errs As String
    
    If Wh = "ANNULER" Then ' ne pas prendre en compte le champ "debut et "fin"
    
    
    If IsDate(Me.TextBox1) = False Then
        Errs = "Date début: n'est pas au bon format jj/mm/aaaa hh:mm:ss ou pas résinée : " & vbCrLf & Me.TextBox1 & vbCrLf
    End If
    If IsDate(Me.TextBox2) = False Then
         Errs = Errs & "Date Fin: n'est pas au bon format jj/mm/aaaa hh:mm:ss ou pas résinée : " & vbCrLf & Me.TextBox2 & vbCrLf
    End If
    If Errs <> "" Then MsgBox Errs: Exit Sub
     Me.Hide
    End Sub

  7. #67
    Invité
    Invité(e)
    Par défaut
    bonjour,
    montre moi comment t faisais ça avant!

    whre = UserForm1.Chargement
    if instr(Split(whre, ";")(2), "ANNULER")<> 0 then MsgBox "ANNULER"
    sql = "SELECT * FROM PROD_Supervision_NbColis_Injectes " & Split(whre, ";")(2) ' je détermine une requête sql qui pointe sur ta requête Acces."

  8. #68
    Membre actif
    Inscrit en
    Avril 2007
    Messages
    1 239
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 239
    Points : 213
    Points
    213
    Par défaut
    Bonjour rdurupt,
    Sur la version où il n ' y avait pas les champ debut et fin dans le formulaire, , il suffisait d'inserer le critère "ANNULER" dans la procédure ci dessous
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub UserForm_Initialize()
    Me.TextBox1 = ThisWorkbook.Sheets("DONNEE").Range("B1")
    Me.TextBox2 = ThisWorkbook.Sheets("DONNEE").Range("B2")
    Me.ListBox1.List = Array("ANNULER", "Injection 0001", "Injection 0002", "Injection 0003", "Injection 0004", "Injection 0005", "Injection 0006", "Injection 0007", "Injection 0008", "Injection 0009", "Injection 0010")
    End Sub
    Je selectionnais ensuite le critère "ANNULER" et je validais sur le bouton de commande "valider votre choix" et l'userform se fermait sans aucun enregistrement.
    Tout Simplement


    Pour revenir au code que tu m'a envoyé, je l'ai inséré dans la procédure Sub ColisInjectes()
    Mais j'ai toujours le même problème: lorsque je selectionne le critère "ANNULER" et que je valide, j'ai toujours les boites de dialogue qui s'affiche en me disant de rentrer des dates debut et fin..
    Lorsque je lance le code pas à pas, le code se poursuit jusqu'a la procédure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub CommandButton2_Click()
    qui demande de référencer les dates début et fin

  9. #69
    Membre actif
    Inscrit en
    Avril 2007
    Messages
    1 239
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 239
    Points : 213
    Points
    213
    Par défaut
    Bonsoir rdurupt

    je reviens vers toi concernant la possibilité de fermer l'userform sans au préalable référencer les dates debut et fin.
    Comme je te l'avais écrit précédemment, ton code ne me permettait pas de fermer l'userform : il fallait toujours que je référence les dates debut et fin.
    Pour contourner ce problème, j'ai crée, dans l'Userform, un bouton de commande où j 'ai inseré le code ci dessous.
    Et ça fonctionne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub CommandButton_FermerUserForm_Click()
    End 'Fermer l'Userform
    End Sub

  10. #70
    Membre actif
    Inscrit en
    Avril 2007
    Messages
    1 239
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 239
    Points : 213
    Points
    213
    Par défaut
    Je ferme cette discussion
    merci encore de ton aide rdurupt
    ET je n'oublie pas non plus argyronet

+ Répondre à la discussion
Cette discussion est résolue.
Page 4 sur 4 PremièrePremière 1234

Discussions similaires

  1. [VBA EXCEL / ACCESS] : Resultat d'une requete
    Par forsay1 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 17/07/2009, 12h00
  2. Réponses: 7
    Dernier message: 03/10/2007, 19h06
  3. Réponses: 2
    Dernier message: 30/08/2007, 10h49
  4. Réponses: 8
    Dernier message: 23/05/2006, 12h13
  5. [VB6] [Excel] Résultat d'une requete ds une feuille
    Par elifqaoui dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 07/01/2003, 17h52

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