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 :

Le tronquage et ADODB


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 26
    Par défaut Le tronquage et ADODB
    Bonjour,

    Je suivi les explications données ici: http://silkyroad.developpez.com/VBA/ClasseursFermes/

    J'ai lu les explications données par Microsoft mais je me trouve en face d'un problème que je ne comprends pas du tout.

    Pour pas me casser la tête, j'ai décider de faire un if la cellule = 255 caractère alors j'affiche un warning pour prévenir que la cellule est peut-être tronquée. Jusque la tous va bien.

    Mais je viens de remarquer à ma grande surprise que le tronquage n'est pas toujours fait. J'ai certains fichiers où les cellules sont >255 et ça ne pose pas de problème alors que d'autre ont toutes leurs cellules tronquée..

    Donc la question que je me pose c'est comment le pilote fonctionne réellement? ( Ils disent que c'est les 8 premières lignes mais j'ai des fichiers non tronqués où il y un maximum de 20 caractère par cellules dans le première ligne)

  2. #2
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 26
    Par défaut
    Bon du coup la seule solution que j'ai trouvé pour éviter le tronquage c'est de faire une première connexion, d'écrire 256 caractère en A1 de fermer la connexion, puis de l'ouvrir

    C'est pas très pro mais c'est le seul truc que je vois.

    Par contre je n'arrive pas à écrire dans la cellule A1.

    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
     
    Sub ErrTronq()
     
        Dim Cn As ADODB.Connection
        Dim Cd As ADODB.Command
        Dim Rst As ADODB.Recordset
        Dim fichier As String
        Dim cheminConn As String
     
        chemin = ThisWorkbook.Path & "\"
        fichier = Dir(chemin & "*.xl*")
        cheminConn = chemin & fichier
     
        Do While fichier <> ThisWorkbook.Name
     
            Set Cn = New ADODB.Connection
     
            With Cn
                .Provider = "Microsoft.Jet.OLEDB.12.0"
                .ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" _
                    & fichier & ";Extended Properties=""Excel 12.0;HDR=YES;"""
                .Open
            End With
     
            Set Cd = New ADODB.Command
            Cd.ActiveConnection = Cn
            Cd.CommandText = "SELECT * FROM [Sheet1$A1:A1]"
     
            Set Rst = New ADODB.Recordset
            Rst.Open Cd, , adOpenKeyset, adLockOptimistic
            Rst(0).Value = "Test"
            Rst.Update
     
            Cn.Close
            Set Cn = Nothing
            Set Cd = Nothing
            Set Rst = Nothing
     
            fichier = Dir
        Loop
    Edit: Apparemment, ça claque à 'Rst.Open Cd, , adOpenKeyset, adLockOptimistic' il me dit que Microsoft Acess n'as pas pu trouver l'objet Sheet1$A1:A1

    Je me trompe au niveau de la ponctuation?

  3. #3
    Membre éclairé Avatar de grisan29
    Homme Profil pro
    ouvrier poseur
    Inscrit en
    Octobre 2006
    Messages
    866
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ouvrier poseur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2006
    Messages : 866
    Par défaut
    bonjour tohrak
    il me dit que Microsoft Acess
    c'est sur le forum access que tu aurais du poster

    Pascal

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 26
    Par défaut
    Bonjour,

    Je suis bien sur Excel. C'est le message d'erreur qui me spécifie que le moteur de base de données Microsoft Access n'a pas pu trouver l'objet Sheet1$A1:A1..

    Apparemment c'est un problème de chemin d'accès mais j'arrive pas à le résoudre.

  5. #5
    Membre éclairé Avatar de grisan29
    Homme Profil pro
    ouvrier poseur
    Inscrit en
    Octobre 2006
    Messages
    866
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ouvrier poseur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2006
    Messages : 866
    Par défaut
    bonjour tohrak

    peut que la terminaison de tes fiches ne sont celles demandés par cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fichier = Dir(chemin & "*.xl*")
    qui dit .xl mais peut etre est-ce .xls où .xlxs où .xlsm

    mais quelle version d'office utilise-tu
    car pour enregistre sous voir ci dessous
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Case Is = "XLS"
                With pompe
                    .Provider = "Microsoft.Jet.OLEDB.4.0"
                    .ConnectionString = "Data Source=" & CLIENT_CHOISI & ";Extended Properties=Excel 8.0;"
                    .Open
                End With
            Case Is = "XLSX"
                With pompe
                    .Provider = "Microsoft.ACE.OLEDB.12.0"
                    .ConnectionString = "Data Source=" & CLIENT_CHOISI & ";Extended Properties=Excel 12.0 Xml;"
                    .Open
                End With
            End Select
    voila le code qui fait que j'ai le choix entre .xls et .xlsx dans mon fichier

    Pascal

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 26
    Par défaut
    Citation Envoyé par grisan29 Voir le message
    bonjour tohrak

    peut que la terminaison de tes fiches ne sont celles demandés par cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fichier = Dir(chemin & "*.xl*")
    qui dit .xl mais peut être est-ce .xls où .xlxs où .xlsm

    Pascal
    C'est pourquoi j'ai mis un * à la fin de xl pour prendre toute les terminaisons possibles. Le problème ne vient pas de là car plus loin dans mon code je récupère les informations des feuilles sans soucis. Là, la connexion à l'air de ce faire sauf que ça me sort une erreur quand le pilote essaie d'écrire quelque chose dans le feuille

    Edit pour en dessous: Merci mais la connexion s'effectue sans soucis. Le problème n'a pas l'air de venir de là.

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

Discussions similaires

  1. [jawin][DLL][VB] ADODB.recordset
    Par blaz dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 09/08/2005, 18h42
  2. Message d'erreur ADODB.Field error '80020009'
    Par tonyC dans le forum ASP
    Réponses: 2
    Dernier message: 23/07/2005, 16h00
  3. erreur bigint requete Employee.fdb via AdoDb
    Par jflebegue dans le forum Connexion aux bases de données
    Réponses: 7
    Dernier message: 04/01/2005, 11h03
  4. [ADODB]probleme de comprehension
    Par flogreg dans le forum ASP
    Réponses: 2
    Dernier message: 15/11/2004, 16h15
  5. [VB6]ADODB Command, recuperer l'info d'un RollBack
    Par Mouse dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 19/05/2003, 16h26

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