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 :

Formule à convertir en VBA [XL-365]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert Avatar de curt
    Homme Profil pro
    Ingénieur Etudes
    Inscrit en
    Mars 2006
    Messages
    1 579
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Etudes
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 579
    Par défaut Formule à convertir en VBA
    Bonjour à tous,

    j'ai la formule suivant que je souhaiterai inclure dans une macro
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =INDEX(AC:AC;LIGNE(DECALER(DAS!AC6;NBVAL(DAS!AC:AC)-1;0))-1;1)
    Si avec des formules "simples" je suis à l'aise, avec des imbrications de fonction (notamment OFFSET pour DECALER), je suis vite largué.

    Pour l'instant j'en suis là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    msgbox application.WorksheetFunction.Index("AC:AC",rows(offset( ?????
    Après je sèche.

    Merci d'avance pour le coup de main.
    Curt

  2. #2
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Bonjour,

    A mon avis, vouloir traduire une formule excel en VBA ne me paraît pas être la bonne solution, surtout quand il y a beaucoup de fonctions imbriquées. Soit vous conservez la formule excel dans une cellule et vous récupérez le résultat que vous affichez dans un msgbox, soit vous faites un bout de code qui va chercher ce résultat.
    1er cas, récupération du résultat d'une formule (exemple résultat en A1)
    2ème cas, recherche par code(d'après la formule utilisée, il semblerait que vous alliez chercher le contenu de l'avant dernière cellule de la colonne AC de la feuille DAS), ceci pourrait se traduire par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox Sheets("DAS").Cells(Sheets("DAS").Range("AC" & Rows.Count).End(xlUp).Row - 1, "AC")
    Reste à savoir si c'est bien ce que vous voulez

    Cdlt

  3. #3
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Voici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Range("A1").Formula = "=INDEX(AC:AC,ROW(OFFSET(DAS!AC6,COUNTA(DAS!AC:AC)-1,0))-1,1)"

  4. #4
    Membre Expert Avatar de curt
    Homme Profil pro
    Ingénieur Etudes
    Inscrit en
    Mars 2006
    Messages
    1 579
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Etudes
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 579
    Par défaut
    Bonsoir à tous,

    et merci à vous deux.
    Les deux solutions fonctionnent:
    • comparer un résultat entre deux cellules calculées est une solution. Mais si l'utilisateur efface l'une ou les deux cellules, le traitement est mort. On peut évidemment protéger et/ou masquer les cellules mais c'est vouloir ajouter des étages à la fusée et (à mon sens) ça peut alourdir la maintenance du classeur (dans une moindre mesure évidemment)
    • La solution par VBA est certes plus compliquée à mettre en œuvre (imbrication de fonction à "traduire" en VBA) mais elle a l'avantage de faire abstraction des suppressions involontaires. C'est cette solution que je retiens.

    Merci en tout cas à vous deux pour l'éclairage et les solutions proposées. (un p'tit pouce+ à chacun )
    Curt

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

Discussions similaires

  1. Convertir une formule Excel en VBA
    Par bidulebule dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 04/06/2016, 19h59
  2. [XL-2002] convertir une formule Excel en VBA
    Par bubulemaster dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 23/09/2009, 09h40
  3. Parseur formule Excel <-> Code VBA
    Par gretch dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/08/2007, 18h08
  4. Correspondance formules excel et VBA
    Par abu143 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/10/2006, 17h54
  5. [EXCEL][VBA] Utilisation des formules Excel en VBA
    Par Amanck dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/12/2005, 15h08

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