Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

CRÉATION ASSISTÉE PAR CODE DAO D’UNE TABLE DANS MS ACCESS – NOMBRE ET TYPE DE CHAMPS SELON LES BESOINS.


Information sur la source

Catégorie :VBA Classé sous : access, dao, tabledef, fields, vba Niveau : Initié Date de création : 20/07/2007 Vu / téléchargé: 5 532 / 566

Note :
Aucune note

Commentaire sur cette source (0)
Ajouter un commentaire et/ou une note


Description

Voici 2 fonctions pour créer une nouvelle table dans MS Access par code DAO et vérifier s’il n’existe pas déjà dans la base de données une table du même nom.

Voici les étapes de la fonction Creer_Toute_Table :

o vérifie si la table existe déjà et, si elle existe, que l’usager est d’accord pour la remplacer sinon on sort de la fontion
o demande le nom du champ à créer et si aucun nom n’est fournit, on sort de la fonction
o demande le type de champs (choix de 12 types) et sort de la fonction si l’usager annule cette étape
o crée le champ et l’ajoute à la collection Fields
o vérifie si l’usager désire ajouter un autre champ et recommence si oui  et, si non, ajoute la table à la collection TableDefs et termine.
  
L’appel de la fonction se fait ainsi;

Call Creer_Toute_Table(strNomTable:="MaNouvelleTable")

 

Source

  • Option Explicit
  • Sub Test_Creer_Toute_Table()
  • Call Creer_Toute_Table(strNomTable:="MaNouvelleTable")
  • End Sub
  • ' Crée une table avec un nombre divers de champs
  • Function Creer_Toute_Table(strNomTable As String) As Boolean
  • On Error GoTo TrappeErreur
  • Dim strNomChamp As String
  • Dim intTypeChamp As Integer
  • Dim tblNouvelleTable As DAO.TableDef
  • Dim fldNouveauChamp As DAO.Field
  • With CurrentDb
  • ' Vérifie si une table du même nom existe déjà
  • If VerifierExistenceTable(strNomTable:=strNomTable) = True Then
  • If MsgBox(Prompt:="Une table nommée " & vbCrLf & _
  • strNomTable & vbCrLf & _
  • "existe déjà. Désirez-vous continuer et remplacer celle-ci ?", _
  • Buttons:=vbCritical + vbYesNo, _
  • Title:="Table existe déjà") = vbNo Then
  • GoTo ExitHere
  • Else
  • ' Supprime la table existante
  • DoCmd.DeleteObject ObjectType:=acTable, _
  • ObjectName:=strNomTable
  • End If
  • End If
  • ' Crée la table
  • Set tblNouvelleTable = .CreateTableDef(strNomTable)
  • Definir_Champ:
  • With tblNouvelleTable
  • strNomChamp = InputBox(Prompt:="Nom du champ", _
  • Title:="Saisir")
  • ' Sort de la fonction s'il aucun nom n'a été fournit
  • If strNomChamp = vbNullString Then
  • GoTo ExitHere
  • End If
  • On Error Resume Next
  • intTypeChamp = InputBox(Prompt:="Nombre correspondant au type de champ;" & vbCrLf & _
  • " Booléen = 1" & vbCrLf & _
  • " Octet = 2" & vbCrLf & _
  • " Entier = 3" & vbCrLf & _
  • " Long = 4" & vbCrLf & _
  • " Monétaire = 5" & vbCrLf & _
  • " Réel simple = 6" & vbCrLf & _
  • " Réel double = 7" & vbCrLf & _
  • " Date / heure = 8" & vbCrLf & _
  • " Binaire = 9" & vbCrLf & _
  • " Texte = 10" & vbCrLf & _
  • " Objet Ole = 11" & vbCrLf & _
  • " Mémo = 12", _
  • Title:="Type de champ", _
  • Default:=10)
  • ' Sort de la fonction si l'inputBox a été annulée
  • If Err.Number = 13 Then
  • GoTo ExitHere
  • End If
  • ' Crée le champ
  • Set fldNouveauChamp = .CreateField(Name:=strNomChamp, _
  • Type:=intTypeChamp)
  • ' Ajoute le champ à la collection Fields
  • .Fields.Append fldNouveauChamp
  • End With
  • ' Vérifie si l'usager désire ajouter un autre champ
  • If MsgBox(Prompt:="Désirez-vous ajouter un autre champ ?", _
  • Buttons:=vbQuestion + vbYesNo, _
  • Title:="Nouveau champ") = vbYes Then
  • GoTo Definir_Champ
  • End If
  • ' Ajoute la table à la collection TableDefs
  • .TableDefs.Append tblNouvelleTable
  • End With
  • Sortie:
  • Set fldNouveauChamp = Nothing
  • Set tblNouvelleTable = Nothing
  • Exit Function
  • TrappeErreur:
  • MsgBox Err.Description
  • Resume Sortie
  • End Function
  • ' Verifie si une table existe dans la base de données courante
  • Function VerifierExistenceTable(strNomTable As String) As Boolean
  • Dim tblTable As DAO.TableDef
  • VerifierExistenceTable = False
  • For Each tblTable In CurrentDb.TableDefs
  • If tblTable.Name = strNomTable Then
  • VerifierExistenceTable = True
  • Exit For
  • End If
  • Next
  • End Function
