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 :

Fonction evaluate et formule


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 39
    Par défaut Fonction evaluate et formule
    Bonjour,

    petite question

    je tente d'utiliser la fonction evaluate mais cela ne fonctionne pas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    toto = "INDIRECT" & "(" & Chr(34) & "'Feuil2" & Chr(34) & "&Y4'&" & Chr(34) & Chr(33) & "N" & Chr(34) & "&EQUIV(Z4;Type1!A:A)+1)"
              Sheets("Feuil1").Cells(2 + i + M, 4 + r) = Evaluate(toto)
    En utilisant la lecture pas à pas, "toto" prend bien la valeur de la formule ci dessus, mais dans le classeur j'ai "VALEUR"

    Merci

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Je ne comprends pas pourquoi tu utilises la fonction INDIRECT alors que VBA te permet de composer la fonction que tu souhaites.

    Essaye :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    toto = "'Feuil2" & Range("Y4") & "!N" & (Column(A).Find(Range("Z4").Row + 1)
    Ou même en une seule ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Feuil1").Cells(2 + i + M, 4 + r) = Sheets("'Feuil2" & Range("Y4")).Range("N"  & (Column(A).Find(Range("Z4").Row + 1))

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 39
    Par défaut
    merci pour ta réponse,

    Je fais ça pour que la formule apparaisse quand l'utilisateur clique sur une cellule

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Dans ce cas, tu n'as pas choisi la bonne méthode.
    Evaluate ne place ps une formule dans une cellule. Elle calcule la formule et renvoie le résultat.
    Pour mettre une formule dans une cellule, il faut utiliser la Propriété Formula de Range.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Feuil1").Cells(2 + i + M, 4 + r).FormulaLocal = "="&toto

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 39
    Par défaut
    Oui mais dans ce cas avec formula quand je note:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    toto = "=INDIRECT" & Chr(34) & "Type" & Chr(34) & "&Y4&" & Chr(34) & Chr(33) & "N" & Chr(34) & "&" & "EQUIV" & "(" & "Z4;Type1" & "!A:A" & ")" & "+" & "1" & ")"
           Sheets("Testcontrib3").Cells(15, 26).FormulaLocal = "=" & toto
    cela ne marche car il ne comprend pas quand il y a deux & à la suite: & chr(34) & ... sachant que la formule entière est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INDIRECT("Type"&$Y4&"!N"&EQUIV($Z4;Type1!A:A)+1)
    Et si j'enlève le = avant INDIRECT ci-dessus, on peut voir la formule dans la cellule.

  6. #6
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par fredorik10 Voir le message
    Et si j'enlève le = avant INDIRECT ci-dessus, on peut voir la formule dans la cellule.
    Etant donné que tu n'avais pas mis de "=" dans ta première ligne de ton message, j'en ai mis un dans la proposition que j'ai faite pour la seconde ligne.
    Mais il est évident qu'il ne faut pas en mettre aux deux.

    Si tu veux mettre un double cote " dans du code VBA sans que ce soit pris comme une limite de texte, il n'est pas indispensable d'utiliser Chr.
    Tu peux aussi le mettre deux fois : "" sera traduit comme un seul double côte en tant que texte.

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 39
    Par défaut
    merci mais je me suis mal expliqué: c quand il y a & & chr(38) a la suite (sachant chr(38)=&) que ca ne fonctionne pas.

    en clair mon cahier des charge c'est d'avoir la formule INDIRECT...ci dessus dans le classeur.

    J'ai effectivement essayé avec la formule R1C1:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Sheets("Feuil2").Cells(2 + i + M, 4 + r).FormulaR1C1 = _
             "=SUM(Feuil1!RC:R[" & (1) & "]C)" & "-" & "INDIRECT(""Type""&RC25&" & Chr(34) & Chr(33) & Cc & Chr(34) & "&MATCH(RC26,Type1!C1)+1)"
    mais je voudrait incrémenter +1 ligne a cette première formule:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SUM(Feuil1!RC:R[" & (1) & "]C)"
    merci pour votre aide

  8. #8
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 39
    Par défaut
    Merci a Menhir pour son aide.

    Voici la solution a mon problème avec FormulaLocal:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Feuil1").Cells(2 + i + M, 4 + r).FormulaLocal = "=SUM" & "(" & "Feuil2!" & plage & ") - indirect(" & "Y4&" & Chr(34) & "!" & Cc & Chr(34) & "&EQUIV" & "(" & "Z4;Type1" & "!A:A" & ")" & "+" & "1" & ")"

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

Discussions similaires

  1. fonction OFFSET avec formule compliquée
    Par Lou_anne dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 04/07/2007, 23h00
  2. Evaluer une formule mathématique
    Par spidercool dans le forum C#
    Réponses: 2
    Dernier message: 07/05/2007, 22h27
  3. [CR] Ordre d'evaluation des formules
    Par sylviefrfr dans le forum Formules
    Réponses: 1
    Dernier message: 13/10/2006, 00h13
  4. Réponses: 6
    Dernier message: 18/01/2005, 16h24
  5. [CR10] Fonction evaluate time
    Par speed034 dans le forum SAP Crystal Reports
    Réponses: 4
    Dernier message: 15/10/2004, 15h06

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