[VBA] conditions dans une cellule d'Excel

Résolu
Thierry -  
 kero -
Bonjour,

j'ai un souci avec Excel et Visual Basic.

Je souhaite ecrire dans la cellule d'Excel (1,1) une condition, par exemple, =9. J'ai mis la cellule en format texte pour que le = reste affiché.
Je souhaiterai ensuite comparer les valeurs de la cellule (1,2) a cette condition.

J'ai essayé avec toutes sortes de concatenation du genre =if(A1 & B1=true;1;0) mais ca ne marche pas.

Et ca m'embete de faire une macro du style
If cells(1,1)="=9" then....
Ca marche mais c pas tres flexible!!! :)

Si vous avez un idée, une piste, ou meme une direction ou chercher, ce serait sympa.
Merci d'avance

6 réponses

JvDo Messages postés 1978 Date d'inscription   Statut Membre Dernière intervention   859
 
Bonsoir,

Ok, il suffit d'utiliser la fonction EVAL(A2&$A$1) où A1 contient =9, >=9 ou <=0, et A2 contient 10 par exemple.

là, ça retournera FAUX.
si tu mets 9 en A2, ça retournera VRAI

NB : EVAL() est une fonction de la bibliothèque Morefunc (http://xcell05.free.fr/downloads/Morefunc.zip ) de Laurent Longre. Il faut donc l'installer d'abord.

Tu peux également écrire ta propre fonction :

Function evalue(montexte As String) As Boolean
evalue = Evaluate(montexte)
End Function

qui fait la même chose

A+
3
Thierry
 
Ok merci, c pile ce dont j'avais besoin!

Une petite derniere question (un peu part curiosité :))

La fonction evalue définie, n'est pas utilisable comme tel dans Excel. (ecrire dans une cellule, =evalue(B3) ne marche pas).
C'est possible de definir une fonction sous VBA pour l'utiliser sous Excel? Si oui, comment?

A plus
0
JvDo Messages postés 1978 Date d'inscription   Statut Membre Dernière intervention   859
 
Bonsoir,

je ne comprends pas ce que tu veux faire avec VBA mais je peux te dire qu'il suffit que tu utilises Range("A1").value=Range("A2").value ou encore [A1]=[A2] dans tes IF THEN.

remarques :
je ne vois pas pourquoi tu gardes le égal dans ce que tu appelles (à tort) une condition : =9

tu peux rester dans excel en mettant 9 en A1 et tu utilises une formule (en A3 par ex) =Si(A2=A1;"toto";"titi")
cette dernière approche n'est valable que si tu veux mettre une valeur en A3, valeur qui dépend de l'égalité A2=A1 qui elle est la condition de ta formule SI()

A+
0
thierry
 
Bonsoir,

d'abord merci d'essayer de repondre a mon probleme.

En fait, c'est plus compliqué que ca. Je voudrais que l'uitilisateur de la feuille Excel, ne puisse avoir le choix pour remplir le cellule (1,1) qu'entre :
≥9
=9
≤9

Il est donc important que le signe =ou ≤ ou ≥ soit visible. (Pour le probleme du choix j'utilise l'option de Validation de données.)

Mon probleme reside donc dans le fait que je n'arrive pas a utiliser ce signe choisi.

En concatenant, on peut ecrire dans une autre case, la valeur de la cellule (1,2) et la condition.
Par exemple, si la case (1,2) contient 10, on obtiendra 10=9 en cellule (1,3). Et je voudrais que la cellule (1,4) affiche donc FAUX (ou aute chose signifiant l'erreur precedente).

La concatenation n'etait qu'une idée, mais si vous aviez une idée pour que si j'ai toute une liste de valeurs en colonne 2, j'ai dans une colonne autre un resultat de la compraraison avec cette "condition" en cellule (1,1).

Merci d'avance
0
JvDo Messages postés 1978 Date d'inscription   Statut Membre Dernière intervention   859
 
Bonjour,

evalue(montexte As String) As Boolean est bien entendu une fonction à définir dans VBA.

tu colles le code que je t'ai indiqué dans un module de ton classeur.

ensuite seulement tu pourras l'utiliser

A+
0
Thierry
 
Merci

mon probleme est resolu, je sais pas s'il faut changer le statut de la conversation ni comment on le fait. Alors si qlq'un sait qu'il n'hesite pas a le faire:::: :)
0
Micou
 
Bonjour,

pourrai-tu expliquer comment tu mets le format de la cellule en texte. Est-ce par logicielle ou directement dans Excel?

Merci à toi.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
hey
 
bonjour tout le monde,

je voudrais savoir ce qu'on peut faire concretement avec VBA sur excel en finances??
des pistes?

merci
0
kero
 
Concrètement tu peux faire tout ce que peut faire VBA (à toi de savoir programmer un algorithme..), tu créer une fonction (type : Function) que tu appelle dans ta cellule avec les fonctions personnalisée ^^
tout les arguments de ta fonction te seront demandé si tu passe par l'assistant de excel (le petit bouton fx) et tu choisi les cases correspondant a ton argument :)
La conversion de la case choisie en texte est automatique...
0