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 :

evaluate avec chaine de caractère


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 2
    Points : 1
    Points
    1
    Par défaut evaluate avec chaine de caractère
    Bonjour

    Désolé d'avoir comme 1er post une question, mais je suis pressé par le temps et n'arrive pas à trouver de solution sur le net (ah bravo la politesse !).

    Je voudrais savoir s'il est possible d'utiliser Evaluate avec une chaine de caractère et une propriété.



    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
     
         'j'ai une variable qui contient une chaine de caractère
         Dim cell_val_cherchee As String
         cell_val_cherchee = "ActiveWorkbook.Worksheets(1).Range(""F7"")"
         'elle est en String pour une bonne raison
     
         'declaration d'une variable pour cellule
         Dim cell_quelconque As Range
         Set cell_quelconque = ThisWorkbook.Worksheets(1).Range("A2")
     
         'ce que je veux obtenir :
         cell_quelconque = ActiveWorkbook.Worksheets(1).Range("F7").Offset(, ColCour - 1)
         'en bref, rentrer une valeur d'une cellule dans une autre
         'mais je veux le faire avec ma variable cell_val_cherchee
     
          'Donc j'essaye avec evaluate :
          cell_quelconque = Evaluate(cell_val_cherchee & ".Offset(, ColCour - 1)")
          'mais cela ne marche pas
    Vous allez vous dire mais pourquoi veut-il faire comme ça?

    Et bien pour expliquer en gros cell_quelconque appartient à un fichier excel.
    Dans la macro de ce fichier, je vais ouvrir un autre fichier excel dans lequel sera cell_val_cherchee .
    Comme je fais appel à une procédure et que l'adresse de cell_val_cherchee va changer,
    je préfère passer cela par paramètre dans l'appel.
    Vous allez me dire de mettre cell_val_cherchee en Range,
    j'ai essayé mais ça récupère une plage du 1er fichier excel, et non pas celui qui est ouvert, c'est pourquoi j'utilise une variable de type String.

    Je veux donc interpréter cette chaine ainsi qu'un offset.
    Cela est-il possible ?
    Merci

  2. #2
    Membre chevronné Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Points : 2 168
    Points
    2 168
    Par défaut
    J'ai rien compris a ton problème.
    Mais je vais essayer
    tu ne peux pas utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     cell_quelconque = ActiveWorkbook.Worksheets(1).Range("F7").Offset(, ColCour - 1)
    Car tu veux travailler dans un autre classeur
    remplace
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     workbooks("NomdeTonDeuxièmeClasseur")
    Sinon je ne pense pas que tu pourra utiliser ta chaine de caractère il te faudrais travailler sur des adresses
    Pour plein de raison
    Evaluate si tu utilise l'aide F1 s'utilise ainsi
    application.evaluate
    de deux
    il faut lui donner comme argument
    Nom de l'objet, conformément aux conventions de dénomination de Microsoft Excel.
    « Il n'y a pas de recette miracle qui permet aux gens d’écrire des programmes corrects sans avoir à réfléchir. Il faut apprendre aux gens comment réfléchir »

  3. #3
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Bonsoir,
    Je ne sais pas comment tu peux t'en servir mais ta chaine, je l'aurais écrite comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cell_val_cherchee = "ActiveWorkbook.Worksheets(1).Range(" & Chr(147) & "F7" & Chr(147) & ")"
    mais quoi en faire ?, je vais surveiller la discussion, je vais peut-etre en apprendre
    bonne soirée
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  4. #4
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci beaucoup pour vos réponses.

    Citation Envoyé par Krovax Voir le message
    J'ai rien compris a ton problème.
    Mais je vais essayer
    tu ne peux pas utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     cell_quelconque = ActiveWorkbook.Worksheets(1).Range("F7").Offset(, ColCour - 1)
    Car tu veux travailler dans un autre classeur
    remplace
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     workbooks("NomdeTonDeuxièmeClasseur")
    Sinon je ne pense pas que tu pourra utiliser ta chaine de caractère il te faudrais travailler sur des adresses
    Pour plein de raison
    Evaluate si tu utilise l'aide F1 s'utilise ainsi
    application.evaluate
    de deux
    il faut lui donner comme argument
    Le souci c'est que je dois utiliser ActiveWorkbook car cela correspond au fichier excel qui vient d'être ouvert (plusieurs fichiers seront ouverts).
    Sinon pour expliquer en gros le problème :
    Dans une procédure , j'ouvre un fichier excel correspond à un certain mois
    Je récupère des données de celui-ci.
    J'utilise donc cette procédure car l'endroit la plage où je vais stocker les données et la plage du fichier excel ouvert changent toutes les deux.
    Je les fais donc passer en paramètre.

    Je ne peux pas faire passer la plage du fichier excel en paramètre car j'utilise ActiveWorkbook. Je la fais donc passer en chaine de caractère, mais le couac c'est que je n'arrive pas à l'interpréter avec Evaluate.

  5. #5
    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 : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Citation Envoyé par jrjr72 Voir le message
    je dois utiliser ActiveWorkbook car cela correspond au fichier excel qui vient d'être ouvert.
    Cette affirmation est fausse.

    En créant une instance de ton fichier au moment de son ouverture, tu n'auras plus jamais besoin de ActiveWorkbook.
    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!

Discussions similaires

  1. Problème avec chaine de caractère
    Par Mouss340 dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 17/12/2007, 20h46
  2. [Maths] evaluer une chaine de caractère
    Par davyondo dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 06/11/2007, 14h53
  3. Problème avec chaine de caractères
    Par Nicegame dans le forum C
    Réponses: 7
    Dernier message: 27/04/2007, 18h35
  4. Condition avec chaine de caractère
    Par davelop dans le forum ASP
    Réponses: 1
    Dernier message: 13/09/2006, 12h15
  5. Requete avec chaine de caractère commence par
    Par jazzes_dean dans le forum Langage SQL
    Réponses: 7
    Dernier message: 02/08/2004, 13h07

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