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 :

Recupération valeur ds d'autres classeurs sans pour autant l'ouvrir [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Octobre 2011
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Octobre 2011
    Messages : 75
    Par défaut Recupération valeur ds d'autres classeurs sans pour autant l'ouvrir
    Bonjour Forum et à tous ceux qui me liront,

    J'aurais une question sur un problème que j'ai lorsque j'utilise une macro de recup de données :

    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
    Public Sub Affaire()
    Dim fich$, feuil$, i&, Cell   As Range
    On Error Resume Next
     
    If Range("F3").Value = "1" Then
    Set Cell = Range("b2")
    ElseIf Range("F3").Value = "2" Then
    Set Cell = Range("g7")
    ElseIf Range("F3").Value = "" Then Exit Sub
    End If
     
    feuil = Sheets(2)
    For i = 6 To 300 ' a adapter
    Range("F" & i).Value = GetValueWithADO(Range("E" & i), feuil, Cell)
     
    Next i
     
    End Sub

    Mon PC est en reseau et le probleme est le suivant si sur un autre PC un des fichiers et ouvert , il s'ouvrira aussi chez moi (lecture seul)
    J'ai essayé avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If thisworkbook.readonly = true then....
    mais c'est comme si j'avais rien mis.

    J'espère avoir été clair, je suis au boulot et ai écrit un peu rapidement
    n'hésiter à me contacter pour d'autres renseignements


    Merci d'avance Forum.

  2. #2
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Et quelle est la question?

    Accessoirement, que contient ta macro GetValueWithADO?
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  3. #3
    Membre actif
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Octobre 2011
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Octobre 2011
    Messages : 75
    Par défaut
    Bonjour,

    Je pensais que le titre était assez parlant ,je vais tacher d’être un peu plus clair.

    J'ai une une liste de fichier xls mise en forme grâce à une macro dans un premier temps.
    Ensuite avec la petite macro ci-dessus (fait à la va-vite je l’avoue) je vais chercher quelques valeurs dans ces fichiers(classeurs fermés) gràce comme tu peux le voir avec "GetValueWithADO" c'est un peux long mais bon, j'ai pas mieux.

    Ces fichiers sont stockés en réseau, ce sont des gamme de fabrication avec toutes les étapes d'une production.
    Le problème surviens lorsque je fais ma prise d'info dans ces classeur alors que l'un d'eux est ouvert, utilisé par un opérateur, et là la macro s’arrête, pas de message d'erreur, elle s’arrête et le fichier s'ouvre en lecture seul.

    L'idée serait de repérer les fichiers ouvert ,et de les zapper et de passer au suivant.

    Merci pour votre patience.

    Cordialement

  4. #4
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Je répète donc la question:

    Citation Envoyé par AlainTech Voir le message
    que contient ta macro GetValueWithADO?
    La méthode ADO se fout pas mal qu'un classeur soit ouvert ou fermé.
    On peut même faire une requête ADO dans le classeur où se trouve cette requête.

    Donc la question a toute sa pertinence ici.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  5. #5
    Membre actif
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Octobre 2011
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Octobre 2011
    Messages : 75
    Par défaut
    Bonjour AlainTech,

    Désolé si je ne comprend pas ta demande , je n'arrive pas à décortiquer ces macro et en sortir les éléments problématiques.

    Voici la macro "ADO" que j'utilise ,je l'ai quelque peu adapté à ma sauce ( peut etre en créant moi meme des conflits )

    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
    Function GetValueWithADO(Classeur$, Feuille$, Cell As Range)
    'renvoie la valeur de la cellule Cell de la feuille Feuille
    'du classeur fermé Classeur
    Dim RcdSet As Object
    Dim strConn As String
    Dim strCmd As String
    Dim dummyBase As Range
     
      'prépare une "base de données" bidon pour la clause SELECT
      '(une entête fictive et une ligne de données)
      Set dummyBase = Cell.Resize(2)
     
      'prépare les commandes ADO et SQL
      strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                    "Data Source=" & Classeur & ";" & _
                    "Extended Properties=""Excel 8.0;HDR=No;IMEX=1;"";"
      strCmd = "SELECT * FROM [" & Feuille & "$" & dummyBase.Address(0, 0) & "]"
     
      'crée l'objet Recordset
      Set RcdSet = CreateObject("ADODB.Recordset")
     
      'va chercher l'info
      RcdSet.Open strCmd, strConn, 0, 1, 1 'adOpenForwardOnly, adLockReadOnly, adCmdText
     
      'et la renvoie
      GetValueWithADO = Application.Clean(RcdSet(0))
     
      'autre syntaxe possible
    '  GetValueWithADO =Application.Clean(RcdSet.GetString(NumRows:=1))
     
      'nettoyage
      Set RcdSet = Nothing
    End Function
    J'espère que cela aidera

    @bientot

  6. #6
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Bonjour,

    Il me semble que, si tu cherches à lire des fichiers Excel 2007, ta chaîne de connexion n'est pas correcte.
    Il se peut que ce soit ce qui provoque l'ouverture du fichier.

    Vois dans ce lien quelle est la méthode qui convient le mieux à ton besoin.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  7. #7
    Membre actif
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Octobre 2011
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Octobre 2011
    Messages : 75
    Par défaut
    Bonjour AlainTech,

    J'ai bien pris en compte le lien seulement cela ne m'a pas plus avancé, comme je te l'ai dit j'ai copier cette macro "ADO" sur un forum et je ne saurais la manipuler avec les éléments trouvés suivant ton lien.C'est pas grave.
    J'essaierai de contourner le problème.

    Merci tout de méme pour ton aide.

    Je laisse un jour ou deux ce topic ouvert ( on sait jamais quelqu'un pourrais me débloquer la situation) sinon je la clôturerai sans faute.

    @ bientot

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

Discussions similaires

  1. [XL-2003] Macro pour copier valeurs dans 1 autre classeur
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 20/11/2013, 08h42
  2. [XL-2003] exécution d'une macro qui appel un autre classeur sans raisons
    Par fllyann dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 28/03/2011, 10h38
  3. [XL-2003] incrémenter une valeur d'un autre classeur
    Par Nightwhisper dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 19/06/2009, 22h14
  4. Récupérer des valeurs d´un autre classeur sans l´ouvrir
    Par jguenot dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 14/05/2009, 15h43
  5. comment exécuter macro d'un autre classeur sans avoir à l'ouvrir
    Par zerti dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 24/07/2007, 14h16

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