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 :

Transformer fonction Excel en worksheetfunction [Toutes versions]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Janvier 2003
    Messages
    604
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 604
    Par défaut Transformer fonction Excel en worksheetfunction
    Bonjour,

    Je n'arrive pas à transformer une fonction type cellule en fonction VBA.
    Je l'intégre dans une cellule par le code mais je préfèrerais l'avoir en worksheetfunction :
    Voilà le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        fin = Range("A65256").End(xlUp).Row
        Range("Z1").FormulaR1C1 = "=COUNTIF(R1C3:R" & fin & "C3,"""")"
        casvide = Range("Z1")
    Le but est de tester si une cellule est vide ou pas dans une plage.

    Peut être existe-t-il un traducteur automatique ?
    Ou peut être un algo de transfert d'une notation en l'autre est dispo ?
    Merci d'avance de vos idées.

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Effectivement, tu pourrais utiliser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Application.CountA([A1:A10]) = 0 Then MsgBox "plage vide"
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If WorksheetFunction.CountA([A1:A10]) = 0 Then MsgBox "plage vide"
    J'utilise la première formulation, la seconde donnant paraît-il des résultats erronés avec EQUIV (Match en VBA)

    Pour trouver l'équivalent d'une formule en anglais, je l'écris en français dans une feuille Excel et j'exécute la macro :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub Formule()
        ' Touche de raccourci du clavier: Ctrl+Maj+F
        Set x = ActiveCell
        Set c = Application.InputBox("cellule desti", Type:=8)
        c.Value = "'" & x.Formula
    End Sub
    qui me permet de récupérer l'équivalent anglais dans une autre cellule.

  3. #3
    Membre Expert Avatar de QuestVba
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2012
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 2 475
    Par défaut
    Bonjour

    cellule non vide (dans colonne A)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nbcells = Application.WorksheetFunction.CountA(Feuil1.Range("$A:$A"))
    cellule vide (dans colonne A)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nbcells= WorksheetFunction.CountBlank(Range("$A:$A"))

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Il y a aussi une solution avec EVALUATE
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim rng As Range: Set rng = ThisWorkbook.Worksheets("Feuil1").Range("A2:A7")
    Dim formula As String: formula = "=COUNTA(A2:A7)"
    MsgBox Evaluate("=COUNTA(A2:A7)")
    MsgBox Evaluate("=COUNTA(" & rng.Address & ")")
    MsgBox Evaluate(formula)
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Membre éclairé
    Inscrit en
    Janvier 2003
    Messages
    604
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 604
    Par défaut
    Merci beaucoup pour ce foisonnement d'idées. Cela devrait m'être bien utile.
    Cdlt.

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

Discussions similaires

  1. Utilisation fonction excel dans ACCESS: Ereur de compilation
    Par mat_lefebvre dans le forum Access
    Réponses: 2
    Dernier message: 22/03/2006, 10h44
  2. [VB.NET][Excel] utiliser des fonction Excel comme xlToRight
    Par Alexj51 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 01/03/2006, 12h10
  3. fonction excel
    Par semur dans le forum Excel
    Réponses: 4
    Dernier message: 24/01/2006, 17h41
  4. [VBA][Débutante] Fonction Excel avec Boucle
    Par Inelukia dans le forum Macros et VBA Excel
    Réponses: 32
    Dernier message: 11/01/2006, 19h31
  5. Fonction excel: trouvé un numéro de ligne
    Par Nanid dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 28/09/2005, 14h52

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