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

Access Discussion :

Suppression des formulaires d'une autre base de donnée


Sujet :

Access

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2006
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 20
    Points : 10
    Points
    10
    Par défaut Suppression des formulaires d'une autre base de donnée
    Bonjour,

    Je veux sauvegarder des formulaires dans une autre base de donnée sous Access 2000. Pour ce faire, j'utilise ce code qui fonctionne pour les requête et état contenu dans la base "programme" en les exportant dans la base "donnée" (deux fichiers distincts).

    Le formualire d'export possède une liste avec une colonne nom et une autre type (formulaire,état,requête)


    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
     
     
    Dim src_form, name_form As String
    Dim i, j As Integer
     
    Dim objAccess As Access.Application
    Set objAccess = New Access.Application
     
     
        i = 0
        Do Until i = Me.Liste0.ItemsSelected.Count
        Dim database As String
        name_form = Me.Liste0.Column(0, Me.Liste0.ItemsSelected(i))
     
        Dim obj As AccessObject
        Dim temp As String
        If Me.Liste0.Column(1, Me.Liste0.ItemsSelected(i)) = "Formulaire" Then
            temp = ""
            Set objAccess = New Access.Application
            With objAccess
            .OpenCurrentDatabase path, False
            End With
            For Each obj In objAccess.Application.CurrentProject.AllForms
                If obj.name = name_form Then
                temp = name_form
                End If
            Next obj
            If Not temp = "" Then
              objAccess.Application.DoCmd.DeleteObject acForm, temp
            End If
            objAccess.Quit
            Set objAccess = Nothing
            DoCmd.TransferDatabase acExport, "Microsoft Access", path, acForm, name_form, name_form
     
        Else
            If Me.Liste0.Column(1, Me.Liste0.ItemsSelected(i)) = "Etat" Then
            temp = ""
            Set objAccess = New Access.Application
            With objAccess
            .OpenCurrentDatabase getFullDbPath, False
           End With
            For Each obj In objAccess.Application.CurrentProject.AllReports
                If obj.name = name_form Then
                temp = name_form
                End If
            Next obj
            If Not temp = "" Then
              objAccess.Application.DoCmd.DeleteObject acDefault, temp
            End If
            objAccess.Quit
            Set objAccess = Nothing
            DoCmd.TransferDatabase acExport, "Microsoft Access", path, acReport, name_form, name_form
     
            Else
            temp = ""
            Set objAccess = New Access.Application
            With objAccess
            .OpenCurrentDatabase getFullDbPath, False
           End With
            For Each obj In objAccess.Application.CurrentData.AllQueries
                If obj.name = name_form Then
                temp = name_form
                End If
            Next obj
            If Not temp = "" Then
              objAccess.Application.DoCmd.DeleteObject acQuery, temp
            End If
            objAccess.Quit
            Set objAccess = Nothing
            DoCmd.TransferDatabase acExport, "Microsoft Access", path, acQuery, name_form, name_form
            End If
        End If
     
        i = i + 1
        Loop
     
     
     
        MsgBox "Exportation réussie", vbOKOnly
     
        Exit Sub

    Pour éviter qu'access ne renomme les formulaires , je supprime avant le transfert le formulaire de meme nom que celui que je vais exporter. Le problème est que les formulaires ont le code visual basic lié, celui-ci pose problème puisque la commande docmd.deleteObject ne supprimer pas les vba lié. Ainsi je me retrouve avec des code vba sans formulaire ce qui donne des erreurs et empeche de sauvegarder un formulaire de même nom.

    Y'a t-il une autre manière de supprimer? Comment puis-je m'en sortir?

  2. #2
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Bonjour,

    Je ne l'ai jamais fait, mais j'essaierais de supprimer aussi les modules, auxquels tu peux accéder par la propriété module des formulaires. C'est juste une idée.

    pgz
    pluritas non est ponenda sine necessitate - Le rasoir d'Okham
    Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2006
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 20
    Points : 10
    Points
    10
    Par défaut
    Le problème c'est que ce ne sont pas des modules mais bien les codes des formulaires. Access devrait normalement supprimer ces codes lorsque l'on supprime les formulaire

  4. #4
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Ce sont des modules de classe. Donc des modules. Donc on peut les suprimer, je pense.

    pgz
    pluritas non est ponenda sine necessitate - Le rasoir d'Okham
    Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon

  5. #5
    Membre à l'essai
    Inscrit en
    Avril 2006
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 20
    Points : 10
    Points
    10
    Par défaut
    Lorsque j'execute ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    objAccess.Application.DoCmd.DeleteObject acModule, temp
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    objAccess.Application.DoCmd.DeleteObject acModule, "Form_" & temp
    Il me mets un message d'erreur "Impossible de trouver l'objet"

  6. #6
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 524
    Points
    14 524
    Par défaut
    slt,

    il n'est pas normal que tu te retrouves avec le module de classe du formulaire tout seul
    la suppression du formulaire doit supprimer le module qui lui est attaché

    est-ce que ça fait ça sur tous les formulaires, ou est-ce un formulaire particulier qui plante?
    et si tu testes une suppression manuelle de ce formulaire, est ce que son module est supprimé aussi?
    si ce n'est pas le cas c'est peut-être juste un formulaire vérolé...

  7. #7
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Tu le sais comment que ton module de classe n'a pas été supprimé?

    pgz
    pluritas non est ponenda sine necessitate - Le rasoir d'Okham
    Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon

  8. #8
    Membre à l'essai
    Inscrit en
    Avril 2006
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 20
    Points : 10
    Points
    10
    Par défaut
    Quand je les supprime a la main il n'y a pas de problème. Idem quand j'execute ce code depuis la base de donnée receveuse. Je sais qu'ils ne sont pas supprimé car quand j'ouvre vba alor que j'ai supprimé les formulaires depuis l'autre base de données (programme), je les voit dans l'explorateur de projets daans vba.

  9. #9
    Membre à l'essai
    Inscrit en
    Avril 2006
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 20
    Points : 10
    Points
    10
    Par défaut
    Je viens de revérifier, quand je supprime manuellement dans la base, il laisse quand meme les modules. Cela doit donc venir du code TransferDatabase. Pourtant les formulaires est transféré mais pas correctement. N'y a til pas un problème avec l'ouverture de la base avant le transfert ?

Discussions similaires

  1. Réponses: 6
    Dernier message: 03/02/2013, 23h23
  2. Réponses: 8
    Dernier message: 10/04/2009, 09h57
  3. Lister les formulaires d'une autre base de données
    Par beaucy dans le forum VBA Access
    Réponses: 3
    Dernier message: 23/09/2007, 09h43
  4. Réponses: 5
    Dernier message: 13/08/2007, 16h48
  5. Ouverture formulaire d'une autre base de données
    Par aba_tarn dans le forum VBA Access
    Réponses: 2
    Dernier message: 26/07/2007, 08h43

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