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 pour sortir d'une boucle [AC-2013]


Sujet :

VBA Access

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2014
    Messages : 46
    Points : 33
    Points
    33
    Par défaut problème pour sortir d'une boucle
    bonjour,
    j'ai une macro avec une boucle do sur une table qui parcours la table jusqu'à la fin
    j'ai mis un exit do quand la condition est remplie pour éviter de parcourir les enregistrement inutile
    mais maintenant il ne veut plus fermer la table ouverte

    qui peut me dire ou ça beug

    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
    92
    93
    94
    95
    96
    97
    Public Sub CreationNumeroAdh()
    'défini les variable
    Dim premierLettreNom As String, LettreNombreAdh As String, tranchelettreadh As String, TrancheAdh As String, lalettre As String, trancheannee As String
    Dim nomchercher As String, prenomchercher As String, promotionchercher As String, LettreADH As Boolean, NumeroAdh As String
    
    
    'déclaration de la variable table
    Dim tableouverte2 As New ADODB.Recordset
    
    'recuperation des valeurs saisies dans le formulaire
    nomchercher = Forms("rechercheAdherent").Controls("TxtNom").Value
    prenomchercher = Forms("rechercheAdherent").Controls("TxtPrenom").Value
    promotionchercher = Forms("rechercheAdherent").Controls("TxtPromotion").Value
    
    'isole la premiere lettre du nom pour construction numero adhérent
    
    premierLettreNom = Left(nomchercher, 1)
    
    'ouverture de la table et copie des champs
    tableouverte2.Open "creationNumeroAdh", CurrentProject.Connection, adOpenDynamic, adLockOptimistic
    'recherche dans la table
    Do
    
    'boucle dans la table sur le champ premier lettre nom et défini la variable
    lalettre = tableouverte2("PremiereLettreNomAdh")
    
    'comparaison avec la première lettre du nom et le champ enregistrement de la table
        If premierLettreNom = lalettre Then
    
        'si la lettre du nom correspond on récupere les valeurs des autres champs
        ' champ numérique correspondant à la premiere lettre nom
        LettreNombreAdh = tableouverte2("LettreNombreAdh")
        ' vérifie si le champ de la lettre tranche est remplie
        LettreADH = IsNull(tableouverte2("tranchelettreadh").Value)
            ' en fonction de la presence d'une lettr ou pas initialise le champ de la lettre tranche
            If LettreADH = True Then
            tranchelettreadh = ""
            Else
            'prend la valeur de la lettre si présente dans le champ
            tranchelettreadh = tableouverte2("tranchelettreadh")
            End If
        'recupere le compteur de tranche entre 001 et 999
        TrancheAdh = tableouverte2("TrancheAdh")
        'définie le format à trois chiffres surtout si  inférieur à 100
        TrancheAdh = Format(TrancheAdh, "000")
        'définie la partie année les deux dernier chiffre de l'année en cours
        trancheannee = str(Right(Year(Now), 2))
    
        ' construit le numéro du nouveaux adhérent
        NumeroAdh = trancheannee & "/" & tranchelettreadh & LettreNombreAdh & TrancheAdh
    
        MsgBox "Cet adhérent n'existe pas et aura comme numéro d'adhérent le " & trancheannee & "/" & tranchelettreadh & LettreNombreAdh & TrancheAdh
    
        ' met à jour la table pour le calcul du numero adhérent
        'ajout de 1 à la tranche chiffre
        TrancheAdh = TrancheAdh + 1
    
            'condition si la tranche dépasse 1000 remise à 001
            If TrancheAdh >= 1000 Then
            TrancheAdh = "001"
            tableouverte2("TrancheAdh").Value = TrancheAdh
            'incrémente le compteur de la lettre de tranche
        
                ' condition si la tranche lettre est vide
                If tranchelettreadh = "" Then
                tranchelettreadh = "A"
                'sinon prend le code ACSI de la lettre pour l'incrémenter
                Else
                tranchelettreadh = Asc(tranchelettreadh)
                tranchelettreadh = tranchelettreadh + 1
                 ' verifie si lettre correspond au H et le saute le cas échéant
                    If tranchelettreadh = 72 Then
                    tranchelettreadh = tranchelettreadh + 1
                    End If
                ' retransforme le code ACSI en lettre
                tranchelettreadh = Chr(tranchelettreadh)
                tableouverte2("tranchelettreadh").Value = tranchelettreadh
                End If
             ' si le compteur n'a pas atteint 1000, incremente juste le compteur
            Else
            TrancheAdh = Format(TrancheAdh, "000")
            tableouverte2("TrancheAdh").Value = TrancheAdh
           
            End If
       
     Exit Do                                                                               sorti de la boucle
        End If
    
    'passage au prochain enregistrement
    tableouverte2.MoveNext
    Loop While Not tableouverte2.EOF
    
    'la boucle est terminer on ferme de la table
    tableouverte2.Close                                                           arriver sur cette ligne erreur d'execution 3219 quand je ne met pas le exit  do cela fonctionne
    'libération de la mémoire
    Set tableouverte2 = Nothing
    End Sub
    merci d'avance

  2. #2
    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


    Et en reprenant la boucle comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Public Sub CreationNumeroAdh()
    ...
    'recherche dans la table
    Do While Not tableouverte2.EOF
    ...
    
    Loop
    ...
    End Sub
    Jeannot

    Liens Office indispensables à visiter: Cours (Tutos), F.A.Q., Sources VBA

    Ne posez pas de questions par MP, je n'ai pas le temps d'y répondre

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2014
    Messages : 46
    Points : 33
    Points
    33
    Par défaut
    bonsoir
    cela ne change pas le problème,
    au départ c'est ce que j'avais mis et avec un exit while mais pas reconnue !

    ma boucle marche correctement et quand je laisse le programme aller jusqu'au bout cela me ferme bien ma table ouverte2 sans soucis
    afin d'amélioré la macro, je voudrais mettre un exit lorsque la condition est rempli sans la laisser tester les autres cas
    ce n'est pas la peine de parcourir toutes la table de A jusqu'à Z si je trouve ma correspondance à la lettre C

    donc pourquoi dans ma macro lorsque je mets "exit do" cela plante et ne veut pas fermer ma table ouverte par ADO

    merci encore

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    Bonsoir,

    J'ai essayé de comprendre la logique (pas évident) à partir de ton explication et je pense qu'avec :

    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
    Public Sub CreationNumeroAdh()
    ......
    Do
        'boucle dans la table sur le champ premier lettre nom et défini la variable
        lalettre = tableouverte2("PremiereLettreNomAdh")
        'comparaison avec la première lettre du nom et le champ enregistrement de la table
        If premierLettreNom = lalettre Then
       .........
             Exit Do                                                                               'sorti de la boucle
        ELSE
              'passage au prochain enregistrement
              tableouverte2.MoveNext
        End If
    ......
     
    Loop While Not tableouverte2.EOF
     
    ........
    End Sub
    ça devrait sortir proprement.

    Cordialement,
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2014
    Messages : 46
    Points : 33
    Points
    33
    Par défaut
    merci pour ta réponse
    mais cela beug toujours j'ai toujours l'erreur 3219 lorsque je veux fermer la table après l'avoir quitter quand j'ai la condition de rempli

    quand je ne met pas le exit do cela marche parfaitement

    donc à priori je ne peux pas quitter la boucle
    en faite je fais une boucle sur un table de 26 enregistrements (une par lettre de l'alphabet) avec un compteur de tranche et un compteur
    quand je compare la premier lettre du nom avec mes enregistrement je récupère les champs de cet enregistrement pour créer mon numéro et je l'incrémente ensuite

    donc Simon nom commence par un C je voudrai quitter la boucle après avoir trouvé la correspondance
    voila en espérant être plus clair

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2014
    Messages : 46
    Points : 33
    Points
    33
    Par défaut
    bonjour
    pour vous aider a comprendre mon problème je vous mets un extrait de ma base
    en faite je veux sortir de ma boucle dés que j'ai trouvé ma correspondance, mais cela beug

    je m' y suis peut être aussi mal pris dans ma construction,

    merci de votre aide

    essai 1.7z

  7. #7
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    Bonjour,

    J'ai réfléchi à ton souci et effectivement on a un petit souci de logique. Ce qui est surprenant, c'est qu'avec DAO, ton code ne lève aucune erreur (avec EXIT DO).
    Est-ce que tu peux descendre la version de ta base joint à mdb, parce que je ne pourrai la lire que lundi sinon.
    En attendant, essaies de modifier le code en regroupant le DO...LOOP et ton premier IF avec un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Public Sub CreationNumeroAdh()
    ......
    lalettre = tableouverte2("PremiereLettreNomAdh")
    Do While premierLettreNom <> lalettre
        tableouverte2.MoveNext   
        lalettre = tableouverte2("PremiereLettreNomAdh")
    Loop
    'Et c'est ici que tu lances toutes tes opérations
    ........
    End Sub
    Normalement, la valeur recherchée existe dans la table de référence donc la condition sera vérifiée à un moment.

    Bonne continuation
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2014
    Messages : 46
    Points : 33
    Points
    33
    Par défaut
    bon merci à toi
    j'ai essayé de modifié comme tu le dis , mais j'ai pas tous compris
    surtout je mets ou m'a sortie de boucle
    je vais essayé de continuer

    pour redescendre la base impossible quand je la mets en format access 2003 cela ne prend pas en compte la requête et le formulaire (pas gérer)

    donc pas possible, maintenant étant loin d'avoir fini , je peux largement attendre la semaine prochaine

    merci encore à toi de bien vouloir prendre t temps pour me dépatouiller

    a plus

  9. #9
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    Re-,

    Donc, en détail, je propose ç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
    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
     
    Public Sub CreationNumeroAdh()'défini les variable
    Dim premierLettreNom As String, LettreNombreAdh As String, tranchelettreadh As String, TrancheAdh As String, lalettre As String, trancheannee As String
    Dim nomchercher As String, prenomchercher As String, promotionchercher As String, LettreADH As Boolean, NumeroAdh As String
    'déclaration de la variable table
    Dim tableouverte2 As New ADODB.Recordset
     
    'recuperation des valeurs saisies dans le formulaire
    nomchercher = Forms("rechercheAdherent").Controls("TxtNom").Value
    prenomchercher = Forms("rechercheAdherent").Controls("TxtPrenom").Value
    promotionchercher = Forms("rechercheAdherent").Controls("TxtPromotion").Value
     
    'isole la premiere lettre du nom pour construction numero adhérent
    premierLettreNom = Left(nomchercher, 1)
     
    'ouverture de la table et copie des champs
    tableouverte2.Open "creationNumeroAdh", CurrentProject.Connection, adOpenDynamic, adLockOptimistic
    'Attribue à lalettre la première valeur de PremiereLettreNomAdh
    lalettre = tableouverte2("PremiereLettreNomAdh")
     
    'Parcourir la table tant que premierLettreNom est différent de lalettre
    Do While Not premierLettreNom = lalettre
        'Si pas trouvé, aller à l'enregistrement suivant
        tableouverte2.MoveNext
     
        'Attribuer la nouvelle valeur de lalettre
        lalettre = tableouverte2("PremiereLettreNomAdh")
    Loop
    '!!!!Donc, normalement à la sortie de la boucle,
    '!!!!nous nous trouvons à l'enregistrement où premierLettreNom = lalettre
    'Là on lance tout le tralala
     
    'si la lettre du nom correspond on récupere les valeurs des autres champs
    ' champ numérique correspondant à la premiere lettre nom
    LettreNombreAdh = tableouverte2("LettreNombreAdh")
    ' vérifie si le champ de la lettre tranche est remplie
    LettreADH = IsNull(tableouverte2("tranchelettreadh").Value)
        ' en fonction de la presence d'une lettr ou pas initialise le champ de la lettre tranche
    If LettreADH = True Then
        tranchelettreadh = ""
    Else
        'prend la valeur de la lettre si présente dans le champ
        tranchelettreadh = tableouverte2("tranchelettreadh")
    End If
    'recupere le compteur de tranche entre 001 et 999
    TrancheAdh = tableouverte2("TrancheAdh")
    'définie le format à trois chiffres surtout si  inférieur à 100
    TrancheAdh = Format(TrancheAdh, "000")
    'définie la partie année les deux dernier chiffre de l'année en cours
    trancheannee = Str(Right(Year(Now), 2))
     
    ' construit le numéro du nouveaux adhérent
    NumeroAdh = trancheannee & "/" & tranchelettreadh & LettreNombreAdh & TrancheAdh
     
    MsgBox "Cet adhérent n'existe pas et aura comme numéro d'adhérent le " & trancheannee & "/" & tranchelettreadh & LettreNombreAdh & TrancheAdh
     
    ' met à jour la table pour le calcul du numero adhérent
    'ajout de 1 à la tranche chiffre
    TrancheAdh = TrancheAdh + 1
     
    'condition si la tranche dépasse 1000 remise à 001
    If TrancheAdh >= 1000 Then
        TrancheAdh = "001"
        tableouverte2("TrancheAdh").Value = TrancheAdh
        'incrémente le compteur de la lettre de tranche
     
        ' condition si la tranche lettre est vide
        If tranchelettreadh = "" Then
            tranchelettreadh = "A"
            'sinon prend le code ACSI de la lettre pour l'incrémenter
        Else
            tranchelettreadh = Asc(tranchelettreadh)
            tranchelettreadh = tranchelettreadh + 1
        ' verifie si lettre correspond au H et le saute le cas échéant
            If tranchelettreadh = 72 Then
                tranchelettreadh = tranchelettreadh + 1
            End If
            ' retransforme le code ACSI en lettre
            tranchelettreadh = Chr(tranchelettreadh)
            tableouverte2("tranchelettreadh").Value = tranchelettreadh
        End If
         ' si le compteur n'a pas atteint 1000, incremente juste le compteur
    Else
        TrancheAdh = Format(TrancheAdh, "000")
        tableouverte2("TrancheAdh").Value = TrancheAdh
    End If
    tableouverte2.Close    'On ferme la table
    'libération de la mémoire
    Set tableouverte2 = Nothing
    End Sub
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2014
    Messages : 46
    Points : 33
    Points
    33
    Par défaut
    bonsoir,
    j'ai recopié texto ta formules dans mon exemple
    et malheureusement j'ai toujours l’erreur 3219 l'opération demandée n'est pas autorisée dans ce contexte

    lorsque l'on arrive sur cette ligne
    tableouverte2.Close 'On ferme la table

    donc je ne sais pas si c'est possible de déchargé la table ADO et de la vider

    encore merci

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2014
    Messages : 46
    Points : 33
    Points
    33
    Par défaut
    bonsoir,

    Personne n'as une idée ou cela peut coincé voir mon fichier en pièce jointe pour mieux comprendre essai 1.7z

    si je ne fais pas de exit do cela marche ,par contre dés que je mets une sortie de boucle cela ne veut plus fermer et déchargé la table créer avec ADO

    allez comprendre pourquoi

    merci à vous

  12. #12
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    Bonsoir,

    Est-ce que t'es obligé d'utiliser ADO ? En fait, je n'en suis pas spécialiste donc je ne peux t'aider plus, sauf que j'ai testé ton code et je me suis aperçu que ce sont les lignes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        tableouverte2("TrancheAdh").Value = TrancheAdh
    combinées à EXIT DO qui lève l'erreur.
    Maintenant, je n'ai pas eu le temps d'approfondir mes connaissances sur ADO, comment se font les ouvertures des recordset et l'attribution de valeurs à un champ en ADO. Je pense que c'est là-dessus qu'il faut approfondir la question.
    Je regarde dès que j'aurai plus de temps.

    Avec DAO je te dis, pas de problème. Le code fonctionne impec.

    A+
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  13. #13
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2014
    Messages : 46
    Points : 33
    Points
    33
    Par défaut
    bonsoir,
    non je ne suis pas obliger de travailler avec ADO, mais comme je ne connait pas ni ADO ni DAO en furetant sur les forums j'ai lu que valait mieux programmer en ADO qui serait l'avenir !

    si tu as une autre solutions je suis également preneur peut être (et surement je me complique la vie tous seul)
    le but étant ici de construire un nouveaux numéro d'adhérent (et la pas le choix sur la construction c'est imposé)
    don les deux premiers chiffres sont les dizaines de l'année en cours après un flash / une lettre qui correspond à une tranche de compteur deux chiffres qui correspond à la valeur de la première lettre du nom ( et pour faire simple A ne vaut pas 1 et un compteur à trois chiffre
    donc j'ai fait une table ou j'ai renseigné mes compteurs (comme c'est une base déjà existante on ne démarre pas à zéro)
    après je fais une recherche avec la première lettre du nom et je la compare avec la colonne de la table ( c'est ici que j'ai initialisé dans ma macro VBA l'ouverture de la table avec ADO)
    quand la comparaison est trouvé je récupère les autres champs pour construire le numéro et je fais avancé le compteur de l'enregistrement désiré

    et je voulais quitter la boucle dés que la condition est rempli

    donc si plus simple je suis preneur

    encore merci à toi
    de me faire progresser

  14. #14
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    Bonjour,

    Bon à priori j'ai trouvé et c'est sur la ligne que j'ai indiqué et le recordset ne se mettait pas à jour correctement et ne pouvait pas être fermé.
    Il faut rajouter un UpDate après :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        tableouverte2("TrancheAdh").Value = TrancheAdh
        tableouverte2("TrancheAdh").UpDate
    Bonne continuation
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  15. #15
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2014
    Messages : 46
    Points : 33
    Points
    33
    Par défaut
    merci pour ton dévouement

    malheureusement cela ne fonctionne pas

    .UPDATE n'est pas reconnue comme argument lorsque je lance j'ai un mesgbox qui s'affiche avec
    "Erreur de compilation, membres de méthode ou données introuvable"

    de plus lorsque je place un point derrière "tableouverte2("TrancheAdh")." le update n'est pas proposé

    il doit me manquer des arguments ou ma syntaxe n'est pas bonne je continue de chercher

    merci

  16. #16
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2014
    Messages : 46
    Points : 33
    Points
    33
    Par défaut
    c'est bon j'ai trouvé l'erreur de syntaxe

    il fallait juste mettre

    tableouverte2.update

    au lieu de tableouverte2("TrancheAdh").UpDate


    encore merci pour ton dévouement

    allez je continu d'avancer

    Ah cette foutue syntaxe

  17. #17
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    Re-Bonjour,

    Désolé, je n'ai pas vérifié correctement. C'est le RecordSet qu'il faut mettre à jour et non le champ.
    C'est bien si t'as trouvé.

    Bonne continuation
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

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

Discussions similaires

  1. Bouton pour sortir d'une boucle
    Par Upsiløn dans le forum EDT/SwingWorker
    Réponses: 3
    Dernier message: 14/09/2014, 12h12
  2. Réponses: 2
    Dernier message: 23/03/2013, 00h42
  3. Problème pour sortir une ligne d'une table
    Par atapi dans le forum SQL
    Réponses: 2
    Dernier message: 03/06/2010, 13h43
  4. sortir d'une boucle et reprendre pour la ligne suivante
    Par gueridonbis dans le forum PL/SQL
    Réponses: 4
    Dernier message: 21/07/2009, 22h06
  5. Probleme pour sortir d'une boucle while
    Par aikinhdo dans le forum Langage
    Réponses: 0
    Dernier message: 27/07/2007, 15h01

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