Option Explicit
        
Sub Test_Creer_Toute_Table()
        Call Creer_Toute_Table(strNomTable:="MaNouvelleTable")
End Sub

        ' Crée une table avec un nombre divers de champs
Function Creer_Toute_Table(strNomTable As String) As Boolean
        On Error GoTo TrappeErreur
        Dim strNomChamp As String
        Dim intTypeChamp As Integer
        Dim tblNouvelleTable As DAO.TableDef
        Dim fldNouveauChamp As DAO.Field
                        
        With CurrentDb
                        ' Vérifie si une table du même nom existe déjà
                If VerifierExistenceTable(strNomTable:=strNomTable) = True Then
                        If MsgBox(Prompt:="Une table nommée " & vbCrLf & _
                                                           strNomTable & vbCrLf & _
                                                           "existe déjà. Désirez-vous continuer et remplacer celle-ci ?", _
                                           Buttons:=vbCritical + vbYesNo, _
                                           Title:="Table existe déjà") = vbNo Then
                                GoTo ExitHere
                        Else
                                        ' Supprime la table existante
                                DoCmd.DeleteObject ObjectType:=acTable, _
                                                                	  ObjectName:=strNomTable
                        End If
                End If
                        ' Crée la table
                Set tblNouvelleTable = .CreateTableDef(strNomTable)
Definir_Champ:
                With tblNouvelleTable
                        strNomChamp = InputBox(Prompt:="Nom du champ", _
                                                                   Title:="Saisir")
                                ' Sort de la fonction s'il  aucun nom n'a été fournit
                        If strNomChamp = vbNullString Then
                                GoTo ExitHere
                        End If
                        On Error Resume Next
            intTypeChamp = InputBox(Prompt:="Nombre correspondant au type de champ;" &  vbCrLf & _
                                                                                  " Booléen       =    1" & vbCrLf & _
                                                                                  " Octet            =    2" & vbCrLf & _
                                                                                  " Entier            =    3" & vbCrLf & _
                                                                                  " Long            =    4" & vbCrLf & _
                                                                                  " Monétaire     =    5" & vbCrLf & _
                                                                                  " Réel simple  =    6" & vbCrLf & _
                                                                                  " Réel double  =    7" & vbCrLf & _
                                                                                  " Date / heure =    8" & vbCrLf & _
                                                                                  " Binaire         =    9" & vbCrLf & _
                                                                                  " Texte            =  10" & vbCrLf & _
                                                                                  " Objet Ole   =  11" & vbCrLf & _
                                                                                  " Mémo           =  12", _
                                                                  Title:="Type de champ", _
                                                                  Default:=10)
                                ' Sort de la fonction si l'inputBox a été annulée
                        If Err.Number = 13 Then
                                GoTo ExitHere
                        End If
                                ' Crée le champ
                        Set fldNouveauChamp = .CreateField(Name:=strNomChamp, _
                                                                                     Type:=intTypeChamp)
                                ' Ajoute le champ à la collection Fields
                        .Fields.Append fldNouveauChamp
                End With
                                ' Vérifie si l'usager désire ajouter un autre champ
                        If MsgBox(Prompt:="Désirez-vous ajouter un autre champ ?", _
                                           Buttons:=vbQuestion + vbYesNo, _
                                           Title:="Nouveau champ") = vbYes Then
                                GoTo Definir_Champ
                        End If
                        ' Ajoute la table à la collection TableDefs
                .TableDefs.Append tblNouvelleTable
        End With
