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 :

Garder des données après fermeture de formulaire -> Table temporaire


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif Avatar de Kihmé Xs
    Inscrit en
    Janvier 2007
    Messages
    549
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Janvier 2007
    Messages : 549
    Par défaut Garder des données après fermeture de formulaire -> Table temporaire
    bonjour à tous

    Lors de l'exécution de mon code j'ai un petit message d'erreure :
    "erreure d'éxécution 91
    variable objet ou variable de bloc with non définie"

    J'ai regardé les postes traitant ce genre d'érreure, pas de chance pour moi cette erreure survient pour différent types de problèmes qui peuvent être bien différent les uns les autres, du moin d'après ce que j'ai compris.

    Contexte :

    Je stock dans des variables les valeures de liste déroulantes, de bouton "coche" et de bouton "option" lors de la fermeture du formulaire (ouverture d'un suivant en meme temps) afin de pouvoir les réutiliser sur le formulaire suivant ayant remarqué que une fois le premier fermé je ne peux récupère que des valeures nulles si je les appelles diréctement sur le second.

    A ma connaissance et c'est ce qui m'intérroge le plus, je n'ai pas de variable objet et je n'utilise pas de bloc with, donc de là ça part mal pour le debbugage. Je veux pas trop m'avancer mais à force de lire et de relire mon code je ne pense pas qu'il s'agisse d'une erreure d'algorithmes, je penche plus sur une erreure de syntaxe, j'arrive pas à trouver laquelle par contre.

    La ligne en rouge est celle qui est indiquée comme portant l'erreure d'après VBA. Merci d'avance pour toute aide qui me serait apportée.

    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
    Type document
            code_document As Integer
            nom_document As String
        End Type
    
     Private Sub b_p_envoi_new_suite_Click()
        Dim n As Integer
        Dim t As Integer
        Dim option_salle As Integer
        Dim option_mairie As Integer
        Dim option_agence As Integer
        Dim option_centre_commerciaux As Integer
        Dim option_comite_entreprise As Integer
        Dim option_divers As Integer
        Dim document As document
            
        n = Forms![envoi_new]![liste_document_select].ListCount
        For t = 1 To n
            document(t).code_document = Forms![envoi_new]![liste_document_select].Column(t - 1, 0)
            document(t).nom_document = Forms![envoi_new]![liste_document_select].Column(t - 1, 1)
        Next t
        
        option_salle = Forms![envoi_new]![option_salle]
        option_mairie = Forms![envoi_new]![option_mairie]
        option_agence = Forms![envoi_new]![option_agence]
        option_centre_commerciaux = Forms![envoi_new]![option_centre_commerciaux]
        option_comite_entreprise = Forms![envoi_new]![option_comite_entreprise]
        option_divers = Forms![envoi_new]![option_divers]
        
        For t = 1 To n
            MsgBox (document(t).code_document)
            MsgBox (document(t).code_document)
        Next t
        MsgBox (option_salle)
        MsgBox (option_mairie)
        MsgBox (option_agence)
        MsgBox (option_centre_commerciaux)
        MsgBox (option_comite_entreprise)
        MsgBox (option_divers)
    
    DoCmd.Close acForm, "envoi_new"
    On Error GoTo Err_b_p_envoi_new_suite_Click
    
        Dim stdocname As String
        Dim stlinkcriteria As String
    
        stdocname = "envoi_new_suite"
        DoCmd.OpenForm stdocname, , , stlinkcriteria
    
    Exit_b_p_envoi_new_suite_Click:
        Exit Sub
    
    Err_b_p_envoi_new_suite_Click:
        MsgBox Err.Description
        Resume Exit_b_p_envoi_new_suite_Click
        
    End Sub

  2. #2
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 28
    Par défaut
    Cela doit venir de la manière dont tu déclare la variable document

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Dim document As document
    Mais pour faire ta fonction ne peux-tu pas créer une table temporaire ?
    1. Avant de fermer le premier formulaire, tu stockes tes données dans "TableTemp" que tu créé pour l'occasion

    1. Tu ouvres ton second formulaire avec les données de la "TableTemp"

    1. Tu supprimes la "TableTemp"

  3. #3
    Membre très actif Avatar de Kihmé Xs
    Inscrit en
    Janvier 2007
    Messages
    549
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Janvier 2007
    Messages : 549
    Par défaut
    J'ai un cour de VBA fournit par un de mes professeurs de prog où les variables de type sont déclarées comme ceci donc je sais pas trop. Je vais essayer quelques trucs puis si je ne m'en sort pas je crérait une table temporaire qui me semble une très bonne idée, je n'y avait pas du tout pensé.

    Merci bien Ataturk

  4. #4
    Membre très actif Avatar de Kihmé Xs
    Inscrit en
    Janvier 2007
    Messages
    549
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Janvier 2007
    Messages : 549
    Par défaut
    en fait je ne peux pas utiliser une table temporaire car le nombre de ligne dans mes zones de listes ne sera pas définissable avant qu'elles soient remplies par l'utilisateur...

    Faut que je réussisse mon petit bidouillage, donc pour l'aide je suis toujours demandeur, merci bien

  5. #5
    Membre très actif Avatar de Kihmé Xs
    Inscrit en
    Janvier 2007
    Messages
    549
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Janvier 2007
    Messages : 549
    Par défaut
    quelqu'un aurait un exemple d'une création de table temporaire s'il vous plait? J'ai trouvé des exemples qui disent d'en créer avec par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    dim Newtabl as TableDef
    Set Newtabl = currentDb.createtabledef("nom table")
    current db.tabledef.append Newtabl
    mais j'aurais besoin d'un exemple précis surtout pour la création des champs afin de savoir comment leur donner le bon type pour les données qu'ils receuilleront.

  6. #6
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 28
    Par défaut
    Dans ton formulaire, les données de la liste proviennent d'où (Table, requête,...) ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Forms![envoi_new]![liste_document_select]
    Si c'est une table : la table temp est une copie de celle-ci (Donc les champs sont identiques) que tu remplis ou vide au besoin.

    Si c'est une requête : Modifie la pour une de type "Création de table"

    Je vois pas bien ce que tu veux faire...
    Serait-il possible d'avoir un "screenshot" du formulaire premier ?

Discussions similaires

  1. Réponses: 2
    Dernier message: 31/03/2015, 11h53
  2. Réponses: 2
    Dernier message: 27/05/2008, 16h28
  3. non sauvegarde des données à la fermeture d'un formulaire
    Par zanou666 dans le forum VBA Access
    Réponses: 2
    Dernier message: 09/10/2007, 14h20
  4. Réponses: 29
    Dernier message: 01/07/2006, 09h23
  5. Réponses: 5
    Dernier message: 27/12/2004, 00h38

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