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 :

VBA ADO avec Excel sur le serveur marche pas [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Inscrit en
    Janvier 2003
    Messages
    604
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 604
    Par défaut VBA ADO avec Excel sur le serveur marche pas
    Bonjour,
    Mon code fonctionne très bien sur ma machine, mais j'ai un probleme des
    que je passe sur le serveur :
    maintenant j'ai l'erreur : -2147217904
    voici ma chaine de connection :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Set cn = New ADODB.Connection
        With cn
            .Provider = "MSDASQL"
            .ConnectionString = "Driver={Microsoft Excel Driver (*.xls)};" & _
    "DBQ=" & targetFile & "; ReadOnly=False;IMEX=1;"
            .Open
        End With
    ce qui donne un parametre de connexion SUR MON POSTE:
    "Provider=MSDASQL.1;Extended Properties="DBQ=D:\RH\Entrées 2010.xls;Driver={Microsoft Excel Driver (*.xls)};DriverId=790;MaxBufferSize=2048;PageTimeout=5;ReadOnly=0;""
    Faut il modifier un parametre de la connexion ? (a la limite je fais un replace)

    Merci de vos idées

  2. #2
    Membre Expert Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Par défaut
    bonjour,

    a chaud

    targetFile est bien le même sur le serveur???
    donc, le drive D existe bien sur les deux machones et pointe sur le même endroit?

  3. #3
    Membre éclairé
    Inscrit en
    Janvier 2003
    Messages
    604
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 604
    Par défaut
    En fait "targetfile" est le chemin d'accès au fichier qui est spécifié par l'utilisateur via un Application.GetOpenFilename qui remplit une cellule nommée que je récupère comme chemin.

    Donc normalement spécifié correctement.

  4. #4
    Membre Expert Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Par défaut
    je me pose une question

    tu n'essaye pas d'ouvrir un fichier genre "blabla.xlsx"???
    je pense qu'il attends plutot "blabla.xls"

  5. #5
    Membre éclairé
    Inscrit en
    Janvier 2003
    Messages
    604
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 604
    Par défaut
    Bonjour,

    En fait il se connecte une premiere fois (lors du parcours de la premiere feuille) puis il ne veut plus se connecter.
    C'est peut être du à ma gestion du RecordSet
    Mais je ne peux tout tester en live, (mon accès au réseau est limité)
    Je vous met le code, merci de votre retour :
    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
    cpt_Mois = 0
    Nb = ActiveWorkbook.Sheets.Count
    While mois < Nb
        For cpt_BU = 0 To 7
        Set sh = ActiveWorkbook.Sheets(mois)
        With sh
                feuille = .Name
                strQuery = "select Nom,[Trig#_Recruteur],[REM annuelle]/12 from " & "[" & feuille & "$] where [BL/BU]=" & "'" & lesBU(cpt_BU) & "'"
                Set rs = New ADODB.Recordset
                rs.Open strQuery, cn, adOpenDynamic, adLockReadOnly
               ThisWorkbook.Sheets(1).Cells(7 + cpt_BU * 25, 2 + cpt_Mois * 7).CopyFromRecordset rs
                rs.Close
            Set rs = Nothing
     
            End With
        Next cpt_BU
    mois = mois + 1
    cpt_Mois = cpt_Mois + 1
    Wend

  6. #6
    Membre Expert Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Par défaut
    Je n'ai pas tester, mais pourrais-tu essayer ce code?

    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
    Sub testADO()
    Set rs = New ADODB.Recordset
    cpt_Mois = 0
     
     
    For mois = 1 To ActiveWorkbook.Sheets.Count
        For cpt_BU = 0 To 7
            Set sh = ActiveWorkbook.Sheets(mois)
            strQuery = _
                "SELECT Nom,[Trig#_Recruteur],[REM annuelle]/12 " & _
                "FROM " & "[" & sh.Name & "$] " & _
                "WHERE [BL/BU]=" & "'" & lesBU(cpt_BU) & "';"
            rs.Open strQuery, cn, adOpenDynamic, adLockReadOnly
            ThisWorkbook.Sheets(1).Cells(7 + cpt_BU * 25, 2 + cpt_Mois * 7).CopyFromRecordset rs
            rs.Close
        Next cpt_BU
        cpt_Mois = cpt_Mois + 1
    Next mois
     
    End Sub

  7. #7
    Membre éclairé
    Inscrit en
    Janvier 2003
    Messages
    604
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 604
    Par défaut
    J'ai peut être une piste qu'il me reste à valider en ne mettant
    pas le type de curseur et le type de verrou que j'avais au départ :
    adOpenDynamic,
    adLockReadOnly
    Je met rien à la place.
    J'attends une place devant une machine ayant accès aux fichiers sur le réseau. (en tout cas sur un essai serveur ca le fait) pour tester.

  8. #8
    Membre éclairé
    Inscrit en
    Janvier 2003
    Messages
    604
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 604
    Par défaut
    Pas mieux avec la suppression des parametres. Peut être en spécifiant d'autres parametres.
    Je ne comprends pas car sur une partie du réseau cela fonctionne :
    J'ai mis mon fichier anonymisé sur le reseau Share Temp (un réseau disponible pour les équipes internes sans login) et ca marche.
    Du coup je me demande si il ne faut pas que je demande un login pour les utilisateurs, mais ils sont déjà loggués sur leur compte...
    A moins que cela vienne du TimeOut.
    Avez vous des idées ?
    (j'ai essayé aussi la solution de 'mayekeul' qui rajoutait le point virgule mais cela ne change rien sur le réseau Share Temp.)
    Toute les idées sont les bienvenues.

    Autre chose, je n'avais pas remarqué mais dans la fenêtre de projet VBA je m'apercois que j'ai des VBAProjet ouverts correspondants aux fichiers que j'ouvre pour extraire des données, sauf que les fichiers Excel correspondants, eux, ne sont pas ouverts
    Ca me parrait anormal, est ce que j'ai fait une betise, (je veille à fermer les fichiers que j'ai ouvert en fin d'opération.)
    Si cela peut amener à trouver la solution ce serait cool.
    Merci de vos idées...

  9. #9
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut
    Bonjour,

    essaie de rajouter

    à la fin de ta procédure.

    j'ai cru voir un post dans ce sens ces derniers jours

  10. #10
    Membre éclairé
    Inscrit en
    Janvier 2003
    Messages
    604
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 604
    Par défaut
    Merci je pense que c'est bon, je viens de retester sur les fichiers du serveur que j'ai rapatrié j'avais la même erreur. En fait la ligne de titre sur le fichier serveur n'était plus bonne, j'ai changé ca a remarché, donc en relivrant un fichier correct sur le serveur, ca devrait le faire. (je vais remettre un set rs = nothing en fin de procédure)
    Mais je continue d'autres devs et j'ai à nouveau poster....
    (je mettrais résolu quand tout fonctionnera en prod)

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

Discussions similaires

  1. requete marche sur le serveur marche pas sur le site
    Par ben_skywalker dans le forum Requêtes
    Réponses: 5
    Dernier message: 08/12/2008, 12h07
  2. Ouverture d'un fichier excel sur un serveur
    Par Drost dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 21/11/2007, 14h34
  3. Problème d'envoie de mail avec PHP sur le serveur Linux
    Par Nessma dans le forum Administration système
    Réponses: 0
    Dernier message: 03/09/2007, 16h06
  4. Réponses: 1
    Dernier message: 11/08/2007, 04h21
  5. [Upload] transférer un fichier excel sur le serveur
    Par essono dans le forum Langage
    Réponses: 5
    Dernier message: 31/01/2007, 19h35

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