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

Macros et VBA Excel Discussion :

ODBC driver Excel et ajout d'un champ dans la base


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Avatar de tamtam64
    Homme Profil pro
    stagiaire developpement vba
    Inscrit en
    Mai 2012
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : stagiaire developpement vba
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2012
    Messages : 456
    Billets dans le blog
    17
    Par défaut ODBC driver Excel et ajout d'un champ dans la base
    Bonjour,

    Je souhaiterais savoir si l'ajout d'un champ dans une table avec le driver Excel ODB peut effectivement se faire par un CREATE TABLE.

    En effet, je suis obligé de construire une base de données sur Excel et non Access, je construit donc une base dans un classeur Excel. J'ai besoin de rajouter chaque mois une colonne avec un nouveau champs.

    Pour cela je voulais utiliser "Alter TABLE" mais il semblerait que ca ne fonctionne pas, sur un forum , l'un des utilisateur propose d'utiliser CREATE TABLE
    https://stackoverflow.com/questions/...cel-with-oledb

    le probleme c'est que moi ca ne fonctionne pas
    Nom : Capture2.PNG
Affichages : 518
Taille : 21,0 Ko

    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
    Sub Add_DARonDB(ByRef MyDar As Date)
        Dim strr As String, tablo(), i As Long
        Dim rct As New ADODB.Recordset, MyVal
        Dim MyBase As String, MyStr As String
        Dim MyField
     
        'Recuperation des champs de la table
        MyBase = "Base_Donnee"
        strr = "SELECT * FROM [" & MyBase & "$]"
        rct.Open strr, MyConnection, adOpenDynamic, adLockPessimistic
     
        'nb colonnes
        Nb_Champs = rct.Fields.Count
     
        For Each MyField In rct.Fields
            If MyField.Name = MyDar Then Exit Sub
            If i < 8 Then
                MyVal = "[" & MyField.Name & "] char"
            ElseIf i = 8 Then MyVal = "[" & MyDar & "] float, [" & MyField.Name & "] float"
            Else
                MyVal = "[" & MyField.Name & "] float"
            End If
            ReDim Preserve tablo(i)
            tablo(i) = MyVal
            i = i + 1
        Next MyField
     
        'Jointure
        MyStr = Join(tablo, ", "): Set rct = Nothing
        'Ajout colonne
        MyStr = "CREATE TABLE [Base_Donnee$] (" & MyStr & ")"
        rct.Open MyStr, MyConnection, adOpenDynamic, adLockPessimistic
     
        'sup objet
        Set rct = Nothing
     
    End Sub
    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
    'Action de connection
    Sub ConnectMe()
        Dim d As Date
     
            'Test si on est connecté
        If IamConnected() Then Exit Sub
     
            'Connecter
        Set MyRealConnection = New ADODB.Connection
     
        With MyRealConnection
            .Provider = "MSDASQL"
            .ConnectionString = "Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};" & "DBQ=" & Fichier & ";HDR=Yes';ReadOnly=False;"
            .Open
        End With
    End Sub
     
        'Propriete de connection ADO
    Property Get MyConnection() As ADODB.Connection
            'Si pas d'objet ==> deconnécté
        If MyRealConnection Is Nothing Then
            ConnectMe
            'DisconnectMe
        End If
        Set MyConnection = MyRealConnection
    End Property
     
        'fonction de test si on est connecté
    Function IamConnected() As Boolean
        If MyRealConnection Is Nothing Then
            IamConnected = False
            Exit Function
        End If
        IamConnected = True
    End Function
     
        'Sub pour se deconnecter
    Sub DisconnectMe()
        If Not (MyRealConnection Is Nothing) Then
            MyRealConnection.Close
            Set MyRealConnection = Nothing
        End If
    End Sub

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonsoir
    Je confirmer create database ou alter table n'existe tout simplement pas en connexion Adodb pour excel.

    Je t'invite a créer un nouveau classeur avec Excel vba l'enregistrer sous et ensuite l'utiliser comme une base de données!

    Excel reste un tableur on peut ajouter modifier des données dans une structure existante; on ne peut supprimer des données ou créer ,supprimer,modifier une structure!

    Comme dit Clément Marcotte Excel n'est pas une SGBD et ne le sera jamais!

    En revanche tu peux lancer nuitamment,via le gestionnaire de tâches! un VbScript qui modifie la structure de ton fichier afin que les utilisateurs puissent travailler dessus le lendemain matin!
    Dernière modification par Invité ; 13/11/2017 à 17h59.

Discussions similaires

  1. Ajout dynamique de champ dans un formulaire
    Par gendalf37400 dans le forum Ruby on Rails
    Réponses: 5
    Dernier message: 06/06/2007, 15h11
  2. Ajout d'un champ dans une requete
    Par maysa dans le forum Langage SQL
    Réponses: 2
    Dernier message: 19/04/2007, 11h35
  3. Réponses: 6
    Dernier message: 10/04/2007, 23h50
  4. Réponses: 1
    Dernier message: 11/09/2006, 10h14
  5. Réponses: 4
    Dernier message: 11/05/2006, 16h23

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