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 :

Simplification de formule


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Août 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 9
    Par défaut Simplification de formule
    Bonjour,

    souvent dans mes formules j'utilise beaucoup de SI embriqués les uns dans les autres et ça devient vite compliqué à si retrouver.
    Je me demandais si sous VB on pouvais simplifier grace à des valeurs relatives.
    exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(SI(A1<B1;1;2)=AA1;"OK";SI(D4>G4;2;1))
    On pourrai simplifier:
    code1= SI(A1<B1;1;2)
    code2= SI(D4>G4;2;1)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SI(code1=AA1;"OK";code2)

    Est ce possible sous VB?
    Merci à vous

  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
    Par défaut
    Regarde Iif dans l'aide
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell.Value = IIf([A1] < [B1], "ok", IIf([D4] > [G4], 2, 1))

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Août 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 9
    Par défaut
    Je viens de me rendre compte que c'est possible. Je l'ai utilisé pour une trouver la dernière ligne d'un tableau.

    Par contre impossible de le faire marcher.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    code1= IF(A1<B1,1,2)
    code2= IF(D4>G4,2,1)
     
    Range("AE1").Select
    ActiveCell.FormulaR1C1 = "IF(code1=AA1,""OK"",code2)"
    J'ai bien défini mes formules mais cela ne marche pas. Dans la cellule il me met ?NOM#

    Et sous Excel la formule est transcrite comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(code1=AA1;"OK";code2)"
    Quelqu'un voit'il ou est mon erreur?

  4. #4
    Membre Expert Avatar de wilfried_42
    Homme Profil pro
    Auto-entrepreneur
    Inscrit en
    Novembre 2006
    Messages
    1 427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Auto-entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 427
    Par défaut
    bonjour à tous

    Code1, code 2 sont des variables VBA pas des noms de plages, ellse con inonnues par excel, de plus en fin de procedur elles son vidée

    Quand tu mes une formule dans un cellule, il affiche #NOM s'il ne les reconnait pas, et c'est le cas

    On peu utiliser VBA avec Excel, mais ce que tu utilises dans VBA, n'est pas formement compris par Excel

  5. #5
    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
    Par défaut
    Je répondais à ça :
    Je me demandais si sous VB on pouvais simplifier grace à des valeurs relatives.
    Maintenant, si tu veux écrire la formule avec VBA, alors tu dois mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell.FormulaLocal = "=SI(SI(A1<B1;1;2)=AA1;" & "OK" & ";SI(D4>G4;2;1))"
    A+

    Edit
    Tu peux aussi utiliser des variables tout plein
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Adres1 = "A1"
    Adres2 = "B1"
    Adres3 = "D4"
    Adres4 = "G4"
    Adres5 = "AA1"
    Range("A10").FormulaLocal = "=SI(SI(" & Adres1 & "<" & Adres2 & ";1;2)=" & Adres5 & ";" & _
          "OK" & ";SI(" & Adres3 & ">" & Adres4 & ";2;1))"
    A+

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Août 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 9
    Par défaut
    Maintenant, si tu veux écrire la formule avec VBA, alors tu dois mettre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell.FormulaLocal = "=SI(SI(A1<B1;1;2)=AA1;" & "OK" & ";SI(D4>G4;2;1))"
    Je suis d'accord avec ce code mais la partie SI(A1<B1;1;2)=AA1 sera utilisé plusieurs fois dans la macro. J'aimerai la definir une bonne fois pour toute et pas retaper la formule à chaque fois. En plus ça simplifie la lecture.
    C'est possible ça ?

  7. #7
    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
    Par défaut
    C'est du pareil au même, en reprenant mon exemple précédent
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Code1 = "SI(" & Adres1 & "<" & Adres2
    Range("A10").FormulaLocal = "=SI(" & Code1 & ";1;2)=" & Adres5 & ";" & _
          "OK" & ";SI(" & Adres3 & ">" & Adres4 & ";2;1))"
    A+

Discussions similaires

  1. [XL-2007] Simplification de formule et gain de RAM
    Par garulf0 dans le forum Excel
    Réponses: 4
    Dernier message: 26/06/2014, 16h01
  2. Simplification de formule
    Par solorac dans le forum Excel
    Réponses: 7
    Dernier message: 14/08/2013, 11h24
  3. [XL-2010] simplification de formule
    Par elsabio dans le forum Excel
    Réponses: 2
    Dernier message: 26/01/2013, 08h48
  4. [Débutant] simplification de formule
    Par biboulou dans le forum VB.NET
    Réponses: 3
    Dernier message: 05/02/2012, 21h04
  5. [XL-2003] aide simplification de formule
    Par redstoff dans le forum Excel
    Réponses: 1
    Dernier message: 29/10/2010, 16h43

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