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 :

[Excel]Mettre une variable dans une fonction


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Inscrit en
    Juin 2005
    Messages
    243
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 243
    Points : 89
    Points
    89
    Par défaut [Excel]Mettre une variable dans une fonction
    Bonjour tout le monde !

    Voilà, j'ai une fonction sous excel du type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ='C:\Mars\[DUPOND Jean.xls]Feuil1'!$D$108
    Elle permet de récupérer la valeur de la cellule D108 de la feuil1 du fichier Dupond jean.xls.

    J'aimerai que la partie "DUPOND jean" de la fonction soit remplacer par un lien d'une cellule contenant justement la valeur "DUPOND Jean" du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ='C:\Mars\[A2]Feuil1'!$D$108
    La cellule A2 contenant le fameux dupond jean.

    Sinon j'ai testé en VBA, mais ça marche toujours pas :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    cellule = """='[" & nom & " .xls]Feuil!R108C4"""
     
    ActiveCell.FormulaR1C1 = cellule
    Un grand merci à ceux qui pourront m'aider par ce que je vois vraiment plus du tout comment faire.

  2. #2
    Membre régulier
    Inscrit en
    Juin 2005
    Messages
    243
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 243
    Points : 89
    Points
    89
    Par défaut
    Salut ouskel'n'or et merci d'avoir répondu !

    J'ai peur de ne pas bien comprendre, dans ton code il n'y a pas de référence au fichier ou l'on va chercher l'info, il y a juste la feuille et la cellule à aller chercher, mais pas le nom du fichier, non ?

  3. #3
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    =INDIRECT(ADRESSE(108;4;1;VRAI;"monchemin\" & macellule & "nomdefeuille")
    Elle est pas belle la vie ?

  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
    Je croyais que tu mettais ton nom de fichier dans la feuille "Feuil1" cellule A1... Dans l'exemple que je t'ai donné, c'est ainsi que je le voyais

    A+

  5. #5
    Membre régulier
    Inscrit en
    Juin 2005
    Messages
    243
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 243
    Points : 89
    Points
    89
    Par défaut
    Merci de vos réponses, c'est vraiment très sympa !

    J'ai vraiment du mal à comprendre la formule Random, j'ai fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =INDIRECT(ADRESSE(108;4;1;VRAI;"c:\";b4;"Feuil1")
    Mais en vain. Comment je pourrais utiliser cette fonction pour pointer sur, attention ça va être compliqué :

    Le fichier Excel dont le nom se trouve à la cellule B4 se trouvant sur le répertoire C:\. Et pointer sur la cellule D108 de la feuille "Feuil1".

    Pour te répondre ouskel'n'or, je devrais utiliser cette fonction sur d'autre cellule que la cellule B4, donc le nom du fichier changera à chaque fois.

    En tout cas, merci encore !!

  6. #6
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut
    bonsoir

    Tu peux tester cette synthaxe . Le nom de la variable est dans la cellule B4 , par exemple Dupond jean.

    remarque :
    Le classeur doit etre ouvert pour que cela fonctionne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =INDIRECT("'C:\Documents and Settings\michel\dossier\["&B4&".xls]Feuil1'!$D$108")


    Sinon par macro , si le classeur contenant la valeur à récupérer est fermé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox ExecuteExcel4Macro("'C:\Documents and Settings\michel\dossier\[" & Range("B4") & ".xls]Feuil1'!R108C4")


    bonne soiree
    michel

  7. #7
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    dans un premier temps laisse tomber indirect et concentre toi sur adresse
    'C:\Mars\
    =INDIRECT(ADRESSE(108;4;1;VRAI;"c:\";b4;"Feuil1")
    remplace c:\ par c:\mars\
    dans ta cellule b4 il doit y avoir Dupontjean
    quand tu auras bien saisi adresse et obtenu le résultat
    avec la bonne adresse
    il suffit de faire indirect(adresse(xxx))
    Elle est pas belle la vie ?

  8. #8
    Membre régulier
    Inscrit en
    Juin 2005
    Messages
    243
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 243
    Points : 89
    Points
    89
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox ExecuteExcel4Macro("'C:\Documents and Settings\michel\dossier\[" & Range("B4") & ".xls]Feuil1'!R108C4")
    Cette méthode marche très bien !! Merci beaucoup à tous en tout cas !

  9. #9
    Membre régulier
    Inscrit en
    Juin 2005
    Messages
    243
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 243
    Points : 89
    Points
    89
    Par défaut
    J'aurais une dernière petite requête à vous formuler, comment je pourrais utiliser ce code dans une fonction ?

    Du style, dans ma cellule Excel je tape
    Code de ma fonction :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    sub lien(cellule)
    LIEN = ExecuteExcel4Macro("'C:\mars\[" & cellule & ".xls]Feuil1'!R108C4")
    end sub
    Mais quand je fais ça, j'ai le message #valeur dans ma cellule

  10. #10
    Membre régulier
    Inscrit en
    Juin 2005
    Messages
    243
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 243
    Points : 89
    Points
    89
    Par défaut
    Non bah c'est bon en faite, j'ai adapté la macro à mon besoin.

    Merci encore !

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

Discussions similaires

  1. [AC-2010] mettre le contenu d'une variable dans une requête
    Par idiot dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 12/10/2010, 08h24
  2. Mettre le résultat d'une commande dans une variable
    Par daviddu54 dans le forum Scripts/Batch
    Réponses: 12
    Dernier message: 18/09/2008, 23h58
  3. [SQL] Mettre le résultat d'une requête dans une variable
    Par temperature dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 03/01/2008, 13h47
  4. Réponses: 7
    Dernier message: 02/05/2006, 16h28
  5. Mettre une valeur d'une table dans une variable
    Par Raphou96 dans le forum Access
    Réponses: 5
    Dernier message: 06/02/2006, 15h19

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