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.
Version imprimable
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.
Code:
1
2 if Range("G25") > 520 then range("G25") = range("G25") *(1 * 15/100)
Ce serait plutot avec un "-"Citation:
Envoyé par bbil
non ?Code:
1
2 if Range("G25") > 520 then range("G25") = range("G25") *(1 - 15/100)
Je n'ai pas compris ta question :
parce que tu nous donnes un exemple où ta cellules ne contient que des chiffres.Citation:
comment calculer la valeur d'une cellule ou il n'y a pas 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.
oui :oops:Citation:
Envoyé par marsupilami34
en fait le superieur à > fait partie de la cellule. donc comment calculer que le chiffre 520 et ne pas tenir compte du >
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.
Il faut faire comme le dit Cédric600 je penseCitation:
Envoyé par cedric600
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.
Ben en fait si tu a uniquement le caractère > suivi d'un espace tu peux toujours écrire
Code:
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)
merci je vais essayer ceci, je vous tient au courant.
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
Tu veux faire ça comment ? en VBA ou dans une formule ?
Dans une formule, ça donnerait un truc comme ça :
où dans G3 j'ai "> 520" avec un espace entre > et 520 et dans F3 une valeurCode:=SI(CNUM(DROITE(G3;NBCAR(G3)-2))>F3;VRAI;FAUX)
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 :lol:
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...
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 :
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.Code:Right(pourc, 3) = mafeuille.Range("G28:H29") * UserForm2.text_pourc.Text
Je reprends au début :
Tu as "> 520" dans une cellule
Tu veux pouvoir lire 520
Tu fais
Ainsi, si tu as 1013 au lieu de 520, que tu as bien un espace entre ">" et ton nombre, tu liras toujours ton nombre.Code:
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
Si ça ne fonctionne pas je quitte le forum
merci beaucoup ca marche, mais si la cellule est fusionnée il faut changer quelque chose dans le code non?
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:
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
C'est une blague ? :mouarf:
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 ;)
Et si par hasard tu mets Val(UserForm2.text_pourc.Text) ???
Je n'ai pas testé mais je suppose :aie:Code:
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