Probleme connection adodb

Bonjour;

Je rencontre un souci sur un PC, j'ai un fichier Excel avec un lien vers une macro complémentaire.

Dans cette macro complémentaire, je vais une connexion adodb sur mon fichier.
Lors de l'activation de la macro, il m'ouvre une deuxième fois mon fichier en lecture seul, et il rencontre un problème de zone nommé, une zone nommée porte déjà le même nom.

Or la macro fonctionne parfaitement sur tous les PC sauf un .

Avez-vous une idée d'où cela peut venir ?

PS : par souci de confidentialité je ne peux pas vous montrer le code.

Merci par avance

6 réponses

  1. Contributeur
    bonjour,
    peut-^tre
    depuis XL2007 le script de connexion a changé

    Voir
    https://www.connectionstrings.com/

    si XL>=2007
    With Cn
    .Provider = "Microsoft.Jet.OLEDB.4.0"
    .ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" _
    & Fichier & ";Extended Properties=""Excel 12.0;HDR=YES;"""
    .Open
    End With

    si <2007
    With Cn
    .Provider = "Microsoft.Jet.OLEDB.4.0"
    .ConnectionString = "Data Source=" & Fichier & _
    ";Extended Properties=Excel 8.0;"
    .Open
    End With

    source;
    https://silkyroad.developpez.com/VBA/ClasseursFermes/

    edit:
    aussi peut-^tre la référence non cochée dans outil-référence de l'éditeur vba
    dans ce cas il vaut écrire dans la macro
    Dim cn as object
    ...
    set Cn=createobject("adodb.connexion")
    m^me punition pour la requ^te
    Michel
    0
    1. merci pour ta réponse rapide
      j'ai bien la bonne connexion, je ne pense pas que cela vienne du code, le fichier étant partagé par toute l'équipe et le problème n'arrive que sur un PC, je pense que cela vient plutôt d'une config Excel indépendant au fichier, mais je ne vois pas laquelle.
      j'ai vérifié les références et les compléments, et tout le monde a les mêmes.
      0
      1. Contributeur
        encore1 dernier truc
        macro activées (oui, je sais, mais...) ?
        0
      2. oui elles sont activées
        0
    2. Modérateur
      Bonjour,

      Excusez l'incruste...

      Peut être une différence de Bits, 64 vs 32...
      Si votre Office est en 32 bits, il cnviendra d'utiliser comme dit précédemment par Michel :
      Provider = "Microsoft.Jet.OLEDB.4.0"

      Sinon, en 64 bits, remplacer par :
      Provider = "Microsoft.ACE.OLEDB.12.0" 


      Ou pas...........

      Source : https://stackoverflow.com/questions/26515823/working-with-oledb-connection-on-office-2013-64-bit

      🎼 Cordialement,
      Franck 🎶
      0
      1. tout les Pc sont en 32 bits
        0
    3. Modérateur
      Tu dis :
      il m'ouvre une deuxième fois mon fichier en lecture seul, et il rencontre un problème de zone nommé, une zone nommée porte déjà le même nom.
      Que se passe t'il donc, sur ce pc, pour que ta macro ouvre deux fois ce classeur?
      Parce qu'il est là le souci.
      Si tu lances ce code (je ne sais pas si c'est possible) en mode pas à pas sur le pc qui pose souci, tu apercevras peut être un élément qui diffère des autres...
      0
      1. mon fichier est déjà ouvert , c'est avec lui que j'active la macro complémentaire.
        sur tout les pc dans la méthode pas à pas quand on ouvre la connexion , ca ne pose pas de problème , il lit le fichier déjà ouvert.
        Sur ce pc au lieu de lire les infos sur le fichier déjà ouvert , il ouvre le fichier en lecture seul pour lire les données , mais une pop-up apparait car deux champs nommée ont le même nom , il me demande donc de changer son nom , si je change son nom , il lit les données dans le fichier qu'il vient d'ouvrir. et la macro marche.

        Même si cela marche comme ca , ce n'est pas une solution vu que le fichier est en lecture seul.
        0
      2. Modérateur
        @pernicPourrais tu nous donner le code entier?
        0
      3. Je fait :
        Set myconnection = New ADODB.Connection

        Myconnection.Open "driver={Microsoft Excel Driver (*.xls)};" & " DBQ=" & chemin & "; ReadOnly=False;"
        0
      4. Modérateur
        @pernicPourrais tu nous donner le code entier?
        Le code réellement en entier de toute la macro.
        C'est tout ce qu'il y a?
        0
      5. Non dsl je ne peut pas et elle fait 1000 lignes ;) , mais c'est au niveau de open qu'il me réouvre le fichier
        0
    4. Modérateur
      Bon...
      Pas simple, sans code ni fichier.
      Regarde les options Excel. Il y a forcément quelque chose qui est différent dans le PC qui bloque.
      Je pense, notamment à :
      Menu Fichier/Options Excel/Centre de gestion de la confidentialité
      Paramètres de blocage des fichiers
      Vérifie les cases cochées.regarde par exemple si la case "ouvrir" est bien décochée pour les fichiers de macros complémentaires...

      Sinon, ne te reste qu'à parcourir toutes les options de cet excel par rapport aux autres...
      0
      1. Contributeur
        macro de 1000 lignes ?
        standard développeur microsoft= 50 maxi...

        salut Frank,
        d'après le code on est en .xls soit XL<2007
        voir le le numéro excel X;0 si >Extended Properties=Excel 10.0
        0
      2. Modérateur
        @michel_mSalut michel,

        macro de 1000 lignes ?
        standard développeur microsoft= 50 maxi...

        Entièrement d'accord, mais nous n'y pourrons rien sans le code.

        Peut être pernic pourrais-tu nous expliquer en quoi ton code est top secret?
        Ce ne sont que des lignes de code VBA, pas le programme de décollage des Airbus A380?
        0
      3. @pijakuDans ma fonction de connection il n'y as pas bcq plus que ce que je vous est donnée.
        0
      4. Pour l'instant internet rame , je répond avec mon tel , je vous envoie la fonction quand ça remarche
        0
      5. Modérateur
        16ème message.
        On ne peut pas accéder au code, on ne sait toujours pas la version d'excel.
        Il m'est impossible de t'aider davantage qu'en te disant de te "palucher" toutes les différentes options Excel de ce pc par rapport aux autres.
        Si c'est pas cela, tenter une réinstallation d'Office (ou peut être une simple réparation)...
        Désolé de ne pouvoir en faire plus.
        0
    5. Modérateur
      Bonjour,

      La nuit portant conseil, peux tu placer un MsgBox dans le code juste avant la connection et me dire si tu as une différence entre le poste "merdique" et un autre :
      MsgBox chemin
      Myconnection.Open "driver={Microsoft Excel Driver (*.xls)};" & " DBQ=" & chemin & "; ReadOnly=False;"

      0