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 incrémentation en fonction d'une variable


Sujet :

VBA Access

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 175
    Points : 76
    Points
    76
    Par défaut problème incrémentation en fonction d'une variable
    Bonjour,

    Je débute en VBA pour ACCESS et je n'arrive pas à faire un algo.
    J'aimerais incrémenter une valeur dans un champ mais l'incrément repart de 0 à chaque fois que le nom d'une valeur située dans un autre champ change.

    Voila, si quelqu'un a des idées.
    Merci d'avance

  2. #2
    Membre chevronné
    Avatar de Demco
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 396
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 396
    Points : 2 228
    Points
    2 228
    Par défaut
    Je n'ai pas trop compris.
    Aurais-tu un morceau de code qui accompagne ton explication ?

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 175
    Points : 76
    Points
    76
    Par défaut
    je n'ai pas vraiment de code

    j'ai juste ça
    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
    Function incre_lac(monchamp As Integer)
    
    Dim mavariable As String
    
    Select Case monchamp
    Case "Aydat"
        mavariable = "1"
    Case "Bordes"
        mavariable = "2"
    Case "Bouchet"
        mavariable = "3"
    Case "Bourdouze"
        mavariable = "4"
    Case "Cassière"
        mavariable = "5"
    Case "Chambon"
        mavariable = "6"
    Case "Issarlès"
        mavariable = "7"
    Case "Montcineyre"
        mavariable = "11"
    Case "Pavin"
        mavariable = "12"
    
    incre_lac = mavariable & "_"& "numéro de filet"
    
    End Function
    en fait chaque lac sont associés à des noms de filet.
    donc il faut que je donne un numéro de 1 à x pour chaque filet. Cette incrémentation doit être faite pour chaque lac.
    Le but final de la manip est de concaténer mavariable avec l'increment filet et obtenir une clé unique.

    Merci

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 175
    Points : 76
    Points
    76
    Par défaut
    Mon code a évolué et j'en suis là

    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
    Function incre_lac(monchamp As Integer)
     
    Dim mavariable As String
    Dim a, b, c, d, e, f, g, h As Integer
     
    Select Case monchamp
    Case "Aydat"
        mavariable = "1"
        a = a + 1
        incre_lac = mavariable & "_" & Str(a)
    Case "Bordes"
        mavariable = "2"
        b = b + 1
        incre_lac = mavariable & "_" & Str(b)
    Case "Bouchet"
        mavariable = "3"
        c = c + 1
        incre_lac = mavariable & "_" & Str(c)
    Case "Bourdouze"
        mavariable = "4"
        d = d + 1
        incre_lac = mavariable & "_" & Str(d)
    Case "Cassière"
        mavariable = "5"
        e = e + 1
        incre_lac = mavariable & "_" & Str(e)
    Case "Chambon"
        mavariable = "6"
        f = f + 1
        incre_lac = mavariable & "_" & Str(f)
    Case "Issarlès"
        mavariable = "7"
        g = g + 1
        incre_lac = mavariable & "_" & Str(g)
    Case "Montcineyre"
        mavariable = "11"
        h = h + 1
        incre_lac = mavariable & "_" & Str(h)
    Case "Pavin"
        mavariable = "12"
        i = i + 1
        incre_lac = mavariable & "_" & Str(i)
    End select
     
    End Function
    j'ai des erreurs dans toutes les cases de mon tableau #erreur
    je ne sais pas d'ou cela peut venir


    si quelqu'un a des idées
    merci d'avance

  5. #5
    Rédacteur/Modérateur
    Avatar de Jeannot45
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2004
    Messages
    3 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 871
    Points : 8 489
    Points
    8 489
    Par défaut
    Bonjour,

    tu déclares :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Function incre_lac(monchamp As Integer)
    puis dans ton Select tu compares monchamp à un nom de lac ????

    Access te dit Erreur et c'est normal

    Tu devrais déclarer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Function incre_lac(monchamp As String)
    Bonne continuation

    Jeannot

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 175
    Points : 76
    Points
    76
    Par défaut
    Merci beaucoup je n'avais pas vu cette erreur bête.
    Autre question qui n'a rien à voir, comment executer plusieurs fonctions les unes à la suite des autres sans qu'elles ne s'enclenchent en même temps?

    merci

  7. #7
    Rédacteur/Modérateur
    Avatar de Jeannot45
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2004
    Messages
    3 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 871
    Points : 8 489
    Points
    8 489
    Par défaut
    Je ne comprends pas trop ce que tu veux dire mais en mettant le nom des fonctions les uns après les autres, ils s'exécuteront en cascade.

    Pour que deux fonctions s'exécutent "en même temps", il faudrait qu'elles soient imbriquées

    Jeannot

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 175
    Points : 76
    Points
    76
    Par défaut
    en fait mon problème est que je doit mettre en place un incrément cappable d'ajouter une itération quand il détecte la présence d'une chaine de caractère dans un enregistrement.
    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
    Option Compare Database
     
    Function incre_lac(monchamp As String)
     
    Dim mavariable As String
    Dim a As Integer
    Dim b, c, d, e, f, g, h As Integer
    Dim num_enregi As Integer
     
    Select Case monchamp
    Case "Aydat"
        mavariable = "1"
        a = a + 1
        num_enregi = a
    Case "Bordes"
        mavariable = "2"
        b = b + 1
        num_enregi = b
    Case "Bouchet"
        mavariable = "3"
        c = c + 1
        num_enregi = c
    Case "Bourdouze"
        mavariable = "4"
        d = d + 1
        num_enregi = d
    Case "Cassière"
        mavariable = "5"
        e = e + 1
        num_enregi = e
    Case "Chambon"
        mavariable = "6"
        f = f + 1
        num_enregi = f
    Case "Issarlès"
        mavariable = "7"
        g = g + 1
        num_enregi = g
    Case "Montcineyre"
        mavariable = "11"
        h = h + 1
        num_enregi = h
    Case "Pavin"
        mavariable = "12"
        i = i + 1
        num_enregi = i
    End Select
     
    incre_lac = mavariable & "_" & Str(num_enregi)
    End Function
    j'ai fait ce code et je pensais que l'incrémentation intégrée dans la select case
    marcherait. Mais là encore la variable num_enregi a toujours la valeur 1

  9. #9
    Rédacteur/Modérateur
    Avatar de Jeannot45
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2004
    Messages
    3 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 871
    Points : 8 489
    Points
    8 489
    Par défaut
    C'est normal puisque les variables a,b,c ... sont intitialisées à chaque fois que tu relances la fonction. (donc remise à 0)

    Jeannot

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 175
    Points : 76
    Points
    76
    Par défaut
    Je vois.
    1- il faut que mes variables puissent persister.
    2- il faut qu'elles ne se réinitialisent qu'a chaque changement de nom de lac.

    En fait je pense savoir ce qu'il faut faire. il faudrait récupérer la valeur de la cellule précédente et baser l'incrément sur la valeur de cette cellule.

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 175
    Points : 76
    Points
    76
    Par défaut
    j'ai beau cherché, je ne trouve pas de réponse.
    Quelqu'un aurait une idée pour me faire avancer un peu?

    Merci d'avance

Discussions similaires

  1. [XL-2003] ListBox incrémentée en fonction d'une variable i
    Par maud.33500 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 11/07/2011, 07h45
  2. Problème de mise à jour d'une variable
    Par Claire07 dans le forum Access
    Réponses: 2
    Dernier message: 19/06/2006, 21h40
  3. [VB6] Image en fonction d'une variable?
    Par TomIG dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 25/03/2006, 01h22
  4. Réponses: 37
    Dernier message: 02/03/2006, 01h58
  5. Incrémenter le NOM d'une variable
    Par Mors_Ubyte dans le forum Access
    Réponses: 1
    Dernier message: 03/01/2006, 18h47

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