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 :

calcul d'une partie de la valeur d'une cellule


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 129
    Points : 51
    Points
    51
    Par défaut calcul d'une partie de la valeur d'une cellule
    Je me pose une autre question : comment calculer la valeur d'une cellule ou il n'y a pas que des chiffres? Par exemple la cellule G25 est > 520 Je voudrais faire une baisse de 15% de la valeur 520.

  2. #2
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if Range("G25") > 520 then range("G25") = range("G25") *(1 * 15/100)

  3. #3
    Membre actif Avatar de marsupilami34
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    574
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 574
    Points : 258
    Points
    258
    Par défaut
    Citation Envoyé par bbil
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if Range("G25") > 520 then range("G25") = range("G25") *(1 * 15/100)
    Ce serait plutot avec un "-"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if Range("G25") > 520 then range("G25") = range("G25") *(1 - 15/100)
    non ?

  4. #4
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Je n'ai pas compris ta question :
    comment calculer la valeur d'une cellule ou il n'y a pas que des chiffres?
    parce que tu nous donnes un exemple où ta cellules ne contient que des chiffres.

    Si tu as une cellule qui contient des lettres et des chiffres, tu peut recupérer la valeur de la cellule dans une string puis ensuite utiliser des fonctions de découpages de string pour extraire les chiffres de la cellule.
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  5. #5
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    Citation Envoyé par marsupilami34
    Ce serait plutot avec un "-"
    non ?
    oui

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 129
    Points : 51
    Points
    51
    Par défaut
    en fait le superieur à > fait partie de la cellule. donc comment calculer que le chiffre 520 et ne pas tenir compte du >

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 129
    Points : 51
    Points
    51
    Par défaut
    je m'explique mieux :
    dans ma cellule G20 j'ai ceci : > 520 520 est le nombre de pièces a produire et > est au maximum.
    je dois a tout prix laisser le > dans cette cellule.
    Dans mon formulaire je voudrais en tapant un pourcetage, par exemple 0.15, que ca me calcule automatiquement la cellule G20 par 0.15 et bien sur après ca me change la nouvelle valeur de la cellule G20.

  8. #8
    Membre actif Avatar de marsupilami34
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    574
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 574
    Points : 258
    Points
    258
    Par défaut
    Citation Envoyé par cedric600
    Si tu as une cellule qui contient des lettres et des chiffres, tu peut recupérer la valeur de la cellule dans une string puis ensuite utiliser des fonctions de découpages de string pour extraire les chiffres de la cellule.
    Il faut faire comme le dit Cédric600 je pense

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 129
    Points : 51
    Points
    51
    Par défaut
    oui je vois la démarche à faire mais comment trouve t-on ces fonctions?Je ne l'ai pas trouvé dans le FAQ ni les tutoriels.

  10. #10
    Membre actif Avatar de marsupilami34
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    574
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 574
    Points : 258
    Points
    258
    Par défaut
    Ben en fait si tu a uniquement le caractère > suivi d'un espace tu peux toujours écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Dim Strvaleur as string
    Dim valeur as double
    Strvaleur=right(cells(20,7),len(cells(20,7))-2)
    valeur=CDbl(Strvaleur)

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 129
    Points : 51
    Points
    51
    Par défaut
    merci je vais essayer ceci, je vous tient au courant.

  12. #12
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    normalement ces test de comparaison avec des constantes se traitent par
    des constantes

    on aura en principe un nom maconstant=520 ou une cellule nommée


    sinon on fait un rempacer > 520 par > 442
    Elle est pas belle la vie ?

  13. #13
    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
    Points : 15 543
    Points
    15 543
    Par défaut
    Tu veux faire ça comment ? en VBA ou dans une formule ?
    Dans une formule, ça donnerait un truc comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(CNUM(DROITE(G3;NBCAR(G3)-2))>F3;VRAI;FAUX)
    où dans G3 j'ai "> 520" avec un espace entre > et 520 et dans F3 une valeur

    Pour coller ta formule dans une cellule par macro, tu demandes
    Si tu veux tout faire par macro... quel est le pb ?
    A+

    Edit
    La formule est en H3 Enfin, elle n'est ni en G3 ni en F3

  14. #14
    Expert éminent

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 813
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 813
    Points : 7 641
    Points
    7 641
    Par défaut
    Et un petit format personnalisé de la cellule, style "> "0, ça serait pas plus simple?
    Comme ça, on a une valeur numérique dans la cellule, c'est quand même plus simple à gérer que passer par des découpages de chaine...
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 129
    Points : 51
    Points
    51
    Par défaut
    il faut a tout pris que je garde > devant le 520.
    Je dois recalculer ma cellule par rapport a un pourcentage que je saisie dans mon formulaire. Je pense qu'il faut que je choisisse la fonction Right(string,lenght), j'ai essayé ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Right(pourc, 3) = mafeuille.Range("G28:H29") * UserForm2.text_pourc.Text
    Mais ca me dit qu'il y a une incompatibilité de type. J'ai bien déclaré pourc en string et UserForm2.text_pourc.text est le pourcentage que je saisie dans mon textbox. Merci pour votre aide.

  16. #16
    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
    Points : 15 543
    Points
    15 543
    Par défaut
    Je reprends au début :
    Tu as "> 520" dans une cellule
    Tu veux pouvoir lire 520
    Tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim NoColonne, NoLigne, valeur
    NoLigne = 1
    NoColonne = 1
    valeur = Val(Right(Cells(NoLigne, NoColonne).Formula, Len(Cells(NoLigne, NoColonne).Formula) - 2))
    MsgBox valeur
    Ainsi, si tu as 1013 au lieu de 520, que tu as bien un espace entre ">" et ton nombre, tu liras toujours ton nombre.
    Si ça ne fonctionne pas je quitte le forum

  17. #17
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 129
    Points : 51
    Points
    51
    Par défaut
    merci beaucoup ca marche, mais si la cellule est fusionnée il faut changer quelque chose dans le code non?

  18. #18
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 129
    Points : 51
    Points
    51
    Par défaut
    c'est bon désolé j'ai trouvé cela ne sert a rien de changer le code, mais il y a un problème cela ne garde pas le supérieur dans la cellule. Voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    NoLigne = 28
    NoColonne = 7
    valeur = Val(Right(Cells(NoLigne, NoColonne).Formula, Len(Cells(NoLigne, NoColonne).Formula) - 2))
    pourc = valeur * UserForm2.text_pourc.Text 
    mafeuille.Range("G28:H29") = pourc

  19. #19
    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
    Points : 15 543
    Points
    15 543
    Par défaut
    C'est une blague ?
    Non, je pense que non
    Si tes cellules sont fusionnées, tu fais référence à la colonne de gauche, sinon tu as une erreur

  20. #20
    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
    Points : 15 543
    Points
    15 543
    Par défaut
    Et si par hasard tu mets Val(UserForm2.text_pourc.Text) ???
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    NoLigne = 28
    NoColonne = 7
    valeur = Val(Right(Cells(NoLigne, NoColonne).Formula, Len(Cells(NoLigne, NoColonne).Formula) - 2))
    pourc = valeur * Val(UserForm2.text_pourc.Text)
    mafeuille.Range("G28:H29") = pourc
    Je n'ai pas testé mais je suppose

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Validation d'une partie d'un XML sur une partie d'un XSD
    Par EJO64 dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 02/02/2015, 09h05
  2. [Toutes versions] Contient en fonction d'une partie de la valeur d'une cellule
    Par esstin dans le forum Excel
    Réponses: 2
    Dernier message: 26/04/2009, 20h26
  3. Réponses: 2
    Dernier message: 24/10/2008, 08h04
  4. sélectionner une partie de la valeur d'une cellule
    Par Yoooo dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 09/10/2008, 16h18
  5. Picklist: comment recuperer une partie de la valeur
    Par mesquest dans le forum Bases de données
    Réponses: 3
    Dernier message: 07/06/2004, 08h54

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