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 :

[A-03] probleme code SELECT CASE


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 48
    Par défaut [A-03] probleme code SELECT CASE
    Bonjour,

    je souhaite appliquer SELECT CASE à un module pour envoyer les informations d'un formulaire vers Word.
    Le modue d'envoi des données sans SELECT CASE fonctionne. Je souhaiterai donc qu'en fonction du contenu du champ IDtypetransition, le document ouvert dans Word soit différent et que les onglets adaptés soient remplis.

    Voici le code auquel j'ai abouti (c'est un peu long, désolée) mais cela ne fonctionne pas... Je n'avais jamais utilisé cette fonction auparavant et j'avoue ne pas trop savoir où placer chacun des éléments. Le debugger d'Access m'indique .WindowState comme une référence invalide... Quelqu'un pourrait-il me dire où est l'erreur ?

    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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    Option Compare Database
    
    Public Sub InsererDansWord()
        
        'On Error Resume Next
        
    ' Déclaration des variables et des constantes
    Dim strtype As String
    Dim objWord As New Word.Application
    Dim strNomPrenom As String
    Dim strPrestation As String
    Dim strDate As String
    Dim sSQL1 As String
     
    strNomPrenom = Forms.Commandes.Titre & " " & Forms.Commandes.Nomclient & " " & Forms.Commandes.Prenomclient
    strPrestation = Forms.Commandes.Factures.Form.RqTotalprestsubform.Form.IDproduittransition & " " & Forms.Commandes.Factures.Form.RqTotalprestsubform.Form.Memoproduit
    strDate = Forms.Commandes.Factures.Form.RqTotalprestsubform.Form.Dateprestation & " " & Forms.Commandes.Factures.Form.RqTotalprestsubform.Form.Heureprestation
    strtype = Forms.Commandes.Factures.Form.RqTotalprestsubform.Form.IDtypetransition
    sSQL1 = "SELECT Hotels.Nomhotel FROM Hotels WHERE Hotels.IDhotel = Forms.Commandes.HotelPrague"
    
    ' ---------- Début de la sélection
    Select Case strtype
    
      Case 1
         With objWord
            .Documents.Add Template:=CurrentProject.Path & "\vouchervisitereguliere.doc", NewTemplate:=False, DocumentType:=0
            .ActiveDocument.Bookmarks("Name").Range.Text = strNomPrenom
            .ActiveDocument.Bookmarks("Prestation").Range.Text = strPrestation
            .ActiveDocument.Bookmarks("Date").Range.Text = strDate
            .ActiveDocument.Bookmarks("Numpax").Range.Text = Forms.Commandes.Numpax
            .ActiveDocument.Bookmarks("Numresa").Range.Text = Forms.Commandes.Factures.Form.IDfacture
        End With
     
    Case 2, 6
        With objWord
            .Documents.Add Template:=CurrentProject.Path & "\vouchervisiteprivee.doc", NewTemplate:=False, DocumentType:=0
            .ActiveDocument.Bookmarks("Name").Range.Text = strNomPrenom
            .ActiveDocument.Bookmarks("Prestation").Range.Text = strPrestation
            .ActiveDocument.Bookmarks("Date").Range.Text = strDate
            .ActiveDocument.Bookmarks("Numpax").Range.Text = Forms.Commandes.Numpax
            .ActiveDocument.Bookmarks("Numresa").Range.Text = Forms.Commandes.Factures.Form.IDfacture
            .ActiveDocument.Bookmarks("Nomguide").Range.Text = Forms.Commandes.Factures.Form.RqTotalprestsubform.Form.Guidetransition
        End With
        
      Case 3
    With objWord
            .Documents.Add Template:=CurrentProject.Path & "\vouchertransfert.doc", NewTemplate:=False, DocumentType:=0
            .ActiveDocument.Bookmarks("Name").Range.Text = strNomPrenom
            .ActiveDocument.Bookmarks("Prestation").Range.Text = strPrestation
            .ActiveDocument.Bookmarks("Date").Range.Text = strDate
            .ActiveDocument.Bookmarks("Numpax").Range.Text = Forms.Commandes.Numpax
            .ActiveDocument.Bookmarks("Numresa").Range.Text = Forms.Commandes.Factures.Form.IDfacture
            .ActiveDocument.Bookmarks("Nomhotel").Range.Text = sSQL1
    End With
        
    Case Else
    With objWord
            .Documents.Add Template:=CurrentProject.Path & "\voucherautre.doc", NewTemplate:=False, DocumentType:=0
            .ActiveDocument.Bookmarks("Name").Range.Text = strNomPrenom
            .ActiveDocument.Bookmarks("Prestation").Range.Text = strPrestation
            .ActiveDocument.Bookmarks("Date").Range.Text = strDate
            .ActiveDocument.Bookmarks("Numpax").Range.Text = Forms.Commandes.Numpax
            .ActiveDocument.Bookmarks("Numresa").Range.Text = Forms.Commandes.Factures.Form.IDfacture
    End With
        
    'affichage en plein écran
    .WindowState = wdWindowStateMaximize
    'lance la boite de dialogue d'enregistrement du document
    With .Dialogs.Item(wdDialogFileSaveAs)
        .Name = "Z:\Clients - Propositions AGP\"
        'si on clique sur enregistrer... sinon...
        If .Show = -1 Then
        MsgBox "Document enregistré"
        Else
        objWord.Quit savechanges:=False
        MsgBox "vous avez annulé l'enregistrement!"
        End If
    End With
    'en cas de modification de l'enregistrement, on sauvegarde
    If Dirty = True Then
    DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
    End If
    'Libération de l'objet
        Set objWord = Nothing
        
    End Select

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

    Je ne vois pas au niveau de ton message d'erreur, mais juste une chose :

    Est-ce normal que tu enregistre sur le Case Else et non sur les autres cases ? Si tu dois toujours enregistrer, fais-le après le End Select.

    De plus, tu as arrêté ton With par End With avant le

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .WindowState = wdWindowStateMaximize
    qui fait référence à objWord

    Je pense que cela vient de là.

    Philippe

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 48
    Par défaut
    Merci beaucoup, j'ai résolu mon problème, j'avais en fait mal compris la syntaxe du code.

    J'ai recopié le code suivant au-dessus du End With

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .WindowState = wdWindowStateMaximize
    Et j'ai dû faire la même chose pour l'enregistrement car, lorsque je le place en dessous de End Select, il ne reconnaît plus

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    With .Dialogs.Item(wdDialogFileSaveAs)
    Par contre, cela ne fonctionne que si tous les champs sont remplis. Y-a-t-il une façon d'indiquer à Access qu'il doit laisser un champ vide lorsque le champ n'est pas rempli ?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 72
    Par défaut
    Voir la fonction qui s'applique à une zone de texte d'un formulaire.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 48
    Par défaut
    Super, merci beaucoup pour votre aide à tous les deux!

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

Discussions similaires

  1. [XL-2003] Probleme avec Select Case base sur le rapport de deux variables :
    Par Bonero dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 02/02/2012, 12h41
  2. VBA Optimisation de code, Select Case et requete SQL
    Par Secco dans le forum VBA Access
    Réponses: 7
    Dernier message: 06/05/2008, 21h05
  3. Probleme Select Case sur Double Condition
    Par Danyel dans le forum VB.NET
    Réponses: 2
    Dernier message: 14/04/2008, 23h37
  4. [VB]probleme avec select case
    Par mickael99 dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 03/02/2006, 14h07
  5. Probleme avec Select Case
    Par GeffD dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 07/03/2005, 15h28

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