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] Problème Fonction If Not Is Null dans Module InsererDansWord


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] Problème Fonction If Not Is Null dans Module InsererDansWord
    Bonjour,

    J'ai un problème de syntaxe dans le code suivant :

    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
    Public Sub InsererDansWord4()
        '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 strChambre As String
    
    strNomPrenom = Forms.Commandes.Titre & " " & Forms.Commandes.Nomclient & " " & Forms.Commandes.Prenomclient
    
    With objWord
            .Documents.Add Template:=CurrentProject.Path & "\resahotel.doc", NewTemplate:=False, DocumentType:=0
    
        If Not IsNull(strNomPrenom) Then .ActiveDocument.Bookmarks("Name").Range.Text = strNomPrenom
        Else: .ActiveDocument.Bookmarks("Name").Range.Text = "Champs Titre Nom Prénom non remplis"
        End If
    
            .ActiveDocument.Bookmarks("Numresa").Range.Text = Forms.Commandes.Factures.Form.IDfacture
            .ActiveDocument.Bookmarks("Numpax").Range.Text = Forms.Commandes.Numpax
            .ActiveDocument.Bookmarks("Date1").Range.Text = Forms.Commandes.Datedebut
            .ActiveDocument.Bookmarks("Date2").Range.Text = Forms.Commandes.Datefin
            .ActiveDocument.Bookmarks("Room").Range.Text = Forms.Commandes.Factures.Form.[RqTotalhotel subform].Form.Typechambre
            .ActiveDocument.Bookmarks("Nomhotel").Range.Text = Forms.Commandes.Factures.Form.[RqTotalhotel subform].Form.Nomhotel
            .ActiveDocument.Bookmarks("Adressehotel").Range.Text = Forms.Commandes.Factures.Form.[RqTotalhotel subform].Form.Adressehotel
            .ActiveDocument.Bookmarks("CPhotel").Range.Text = Forms.Commandes.Factures.Form.[RqTotalhotel subform].Form.CPVillehotel
            .ActiveDocument.Bookmarks("Telhotel").Range.Text = Forms.Commandes.Factures.Form.[RqTotalhotel subform].Form.Tel
            .ActiveDocument.Bookmarks("Numnuit").Range.Text = Forms.Commandes.Factures.Form.[RqTotalhotel subform].Form.Numnuit
            
    'affichage en plein écran
    .WindowState = wdWindowStateMaximize
    
    'lance la boite de dialogue d'enregistrement du document
    With .Dialogs.Item(wdDialogFileSaveAs)
        .Name = "Z:\CLIENTS PROPOSITIONS\"
        '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
    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 Sub
    La fonction If Not IsNull que j'ai mis ici en rouge ne réponds pas comme je le souhaite. A vrai dire, si je laisse ainsi sur plusieurs lignes, j'ai le message d'erreur : " 'Else' sans 'If' " et si je mets l'ensemble sur une seule ligne, c'est Erreur de syntaxe.
    Le but serait d'avoir au niveau du signet dans Word soit le contenu des champs si les champs ne sont pas vides, soit le texte "Champs Titre Nom Prénom non remplis"
    Quelqu'un pourrait-il me dire comment rédiger correctement cette ligne de code ?
    Merci par avance

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    salut,
    déjà si on est pas trop avare en lignes, on en ajoute une et ca donne ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If Not IsNull(strNomPrenom) Then 
            .ActiveDocument.Bookmarks("Name").Range.Text = strNomPrenom
        Else
             .ActiveDocument.Bookmarks("Name").Range.Text = "Champs Titre Nom Prénom non remplis"
        End If
    et ca devrait être suffisant
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  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
    Re,

    Effectivement, en écrivant de cette façon, je n'ai plus d'erreur dans Access. Merci beaucoup
    En revanche, mon texte 'Champs... non remplis' ne s'inscrit pas dans Word.
    Y a-t-il une ponctuation particulière à adopter ? ' au lieu des " ou alors des () par exemple ?

    Emye3

  4. #4
    Expert confirmé
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Par défaut
    Bonjour,

    Curieux ?

    Tu peux reposter ton code ?

    Domi2

  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
    Re,

    Voici le code après la modification suggérée par jpcheck

    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
    Public Sub InsererDansWord4()
     
        '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 strChambre As String
     
    strNomPrenom = Forms.Commandes.Titre & " " & Forms.Commandes.Nomclient & " " & Forms.Commandes.Prenomclient
     
    With objWord
            .Documents.Add Template:=CurrentProject.Path & "\resahotel.doc", NewTemplate:=False, DocumentType:=0
            If Not IsNull(strNomPrenom) Then
            .ActiveDocument.Bookmarks("Name").Range.Text = strNomPrenom
            Else
            .ActiveDocument.Bookmarks("Name").Range.Text = "Champs Titre Nom Prénom non remplis"
            End If
            .ActiveDocument.Bookmarks("Numresa").Range.Text = Forms.Commandes.Factures.Form.IDfacture
            .ActiveDocument.Bookmarks("Numpax").Range.Text = Forms.Commandes.Numpax
            .ActiveDocument.Bookmarks("Date1").Range.Text = Forms.Commandes.Datedebut
            .ActiveDocument.Bookmarks("Date2").Range.Text = Forms.Commandes.Datefin
            .ActiveDocument.Bookmarks("Room").Range.Text = Forms.Commandes.Factures.Form.[RqTotalhotel subform].Form.Typechambre
            .ActiveDocument.Bookmarks("Nomhotel").Range.Text = Forms.Commandes.Factures.Form.[RqTotalhotel subform].Form.Nomhotel
            .ActiveDocument.Bookmarks("Adressehotel").Range.Text = Forms.Commandes.Factures.Form.[RqTotalhotel subform].Form.Adressehotel
            .ActiveDocument.Bookmarks("CPhotel").Range.Text = Forms.Commandes.Factures.Form.[RqTotalhotel subform].Form.CPVillehotel
            .ActiveDocument.Bookmarks("Telhotel").Range.Text = Forms.Commandes.Factures.Form.[RqTotalhotel subform].Form.Tel
            .ActiveDocument.Bookmarks("Numnuit").Range.Text = Forms.Commandes.Factures.Form.[RqTotalhotel subform].Form.Numnuit
        'affichage en plein écran
        .WindowState = wdWindowStateMaximize
        'lance la boite de dialogue d'enregistrement du document
        With .Dialogs.Item(wdDialogFileSaveAs)
            .Name = "Z:\CLIENTS PROPOSITIONS\"
            '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
    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 Sub
    Le document Word s'ouvre bien mais le signet est laissé vide...

  6. #6
    Expert confirmé
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Par défaut
    Re,

    Et si tu remplaces

    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If strNomPrenom <>" " Then
    cela donne quoi ?

    Domi2

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

Discussions similaires

  1. Problème Fonction avec NULL
    Par Almenor dans le forum PL/SQL
    Réponses: 5
    Dernier message: 22/03/2012, 19h04
  2. problème fonction not in
    Par dodie84 dans le forum Requêtes et SQL.
    Réponses: 12
    Dernier message: 14/05/2008, 10h12
  3. problème de champs not null qui sont marqués null à la création
    Par Elianora la blanche dans le forum Outils
    Réponses: 6
    Dernier message: 02/02/2007, 09h33
  4. Fonction "is not null" ?
    Par Phenomenium dans le forum ASP
    Réponses: 2
    Dernier message: 03/10/2006, 12h09
  5. [PHPMyAdmin]Problème avec "Not Null" dans mysql 5
    Par Ryan Sheckler dans le forum Requêtes
    Réponses: 4
    Dernier message: 15/12/2005, 14h45

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