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 :

Récupérer valeur cellule dans classeur


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 855
    Points : 368
    Points
    368
    Par défaut Récupérer valeur cellule dans classeur
    Bonjour,

    J'essaye de récupérer des valeurs dans un classeur, le 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 Macro1()
     
    Dim disk, doss, doss2 As String
     
    Dim chem1, chem2 As String
     
    Workbooks.Open Filename:="C:\e\a.xls"
     
        disk = Range("A1").Value
        doss = Range("A2").Value
       doss2 = Range("A3").Value
     
        chem1 = "c:\e\list.xls"
        chem2 = disk & ":\" & doss & "\" & doss2 & "\list.xls"
     
     
        FileCopy chem1, chem2
    Workbooks.Close
     
    End Sub
    Nota : dans le classeur "a.xls", cellule A1 contient le chemin (exemple c), A2 le nom du dossier (e), A3 le nom du sous dossier (ee)

    Le code fonctionne bien, mais il m'oblige d'ouvrir à chaque fois le classeur "a.xls", n'est-il pas possible de récupérer ces valeurs sans ouvrir le classeur ?

    Merci
    A+

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Citation Envoyé par ericdev
    Le code fonctionne bien, mais il m'oblige d'ouvrir à chaque fois le classeur "a.xls", n'est-il pas possible de récupérer ces valeurs sans ouvrir le classeur ?
    Si ! Pour cela, regarde ici
    Mais tu peux aussi tester
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim CL1 as workbook
    Application.screenUpdatig = false
    Set CL1 = Workbooks.Open Filename:="C:\e\a.xls"
    Windows(CL1.name).visible = false
    '... ton code

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 855
    Points : 368
    Points
    368
    Par défaut
    Salut Ouskel'n'or,

    J'avais fait un tour sur ce forum , mais quand j'ai essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    'Lecture de la cellule A1 dans la Feuil1 du classeur fermé				
    MsgBox ExecuteExcel4Macro("'C:\e\[a.xls]Feuil1'!R1C1")
    Ca n'a pas fonctionné....le code se met en erreur, j'ai pas compris pourquoi, c'est pourquoi j'ai essayé ma méthode....
    Si je comprends bien ton code, en fait tu ouvres aussi le classeur, mais ne le fait pas apparaitre...bien vu (sans mauvais jeux de mots....)

    Je voulais essayer de chercher directement la valeur de la cellule dans le classeur a.xls, qui me sert de référence pour les chemins, et donc ces valeurs sont toujours les mêmes.

    A+

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    As-tu tout lu ? Entre autres, cette ligne
    Citation Envoyé par SilkyRoad
    Vous devez préalablement activer la référence Microsoft ActiveX Data Objects x.x Library pour utiliser les exemples présentés dans ce tutoriel.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 855
    Points : 368
    Points
    368
    Par défaut
    Oui, j'ai bien mis la référence,
    mais quand je mets tout seul
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox ExecuteExcel4Macro("'C:\e\[a.xls]Feuil1'!R1C1")
    , il ne se passe rien, et je sais pas où le mettre dans mon code...j'ai essayé d'attribuer la variable c'est à dire cette instruction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    disk = MsgBox ExecuteExcel4Macro("'C:\e\[a.xls]Feuil1'!R1C1")
    Et visual me repond :
    erreur de compilation
    ....comprend pas

    Merci
    A+

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Alors je te suggère une solution de rechange :
    Dans le classeur contenant ta macro, mets "simplement"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        Thisworkbook.worksheets("feuil1").range("IV65633").FormulaLocal = "='C:\e\[a.xls]Feuil1'!A1"
        Thisworkbook.worksheets("feuil1").range("IV65635").FormulaLocal = "='C:\e\[a.xls]Feuil1'!A2"
        Thisworkbook.worksheets("feuil1").range("IV65635").FormulaLocal = "='C:\e\[a.xls]Feuil1'!A3"
     
        disk = Thisworkbook.worksheets("feuil1").Range("IV65633").Value
        doss = Thisworkbook.worksheets("feuil1").Range("IV65635").Value
        doss2 = Thisworkbook.worksheets("feuil1").Range("IV65635").Value
     
        Thisworkbook.worksheets("feuil1").range("IV65633") = ""    Thisworkbook.worksheets("feuil1").range("IV65635") = ""
        Thisworkbook.worksheets("feuil1").range("IV65635") = ""
    Pas très élégant mais en attendant que Silkyroad explique le pb que tu as rencontré...

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 855
    Points : 368
    Points
    368
    Par défaut
    t'es trop top ouskel'n'or,

    Mais dans l'absolu, finalement, ton code d'ouverture "masquée" est plus cool... : j'ai créé un ensemble de macros et je pensais garder en mémoire et/ ou les variables "disk, doss, doss2", mais je vois qu'il va falloir que je les appelle à chaque fois, donc...je pense que je vais prendre ton code + le mien à chaque fois....

    Sage résolution pour toi ??

    A+

  8. #8
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Sage résolution pour toi ??
    Bôf ! Je pense que SilkyRoad serait d'avis d'utiliser son code (adapté à ta demande) mais pour ce qui me concerne, hors réseau, le tps d'accès étant très court si le fichier ouvert n'est pas important, j'ouvre les fichiers. Je crois vraiment que c'est une question de choix personnel.
    Bon week-end

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 855
    Points : 368
    Points
    368
    Par défaut
    Je te rejoins, je pars du C:\, je n'ouvre qu'un seul classeur, le temps d'accès est donc très court.
    Par conte, Silkyroad, si tu vois ce forum, n'hésite pas à m'envoyer un mail sur l'espace perso....

    Encore Merci Ouskel'n'or,
    A la prochaine,
    Bon week-end
    A+

  10. #10
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Salut, peut-être
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Private Function ExtraireValeur(ByVal Dossier As String, ByVal Fichier As String, ByVal Feuille As String, ByVal Cellule As String)
    Dim Argument As String
        Dossier = Replace(Dossier, "'", "''")
        Fichier = Replace(Fichier, "'", "''")
        Argument = "'" & Dossier & "[" & Fichier & "]" & Feuille & "'!" & Range(Cellule).Address(, , xlR1C1)
        ExtraireValeur = ExecuteExcel4Macro(Argument)
    End Function

  11. #11
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Merci kiki, ça mérite d'être placé dans Contribuez. As-tu testé ton code, que je copie ta discussion dans ce forum ?
    A+

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 855
    Points : 368
    Points
    368
    Par défaut
    merci à tous les deux, mais comme j'ai dit à KIKI29, j'ai avancé dans mon code et finalement, c'est pas un gros soucis si le dossier s'ouvre.

    Par contre, une fois que j'aurai fini toute ma macro (et qu'elle fonctionnera (j'espère...)), j'essayerai de reprendre ce code. Il me semble assez cool, par contre, je sais pas où le placer (=comment l'appeler dans la macro)

    Merci
    A+

  13. #13
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Soir Bon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ...
    Cells(4, 4) = ExtraireValeur(Dossier, NomFichier, NomFeuille, "AB23")
    ...
    avec un petit exemple l'utilisant

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

Discussions similaires

  1. [XL-2007] Recherche valeur cellule dans plusieurs classeurs fermés
    Par Millenniums dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 19/04/2011, 20h32
  2. [XL-2003] Récupérer valeurs cellules dans userform
    Par fullmetalknet dans le forum Excel
    Réponses: 5
    Dernier message: 10/11/2009, 08h34
  3. Comment récupérer valeur cellule d'un gridview?
    Par cortex024 dans le forum ASP.NET
    Réponses: 9
    Dernier message: 23/03/2007, 14h31
  4. [VBA-E]Récupérer valeur cellule
    Par wanou44 dans le forum Macros et VBA Excel
    Réponses: 18
    Dernier message: 06/02/2006, 12h52
  5. [POI]Récupérer valeur cellule suivant format
    Par leminipouce dans le forum Documents
    Réponses: 1
    Dernier message: 27/10/2005, 08h52

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