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 :

Emplacement du code VBA


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de anouar_chaieb
    Inscrit en
    Mai 2004
    Messages
    282
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Mai 2004
    Messages : 282
    Par défaut Emplacement du code VBA
    J'ai un code sert à effacer les trous dans les numéros auto c à dire il crée un numéro juste après le dernier, mais je cherche l'emplacement exacte du code j'ai essayé de plusieurs façons.

    code:
    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
    Function NextID(LeChamp As String, LaTable As String) As Long 
     '-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
     'Fonction renvoyant le prochain Identifiant, en fonction des valeurs existantes dans une table. 
     'Arguments : 
     '    LeChamp => Nom du champ Identifiant numérique Long concerné 
     '    LaTable => Nom de la table contenant cet identifiant 
     'Retour    : 
     '    1 s'il n'y a rien dans la table 
     '    Le Nombre maximum +1 s'il y a une suite ininterrompue de nombres 
     '    La valeur du nombre manquant en cas de trou. 
     '-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
        Dim sSQL    As String 
        Dim rs      As DAO.Recordset 
        Dim n       As Long 
     
        'Chaîne SQL en fonction de LeChamp et de LaTable, retournant NULL ou le numéro du trou 
        sSQL = "Select Min([" & LECHAMP & "]-1) As NextID From " & LATABLE & " As T1 "
        sSQL = sSQL & "Where ((([" & LECHAMP & "]-1)>0) And (((Select [" & LECHAMP & "] "
        sSQL = sSQL & "From " & LATABLE & " T2 "
        sSQL = sSQL & "Where T2.[" & LECHAMP & "]=T1.[" & LECHAMP & "]-1)) Is Null));" 
        Set rs = CurrentDb.OpenRecordset(sSQL, dbOpenSnapshot) 
        'Nbre d'enregistrements dans laTable 
        n = DCount("[" & LeChamp & "]", "[" & LaTable & "]") 
        If n = 0 Then               'S'il n'y a pas d'enregistrements, mettre 1 
            NextID = 1 
        ElseIf IsNull(rs(0)) Then   'Si la requête ne renvoie rien, incrémenter de 1 le maximum 
            NextID = DMax("[" & LeChamp & "]", "[" & LaTable & "]") + 1 
        Else 
            NextID = rs(0)          'Sinon, il y a un trou. Renvoyer la valeur du trou 
        End If

  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
    Bonjour,
    et tu attends quel genre de réponse ?
    - dans un module ?
    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 éclairé Avatar de anouar_chaieb
    Inscrit en
    Mai 2004
    Messages
    282
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Mai 2004
    Messages : 282
    Par défaut re
    ça n'a pas marché dans un bouton de commande ou autre !!

  4. #4
    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
    tu le mets où bon te semble, du moment qu'il est déclaré en tant que
    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

  5. #5
    Membre Expert
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : France

    Informations professionnelles :
    Secteur : Services à domicile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 219
    Par défaut
    une function se met effectivement "en général" dans un module mais pour qu'elle functionne il faut l'appeler - là toujours en général cela peut effectivement se faire avec un bouton et un code "sub" attaché à un de ses évènements "souvent clic" et ne pas oublier d'y passer les arguments dont la function a besoin dans ton cas (LeChamp As String, LaTable As String) et normalement ça functionne...

  6. #6
    Membre éclairé Avatar de anouar_chaieb
    Inscrit en
    Mai 2004
    Messages
    282
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Mai 2004
    Messages : 282
    Par défaut ça n'a pas marché
    Veux tu m'indiquer comment fait-on appel à ce code "sur click" j'ai essayé mais je me suis trompé

  7. #7
    Membre éclairé Avatar de anouar_chaieb
    Inscrit en
    Mai 2004
    Messages
    282
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Mai 2004
    Messages : 282
    Par défaut RE
    le msg d'erreur:
    erreur d'exécution '3131':
    Erreur de syntaxe dans la clause FROM.

  8. #8
    Invité
    Invité(e)
    Par défaut
    Re

    En regardant ta copie d'écran :

    Dans la deuxième partie tu déclares des variables que tu passes en paramètre à la fonction sans leur donner des valeurs, donc tu as une chaine vide dans pour ton From.

    Starec

  9. #9
    Membre Expert
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : France

    Informations professionnelles :
    Secteur : Services à domicile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 219
    Par défaut
    1) le référencement de DAO en 2007 est inutile déjà inclu explication du mess
    seul ADO 2.8 doit si necessaire être éventuellement référencé "pour info seulement" car pas le problème du jour.

    2) d'accord...bien sur avec starec - les valeurs passées à la fonction ne sont pas bonnes et seront vides si elles font appel à par exemple des zones de texte du formulaire et faut faire appel à leur propriété .value je pense dans ce cas.

    3) n'étant pas expert en SQL, je préfère travailler tout en VBA, je suis interpellé par le nom de la fonction au milieu du code SQL enfin parole aux experts je n'ai pas essayé.

  10. #10
    Membre éclairé Avatar de anouar_chaieb
    Inscrit en
    Mai 2004
    Messages
    282
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Mai 2004
    Messages : 282
    Par défaut re
    salut, j'ai activé ADO 2.8 mais le pb perciste

    Starec a dit:
    Dans la deuxième partie tu déclares des variables que tu passes en paramètre à la fonction sans leur donner des valeurs, donc tu as une chaine vide dans pour ton From.
    peut être c'est le pb mais expliquer un peu

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 101
    Par défaut
    bonjour

    je te conseille de faire un
    juste avant ta ligne en erreur de la mettre dans une requete pour regarder ce qui ne vas pas

Discussions similaires

  1. afficher un graphique dans word à partir de mon code vba
    Par guysocode dans le forum VBA Word
    Réponses: 2
    Dernier message: 07/11/2005, 14h15
  2. Réponses: 2
    Dernier message: 27/10/2005, 15h51
  3. Réponses: 4
    Dernier message: 13/10/2005, 14h44
  4. Réponses: 3
    Dernier message: 06/09/2005, 10h27
  5. Comment creer une procédure stockée à partir d'un code VBA?
    Par Alcor020980 dans le forum Connexion aux bases de données
    Réponses: 4
    Dernier message: 24/05/2005, 19h55

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