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 :

Modifier taille du champ dans table ACCESS (ADO)


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Rémy.A
    Homme Profil pro
    Expert SEE ELECTRICAL EXPERT
    Inscrit en
    Juin 2017
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Expert SEE ELECTRICAL EXPERT
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2017
    Messages : 118
    Par défaut Modifier taille du champ dans table ACCESS (ADO)
    Bonjour à tous,

    Je viens ver vous car je ne sais pas comment adapter mon code...

    Je suis bébutant en VBA

    J'ai réalisé un code qui récupère des tables Access de 3 fichiers mdb différent, les concatène et les trie sur Excel puis je mets les tables à jour dans les 3 fichiers mdb.
    Le problème est quand je mets à jour la table, je ne peux pas écrire dans un champs car il est limité à 3 caractères...

    Comment puis-je faire pour modifier la taille du champs en VBA?

    Voici mon code:

    Variable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Public Cn As ADODB.Connection
    Public rs As ADODB.Recordset
    Public strCn As String
    Public RDest As Variant
    Sub connexion access

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Sub Ouverture_Connection_Access_ADO()
     
    ' Connection à la base Access
    Set Cn = New ADODB.Connection
    strCn = "Provider=Microsoft.ACE.OLEDB.12.0; " & "Data Source=" & CheminAccess & ";"
    Cn.Open strCn
    ' Ouverture recordset / table
    ' Objet Recordset représente les enregistrements d'une table
    Set rs = New ADODB.Recordset
    rs.Open "SELECT * FROM" & "[" & Table & "]", Cn, adOpenKeyset, adLockOptimistic
     
    End Sub

    Mise à jour de la table :

    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
     
     
     
    Case "API"
     
                    For x = 1 To 3 'Boucle pour injecter les les tables dans les trois fichiers Access
                        Select Case x
     
                        Case 1
                        Call Fichier_Excel_Pour_Access_V3R7
     
                        Case 2
                        Call Fichier_Excel_Pour_Access_V4R1
     
                        Case 3
                        Call Fichier_Excel_Pour_Access_V4R2
     
                        End Select
     
                        '******** Mettre code pour modifier taille du champ!
     
                        If Cells.Find("*") Is Nothing Then 'savoir si la feuille est vide
                        Else
     
                        Call Ouverture_Connection_Access_ADO
     
                            For y = 1 To Derniere_ligne
     
                                With rs
                                    ' Créer un enregistrement
                                    .AddNew
                                    ' ajouter les valeurs à chaque champ de l'enregistrement
                                    .Fields("CODE") = Cells(y, 1)
                                    .Fields("LIBELLE") = Cells(y, 2)
                                    .Fields("FABRICANT") = Cells(y, 3)
                                    .Fields("SERIE") = Cells(y, 4)
                                    .Fields("PRODUIT") = Cells(y, 5)
                                    .Fields("CATEGORIE") = Cells(y, 6)
                                    .Fields("RACK") = Cells(y, 7)
                                    .Fields("ALIM") = Cells(y, 8)
                                    .Fields("COURANT") = Cells(y, 9)
                                    .Fields("NBRE_VOIE") = Cells(y, 10) 'Faire code vba pour augmenter la taille de caractère
                                    .Fields("NBRE_EXT") = Cells(y, 11)
                                    .Fields("DX") = Cells(y, 12)
                                    .Fields("DY") = Cells(y, 13)
                                    .Fields("DZ") = Cells(y, 14)
                                    .Fields("POIDS") = Cells(y, 15)
                                    .Fields("CODE_INT") = Cells(y, 16)
                                    .Fields("CODE_EAN") = Cells(y, 17)
                                    .Fields("CODE_VIRT") = Cells(y, 18)
                                    .Fields("CODE_EXT") = Cells(y, 19)
                                    .Fields("PRIXHT") = Cells(y, 20)
                                    .Fields("UNITFACT") = Cells(y, 21)
                                    .Fields("COLISAGE") = Cells(y, 22)
                                    .Fields("ACCESSOIR") = Cells(y, 23)
                                    .Fields("SYMBOLE") = Cells(y, 24)
                                    .Fields("IMPLANTE") = Cells(y, 25)
                                    .Fields("VIGNETTE") = Cells(y, 26)
                                    .Fields("VUE_YZ") = Cells(y, 27)
                                    .Fields("VUE_XZ") = Cells(y, 28)
                                    .Fields("EQUIPEMEN") = Cells(y, 29)
                                    '.Fields("DATE") = Cells(y, 30)
                                    .Fields("WEB") = Cells(y, 31)
                                    '.Fields("PICTURE") = Cells(y, 32)
                                    '.Fields("{SEE_SET}") = Cells(y, 33)
                                    '.Fields("{SEE_CONTACTS_ID}") = Cells(y, 34)
                                    .Update
     
                                End With
                            Next y
     
                        Call Fermeture_Connection_Access_ADO
     
                        End If
                    Next x
    Voici le code que j'ai trouvé et que je n'arrive pas à insérer dans mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rs.RunSQL "ALTER TABLE [" & Table & "] ALTER COLUMN [NBRE_VOIE] TEXT (10)"
    Merci par avance pour votre aide!!

  2. #2
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    3 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 040
    Par défaut
    Bonjour,

    si la variable table contient le nom de la table à modifier et la colonne [NBRE_VOIE] à passer à 10 car :

    il faut passer une fois le code :
    soit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Docmd.runsql  "ALTER TABLE [" & Table & "] ALTER COLUMN [NBRE_VOIE] TEXT (10)"
    soit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Currentdb.execute  "ALTER TABLE [" & Table & "] ALTER COLUMN [NBRE_VOIE] TEXT (10)"
    Tu le lances une seule fois, avant de faire toute autre commande sql sur cette table.

    CDLT

  3. #3
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 410
    Par défaut
    Bonjour.

    je ne peux pas écrire dans un champs car il est limité à 3 caractères
    T'es-tu assuré que l'application qui utilise cette BD va supporter sans problème l'agrandissement de ce champ ?

    T'es-tu aussi assuré que tu devais vraiment agrandir le champ ?
    Tes données "en trop" pourraient n'être que des blancs sans réelle signification.
    Il conviendrait, peut-être, alors de simplement tronquer cette valeur à 3 caractères.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  4. #4
    Membre confirmé Avatar de Rémy.A
    Homme Profil pro
    Expert SEE ELECTRICAL EXPERT
    Inscrit en
    Juin 2017
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Expert SEE ELECTRICAL EXPERT
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2017
    Messages : 118
    Par défaut Modifier taille du champ dans table ACCESS (ADO)
    Bonjour,

    Apparemment ce n'est pas possible en ADO par contre c'est possible en DAO car j'y suis arrivé.

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

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