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-02] Incompatibilité de type dans un DLookUp


Sujet :

VBA Access

  1. #1
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Suisse

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

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 044
    Points
    16 044
    Par défaut [A-02] Incompatibilité de type dans un DLookUp
    Bonsoir,

    J'ai un problème en effectuant ce code (incompatibilté de type)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lngIpcIdNew = DLookup("IpcId", "tblIpc", "IpcId =" & lngIpcBase And "IpcMois =#" & Format(dtmIpcMois, "mm\/dd\/yyyy") & "#")
    lngIpcBase et dtmIpcMois sont des variables, elles contiennent bien les valeurs souhaitées.

    ... et je ne vois pas (ou plus... )...

    Domi2

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 399
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 399
    Points : 2 221
    Points
    2 221
    Par défaut
    bonjour domi2,

    il me semble que tu as laissé le <and> en dehors des " " :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    "IpcId =" & lngIpcBase & " And IpcMois =#"
    Philippe

  3. #3
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Suisse

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

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 044
    Points
    16 044
    Par défaut
    Bonjour philben, et merci...

    En effet, ça allait mieux au niveau de la syntaxe, mais pas à celui de l'instruction elle-même.

    J'ai fini par utiliser un recordset :

    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
    87
    88
    89
    90
    91
    Private Sub cboPerIpcBase_AfterUpdate()
     
        'Déclaration des variables
        Dim Db As DAO.Database
        Dim Rst As DAO.Recordset
     
        Dim lngIpcBase As Long
        Dim dtmIpcMoisInitial As Date
        Dim dtmIpcMoisIndexe As Date
     
        'On assigne la valeur de l'Id du nouvel Ipc de base à la variable lngIpcBase
        lngIpcBase = Me.cboPerIpcBase.Value
     
        'On assigne la date de validité de l'IPC initial à la variable dtmIpcMoisInitial
        dtmIpcMoisInitial = Me.cboPerIpcInitial.Column(2)
     
        'On assigne la date de validité de l'IPC initial à la variable dtmIpcMoisIndexe
        dtmIpcMoisIndexe = Me.cboPerIpcIndexe.Column(2)
     
        'Recherche dans la table tblIpc de l'Id des enregistrements correspondants à la valeur
        'de la nouvelle base d'indice pour les dates de validité sélectionnées
        If Me.cboPerIpcBase.OldValue > 0 Then
     
            Set Db = CurrentDb
            Set Rst = Db.OpenRecordset("Select * From tblIpc")
     
            If Rst.BOF Then
     
                MsgBox "il n'y a pas d'enregistrements"
     
                GoTo ExitSub
     
            End If
     
            Rst.FindFirst "IpcBase =" & lngIpcBase & " AND IpcValidite = #" & Format(dtmIpcMoisInitial, "mm\/dd\/yyyy") & "#"
     
            If Rst.NoMatch Then
     
                MsgBox "il n'y a pas d'enregistrements"
     
            GoTo ExitSub
     
            End If
     
            'On assigne la valeur du nouvel Id à la liste cboPerIpcInitial
            Me.cboPerIpcInitial.Value = Rst("IpcId")
     
            If Rst.BOF Then
     
                MsgBox "il n'y a pas d'enregistrements"
     
                GoTo ExitSub
     
            End If
     
            Rst.FindFirst "IpcBase =" & lngIpcBase & " AND IpcValidite = #" & Format(dtmIpcMoisIndexe, "mm\/dd\/yyyy") & "#"
     
            If Rst.NoMatch Then
     
                MsgBox "il n'y a pas d'enregistrements"
     
            GoTo ExitSub
     
            End If
     
            'On assigne la valeur du nouvel Id à la liste cboPerIpcIndexe
            Me.cboPerIpcIndexe.Value = Rst("IpcId")
     
            'Rafraîchissement des listes déroulantes cboPerIpcInitial et cboPerIpcIndexe
            Me.cboPerIpcInitial.Requery
            Me.cboPerIpcIndexe.Requery
     
            'Mise à jour de la valeur des frais généraux indexés
            Me.txtPerFraisGenerauxIndexe.Value = Int((Me.txtPerFraisGenerauxBase.Value / Me.cboPerIpcInitial.Column(1) * Me.cboPerIpcIndexe.Column(1)) + 1 * 0.5)
     
        Else
     
            'Rafraîchissement des listes déroulantes cboPerIpcInitial et cboPerIpcIndexe
            Me.cboPerIpcInitial.Requery
            Me.cboPerIpcIndexe.Requery
     
        End If
     
    ExitSub:
     
        'Libération des objets
        Db.Close
        Set Rst = Nothing
        Set Db = Nothing
     
    End Sub
    J'ai encore certains événements a gérer si je n'ai pas d'enregistrements, mais cela me semble solide comme base...

    Domi2

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

Discussions similaires

  1. [XL-2003] Incompatibilité de type dans IF
    Par Julaxio dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 22/06/2011, 16h15
  2. Réponses: 3
    Dernier message: 30/07/2008, 11h56
  3. Incompatibilité de type dans un formulaire
    Par Kalseln dans le forum IHM
    Réponses: 7
    Dernier message: 04/09/2007, 22h02
  4. "Incompatibilité de type" dans une formule
    Par Log_polmed dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 19/06/2007, 15h03
  5. Incompatibilité de types dans un formulaire
    Par ahage4x4 dans le forum ASP
    Réponses: 3
    Dernier message: 03/05/2005, 15h39

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