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 :

[E-03] conversion de formule en VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 9
    Par défaut [E-03] conversion de formule en VBA
    Bonjour,

    Mon problème est le suivant, je dois faire un test sur une cellule pour pouvoir incrémenter une valeur hors si le test n'est pas bon, je dois vérifier une autre cellule.

    Voici la fonction que j'avais mis en place sous Excel, mais celle-ci ne fonctionne pas, car je dépasse le niveau maxi de hiérarchie.

    Est-il possible de traduire cette fonction en visual-basic ?

    Désolé, la formule est vraiment longue.

    =SI(ET(ESTNUM(MECA!EU36);ESTTEXTE(COMM!P8));MECA!EU36+1;SI(ET(ESTNUM(MECA!EB36);ESTTEXTE(COMM!P8));MECA!EB36+1;SI(ET(ESTNUM(MECA!DI36);ESTTEXTE(COMM!P8));MECA!DI36+1;SI(ET(ESTNUM(MECA!CP36);ESTTEXTE(COMM!P8));MECA!CP36+1;SI(ET(ESTNUM(MECA!BW36);ESTTEXTE(COMM!P8));MECA!BW36+1;SI(ET(ESTNUM(MECA!BD36);ESTTEXTE(COMM!P8));MECA!BD36+1;SI(ET(ESTNUM(MECA!AK36);ESTTEXTE(COMM!P8));MECA!AK36+1;SI(ET(ESTNUM(MECA!R36);ESTTEXTE(COMM!P8));MECA!R36+1;""))))))))

    Merci d'avance de votre aide.

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 753
    Par défaut
    Si tu pouvais expliquer concrètement ce que tu veux, ça nous éviterait d'arriver désespéré à voir ta formule qu'aucun fou ne va essayer de déchiffrer vu la longueur...

    Merci.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 9
    Par défaut
    Je vais essayé de faire clair.

    J'ai deux feuilles : MECA et COMM

    Je dois incrémenter une cellule de la feuille COMM, R36 en respectant des conditions sur l'autre feuille.

    J'explique :

    COMM!R36 = MECA!EU36 + 1 si dans MECA!EU36 il y a un nombre et si il y a du texte dans COMM!P8
    sinon
    COMM!R36 = MECA!EB36 + 1 si dans MECA!EB36 il y a un nombre et si il y a du texte dans COMM!P8
    sinon
    COMM!R36 = MECA!DI36 + 1 si dans MECA!DI36 il y a un nombre et si il y du texte dans COMM!P8
    sinon
    ......
    ainsi de suite jusqu'à MECA!R36

    Voilà, le problème avec ma formule est que je dépasse le niveau maxi de 7 formules imbriquées les unes dans les autres.

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 753
    Par défaut
    Ah j'ai compris: test en cascade...
    Ca c'est vraiment pas bon en effet.

    Je te sors l'astuce à deco qui va ne te manger que 2-3 formules imbriquées au maximum et qui marchera pour autant de cellules que tu veux du moment que tu peux saisir assez de texte:
    =ESTTEXTE(COMM!P8)*(ESTNUM(MECA!EU36)*MECA!EU36+NON(ESTNUM(MECA!EU36))*ESTNUM(MECA!EB36)*MECA!EB36+NON(ESTNUM(MECA!EU36))*NON(ESTNUM(MECA!EB36))*ESTNUM(MECA!DI36)*MECA!DI36+...+MAX(ESTNUM(MECA!EU36);ESTNUM(MECA!EB36);ESTNUM(MECA!DI36);...)

    J'explique un peu le principe: pour la première cellule si elle est numérique son ESTNUM renvoie 1, et si tu multiplies par son contenu tu obtiens... son contenu! Si ce n'est pas numérique tu obtiens 0. Si elle est numérique, tous les NON(ESTNUM) renverront 0 et la multiplication par le reste donnera 0. Bref il ne te restera que le contenu de ta cellukle plus le MAX qui renverra 1.
    Si en revanche elle n'est pas numérique, NON(ESTNUM) renvoie 1 et permet de voir si la cellule 2 est numérique ou non, etc... etc... et à chaque cellule tu rajoute un NON(ESTNUM) de toutes les cellules précédentes.

    Maintenant, le MAX: si aucune cellule n'est numérique, il n'y a pas de raison que tu incrémentes.

    Voilà, j'espère que tu comprends cette formule Excel (tu vois même pas eu besoin de VBA), car les solutions mathématiques, bien que souvent plus efficaces, ne sont pas souvent celles auxquelles les développeurs pensent en premier.

  5. #5
    Membre chevronné
    Inscrit en
    Octobre 2008
    Messages
    273
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Octobre 2008
    Messages : 273
    Par défaut
    Tu as aussi la possibilité d'utiliser un nom pour une partie de ta formule:

    =SI(ET(ESTNUM(MECA!EU36);ESTTEXTE(COMM!P8));MECA!EU36+1;SI(ET(ESTNUM(MECA!EB36);ESTTEXTE(COMM!P8));MECA!EB36+1;SI(ET(ESTNUM(MECA!DI36);ESTTEXTE(COMM!P8));MECA!DI36+1;SI(ET(ESTNUM(MECA!CP36);ESTTEXTE(COMM!P8));MECA!CP36+1;SI(ET(ESTNUM(MECA!BW36);ESTTEXTE(COMM!P8));MECA!BW36+1;SI(ET(ESTNUM(MECA!BD36);ESTTEXTE(COMM!P8));MECA!BD36+1;SI(ET(ESTNUM(MECA!AK36);ESTTEXTE(COMM!P8));MECA!AK36+1;SI(ET(ESTNUM(MECA!R36);ESTTEXTE(COMM!P8));MECA!R36+1;""))))))))

    Tu fais insertion, nom, définir.
    Tu définis un nom par exemple toto et tu mets dans fait référence :
    = "ce que j'ai mis en gras plus haut".

    et dans ta cellule, tu mets :
    =SI(ET(ESTNUM(MECA!EU36);ESTTEXTE(COMM!P8));MECA!EU36+1;SI(ET(ESTNUM(MECA!EB36);ESTTEXTE(COMM!P8));MECA!EB36+1;SI(ET(ESTNUM(MECA!DI36);ESTTEXTE(COMM!P8));MECA!DI36+1;SI(ET(ESTNUM(MECA!CP36);ESTTEXTE(COMM!P8));MECA!CP36+1;toto))))

    J'ai pas testé les parenthèses à la fin. Il peux ne pas y en avoir le bon compte

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 753
    Par défaut
    Ca ne résoud pas le problème des formules imbriquées.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 9
    Par défaut
    Merci beaucoup, je vais essayé ça de suite et je te tiens au courant.

Discussions similaires

  1. [XL-2007] VBA Conversion de formule NB.SI.ENS ne marche pas
    Par vivi4561 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/05/2011, 16h35
  2. Conversion de formule
    Par Aitone dans le forum ASP
    Réponses: 6
    Dernier message: 12/12/2006, 15h33
  3. tirage formules en VBA avec excel
    Par melodyyy dans le forum Macros et VBA Excel
    Réponses: 46
    Dernier message: 23/11/2006, 18h33
  4. Paramétrer une formule en vba
    Par arnogef dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/08/2006, 11h48
  5. Copier une formule avec vba
    Par NAMORJOSE dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 19/05/2006, 00h12

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