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 :

Problème de code vba ligne if surligné en jaune


Sujet :

VBA Access

  1. #21
    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,

    En mode création de ton formulaire, dans les propriétés, tu cliques dans l'événement Avant MAJ, puis sur les ... à droite et tu cliques sur générateur de code.

    Cela te génère du code dans l'éditeur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Form_BeforeUpdate(Cancel As Integer)
     
    End Sub
    Tu colles le code donné plus haut entre ce deux lignes.

    Et si tu as des erreurs, merci de poster le code en entier en indiquant quelle ligne est surlignée en jaune.

    Domi2

  2. #22
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    121
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 121
    Par défaut
    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
    Private Sub Date_BeforeUpdate(Cancel As Integer)
    'Teste la présence d'enregistrement
    Me.RecordsetClone.MoveLast
     
    If Me.RecordsetClone.RecordCount > 0 Then
     
        'Teste la présence d'un éventuel doublon s'il s'agit d'un nouvel enregistrement ou en cas de modification du champ strDatectc
        If Not Me.NewRecord And Me.strDatectcm.Value = Me.strDatectc.OldValue Then Exit Sub
     
        With Me.RecordsetClone
     
            .rst.FindFirst "Datectc = #" & Format(Me.strDatectc.Value, "mm\/dd\/yyyy") & "#"
     
            If Not .NoMatch Then
     
                'Message d 'erreur
                msgbox "la date saisie existe déjà dans la base de donnée"
     
                Me.strDatectc.SetFocus
     
                Cancel = True
     
                Exit Sub
     
            End If
     
        End With
     
    End If
    End Sub
    Ligne surligné en jaune :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub Date_BeforeUpdate(Cancel As Integer)
    et aussi dans la ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     If Not Me.NewRecord And Me.strDatectcm.Value = Me.strDatectc.OldValue Then Exit Sub
    j'ai qui est selectionné (comme si j'avais cliqué dessus avec ma souris) et il y a un msg d'erreur
    membre de méthode ou de donnée introuvable

  3. #23
    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,

    Ligne surligné en jaune :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub Date_BeforeUpdate(Cancel As Integer)
    C'est que tu n'as sans doute pas de champ dont le "Nom" est "Date". De toute façon, c'est mieux ainsi, il faut absolument éviter d'utiliser des termes réservés.

    Ceci étant, comme je l'ai indiqué plus haut, utilise plutôt l'événement Avant MAJ du formulaire, (voir discussion du 05.08.2009 à 09h48).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Date_BeforeUpdate(Cancel As Integer)
     
    End sub
    j'ai

    .strDatectcm qui est selectionné (comme si j'avais cliqué dessus avec ma souris) et il y a un msg d'erreur
    Relire mon message du 04.08.2009 à 20h23.

    Tu as "Datectcm" comme "Nom" du champ dans ta table et comme "Nom" du contrôle qui affiche cette info dans ton formulaire. Le genre de confusion qu'Access n'apprécie pas beaucoup.

    Tu dois donc renommer le champ du formulaire qui affiche ta date en "strDatectc". Tu peux lui donner un autre nom (sauf "Datectc" et encore moins "Date"). Dans ce cas, il te faudra adapter ton code en conséquence.

    Domi2

  4. #24
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    121
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 121
    Par défaut
    ok j'ai essayer ce code, rien ne beug mais...

    On touche au but je pense c'est à dire que le code ne marche pas pour unz bonne raison, mais avant je doit peut être faire une mise au point sur la procédure de saisie:

    J'ai une table DATE SCTC qui est utilisé dans le formulaire (lorsqu'on tape dans la zone de texte c'est dans cette table qu'est enregistré la date), Une table Date ctc qui contient toute les dates rentré dans DATE SCTC. Puis ma table HISTO SCTC qui contient mes dates avec mes indices et mes valeurs.

    L'action se déroule ainsi. J'ai créer un sous formulaire datectc à partir du champs "strDatectc" de la table DATE SCTC, et un sous formulaire Valeurs SCTC à partir d'une table VALEURS SCTC. C'est deux sous formulaires forment un formulaire de saisie SCTC. Lorsque que le formulaire est complété les choses se déroulent comme ça: (le tout dans une macro associé au bouton enregistrer)
    avec une requête "déverser date" la date saisie et envoyer dans ma table Date ctc pour y être conserver
    Ensuite avec une requête "déverser" les valeurs et la date saisie sont envoyer dans ma table HISTO SCTC pour y être historisé.
    Tout ça parce que après je dois faire une interpolation linéaire sur les indices.
    De plus, lorsque la personne ouvre le formulaire à partir du formulaire d'accueil, il clique sur un bouton associé à une macro qui éxécute ceci:
    Avec une requête elle fait une MAJ des valeurs de ma table VALEURS SCTC pour, et une autre requête fait une MAJ des valeurs de ma table DATE SCTC pour que mon formulaire de saisie soit vierge de ces valeurs pour l'utilisateurs.

    Après cette parenthèse venons en au fait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub strDatectc_BeforeUpdate(Cancel As Integer)
    représente le champs de ma zone de texte ou est saisie la date :

    mais voilà c'est pas dans la table associé à se formulaire qu'il faut chercher la une date éxistante puisqu'elle sera forcément mise à jours, il faut chercher dans la table Date ctc et le champs Datectc.
    c'est pourquoi domi ton code marche je pense, enfin ça plante pas, mais il ne trouve rien puisque cette table est vide au moment ou il s'exécute

    La me vient une autre pensée. Je ne pourrai pas faire plus simple avec un formulaire à base d'une table HISTO SCTCet Date ctc (ou je mettrai indéxé sans doublon, ce qui vérifira ma date), qui serait vierge à chaque fois, sans requête de MAJ?. Enfin un vrai masque de saisie quoi

    Cordialement

    ps: est ce qu'il y a sur ce forum un moteur de recherche de topic?

  5. #25
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 76
    Par défaut
    J'ai arrété de suivre depuis que Domi a reprise la relève mais voici la page de recherche :http://www.developpez.net/forums/search.php

  6. #26
    Membre confirmé
    Homme Profil pro
    Ingénieur Électromécanicien
    Inscrit en
    Mars 2008
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur Électromécanicien
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2008
    Messages : 60
    Par défaut
    bonjour,
    eh les mecs,
    j'ai lu, en diagonale, le problème alors pourquoi ne pas utiliser simplement une modifiable,de mettre sa LimitToList à true puisque les dates proviennent d'une table déjà existante ( et donc date valide, enfin sans intervalle) et d'exploiter l'événement NotInList(.............................).


    A+

  7. #27
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    121
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 121
    Par défaut
    Tu peux m'expliquer en quoi ça consiste?

    Moi je pense que je me suis compliqué la vie, le plus simple aurait été d'avoir une table date une table valeur qui se véverserai dans histo. J'aurai mis indexer sans doublon pour la table date et le pb aurait été réglé.
    Mais voila quand je crée mon masque de saisie avec l'assistant formulaire, je me retrouve avec tout les enregistrement précédent.
    Il n'y à pas moyen de faire en sorte que les données existante dans la table n'apparaisse pas dans mon masque de saisie
    Moyen autre que le mien expliquer deux post plus haut

Discussions similaires

  1. [AC-2013] Problème de code VBA
    Par kbrice dans le forum Access
    Réponses: 1
    Dernier message: 29/04/2015, 19h21
  2. [XL-2010] Problème de code VBA
    Par BENNASR dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 05/01/2015, 16h36
  3. [XL-2010] Problème de code VBA
    Par Kalteck dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 24/08/2012, 09h22
  4. [XL-2007] Code VBA pour supprimer des lignes sous condition - problème
    Par PeaceMaker dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 08/06/2011, 09h09

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