Sortie:
        Set fldNouveauChamp = Nothing
        Set tblNouvelleTable = Nothing
        Exit Function
TrappeErreur:
        MsgBox Err.Description
        Resume Sortie
End Function
    
        ' Verifie si une table existe dans la base de données courante
Function VerifierExistenceTable(strNomTable As String) As Boolean
        Dim tblTable As DAO.TableDef
        
        VerifierExistenceTable = False
        For Each tblTable In CurrentDb.TableDefs
                If tblTable.Name = strNomTable Then
                        VerifierExistenceTable = True
                        Exit For
                End If
        Next
End Function

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  • Creation_Table.mdbTélécharger ce fichier [Réservé aux membres club]147 456 octets

Télécharger le zip

Commentaires et avis

Aucun commentaire pour le moment.

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

[ACCESS VBA] DEFINIR LES PROPRIETES des champs suivants EN CODE VBA ACCESS [ par jasmin_sauvage ] Bonsoir &#224; tous,J'ai un probl&#232;me tr&#232;s urgent :Je veux cr&#233;er une table (Matable) dans laquelle il y a plusieurs champs (Heure,NGH, T Piloter Access avec Excel VBA [ par vousvous ] Salut,j'aimerais savoir comment on fait pour piloter Access depuis Excel VBA. J'aimerais, &#224; partir d'Excel VBA, cr&#233;er des tables dans une DB VBA Access [ par mad_kad ] Qui s'aurai comment on peut transferer une listview contenant des données vers excel.Merci d'avance. vba_access [ par sam_12_3 ] boujour&nbsp; tout le monde, enfet je voudrais juste savoir si on pouvait faire du vba sous access? parceque j'aimerais bien en faire. voila, merci<im VBA [ par belineo ] Je veux modifier une requete Access dans une proc&#233;dure VBA. Le code que j'utilisais au temps de la pr&#233;histoire (Access V2) ne fonctionne plu ACCESS/VBA/ORACLE [ par mquarre ] Bonjour. comment faire pour récupérer le nbr de mise à jour faite par une requête ACCESS d'une base ORACLE (liée par ODBC à la base ACCES) dans le co code pour les cases a cocher (vba access) [ par said960 ] comment faire pour les case a cocher en vba (access) mot de passe pour vba access 2000 [ par alihow84 ] s.v.p est ce que c'est possible de r&#233;cup&#233;rer le mot de passe vba&nbsp; d'une application access 2000 oubli&#233; j'ai besoin d'un code sourc Export Access vers Excel en VBA [ par PtitGrumo ] Bonjour tousJ'exporte des donn&#233;es Access vers un fichier Excel. Jusque l&#224; rien d'estraordinaire.J'affiche ligne par ligne tous mes r&#233;su calcul de total un champ access en vb4 ouv vba [ par mags21000 ] mon bd access et bd1&nbsp;&nbsp;&nbsp; &nbsp;table1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trois champ.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;so


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,437 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.