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 ESTVIDE dans une macro


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Agent administratif
    Inscrit en
    Octobre 2016
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent administratif
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2016
    Messages : 18
    Par défaut Formule ESTVIDE dans une macro
    Bonjour,
    J'ai une macro qui fonctionne comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    Sub Ratio()
    Dim ws As Worksheet, i&,
     
    For Each ws In ThisWorkbook.Worksheets
    ws.Activate
        Debut = 3 'les montant commence en ligne 3 maintenant
        With ws
        DerL = .Cells(Rows.Count, 4).End(xlUp).Row
        VA = .Range("D1:D" & DerL).Value ' meme chose pour le tableau en col D pour prendre en compte la Valeur Somme dans les cellules
     
            For i = 3 To UBound(VA) 'Tout le calcul se fait maintenant en colonne E dans la boucle
                If i = UBound(VA) Then
                    Range("F3:F" & i).Formula = "=if(or(E3="";E3=0;O3=0;O3=""),0,(E3-O3)/O3)"
     
                    End If
            Next
       End With
    Next
     
    End Sub
    J'ai un soucis sur le partie "=if(or(E3="";E3=0;O3=0;O3=""),0,(E3-O3)/O3)"
    En effet je cherche une solution pour obtenir le même résultat que cette formule sous excel :
    =SI(OU(ESTVIDE(E3);E3=0;O3=0;ESTVIDE(O3));0;(E3-O3)/O3)

    J'ai donc testé :
    - E3="" et O3="" , qui se retranscrit comme ceci sur excel =SI(OU(E3=";E3=0;O3=0;O3=");0;(E3-O3)/O3) Donc un seul guillemet, le résultat de la formule n'est pas bon.
    - ISEMPTY() OU ISBLANK() mais la macro me sort une erreur.

    Quelqu'un aurait une solution ?

    Merci d'avance.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Range("F3:F" & i).Formula ="= IFERROR((E3-O3)/O3,0)"

  3. #3
    Membre averti
    Homme Profil pro
    Agent administratif
    Inscrit en
    Octobre 2016
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent administratif
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2016
    Messages : 18
    Par défaut
    Bonjour,
    La fonction IFERROR m'enlève bien les erreur qu'il peut y avoir dans ma colonne, mais j'ai des -100% qui s'affichent car j'ai parfois des cellules de la colonne E qui sont soit vides, soit égales à 0. Avec ma condition (ESTVIDE(E3);E3=0;O3=0;ESTVIDE(O3)) j'ai des 0% qui s'affichent à la place et c'est ce qui me convient.

    J'ai aussi testé ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     Range("F3:F" & i).Formula = "=if(or(ESTVIDE(E3),ESTVIDE(O3),E3=0,O3=0),0,(E3-O3)/O3)"
    Range("F3:F" & i).NumberFormat = "0.00 %"
    Seulement il m'est affiché sur toutes mes cellules F : #NOM?
    alors que dans la barre des formules j'ai bien =SI(OU(ESTVIDE(E3);ESTVIDE(O3);E3=0;O3=0);0;(E3-O3)/O3)
    Il faut que je rentre dans la barre de formule, j'appuie sur Entrée, et la cellule m'affiche bien le rendu voulu soit mon chiffre en pourcentage et qui est égal à 0 si E ou O est vide.

    Peut être faut il rajouter une ligne dans ma macro pour que chaque formule soit "Validée" ?

  4. #4
    Invité
    Invité(e)
    Par défaut
    je vois pas le problème!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Range("F3:F" & i).NumberFormat = "0.00 %"
    Range("F3:F" & i).Formula ="= IFERROR((E3-O3)/O3,0)"

  5. #5
    Membre averti
    Homme Profil pro
    Agent administratif
    Inscrit en
    Octobre 2016
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent administratif
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2016
    Messages : 18
    Par défaut
    Mon problème est que si par exemple O3=500 et E3=0, va s'afficher en F3 "-100,00%"
    Je souhaite qu'à la place il y est 0%, voir même que rien ne s'affiche si E3=0 ou E3 est vide.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(CNUM(E3)*CNUM(O3)=0;0;SIERREUR((E3-O3)/O3;0))

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 31/03/2016, 16h07
  2. [XL-2010] Formule Vlookup dans une macro
    Par Oorreelly dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 15/08/2012, 16h05
  3. [XL-2003] Formule excel dans une macro
    Par gangstarrr dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 15/03/2011, 16h41
  4. [XL-2003] problème formule #NOM? dans une macro
    Par VBA je te hais dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 02/09/2009, 15h43
  5. ecrire une formule dans une macro
    Par bouddine dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 19/02/2008, 16h39

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