Problème de formule

Bonjour, j'ai un soucis au niveau de ma formule. En fait quand je fais ça j'ai un message d'erreur qui me dit incompatibilité de type mais quand je mets un "." à la place de la "," cela fonctionne.

Là j'ai simplifier mon exemple mais j'ai besoin d'utiliser ceci. Savez-vous comment on peut faire ?

Merci

if Application.Evaluate("12" < "15,2") Then
end if

C'est un problème lié au séparateur décimal, le soucis c'est que selon la configuration de l'ordinateur tu peux avoir "," ou "." mais si chez toi c'est "," alors le "." sera considéré comme du texte, et tu te retrouveras à devoir comparer un nombre à du texte.

Tu peux utiliser une fonction de conversion comme Cdbl pour t'en sortir :

Sub test()
text1 = "2,3"
text2 = "2.3"

text1 = CDbl(text1)
text2 = CDbl(text2)

If text1 <= text2 Then
    MsgBox (text1 + text2)
End If
End Sub

C'est un petit code de teste pour que tu puisses voir

Merci pour la réponse. Dans l'exemple, ça me mets une erreur incompatibilité de type quand je veux passer le text2 en CDbl(text2).

Bonjour,

Dans ce cas, rajouter une instruction du type :

Text2 = Replace(Text2,",",".")

Etrange, ça ne me le fait pas à mois pourtant je suis sous Excel 2010...

Pour améliorer la réponse de Pedro on peut tester quel est le séparateur décimal qui est pris en compte et changer en fonction :

separateur = application.decimalseparator
Sub test()
If separateur = "," then
    aremplacer = "."
else
    aremplacer =","
end if

texte1 = Cdbl(replace(texte1, aremplacer, separateur))
texte2 = Cdbl(replace(texte2, aremplacer, separateur))

msgbox(texte1/texte2)
End Sub

Et on peut pas faire un truc comme ça ?

Application.Evaluate(ActiveCell.Offset(0, 0).Value < ActiveCell.Offset(0, 1) = replace(ActiveCell.Offset(0, 1), ".", ",")

Bonjour,

mais tu as quoi dans ces cellules ?

Des nombres en texte ou des vrais nombres ?

Sinon ce qui devrait fonctionner dans tous les cas de figure à condition qu'il n' y ait pas en plus des espaces à supprimer :

Val(Replace(ActiveCell.Offset(0, 0).Value, ",", ".")) < Val(Replace(ActiveCell.Offset(0, 1).Value, ",", "."))

eric

Edit : j'ajouterai pourquoi Evaluate ??? Vba sait faire des tests heureusement

bonjour à tous

avant de se jeter sur des solutions, exigeons un fichier.

Voici le fichier avec le code.

En fait dès qu'il y a des virgule, mon code bloque.

merci Eriiic mais en fait tu devrais mieux comprendre avec mon exemple, du coup la formule avec val ne fonctionne pas car mon opérateur est stocké dans une variable.

6fichier.xlsm (16.71 Ko)

re

à quoi te sert le code ? Dans un fichier bien organisé en colonnes on fait des sommes, des tris des filtres des TCD des garphiques des extractions...

peut-on s'en passer ?

re

à quoi te sert le code ? Dans un fichier bien organisé en colonnes on fait des sommes, des tris des filtres des TCD des garphiques des extractions...

peut-on s'en passer ?

J'aurais besoin de le faire avec le code mais si vous me dites que c'est possible autrement. En fait je veux mettre en rouge les cellules quand la valeur ne correspond pas à la cible (soit < et > ou =, cela dépend)

arf !

une MFC suffira

un peu plus d'explications sur la cellule à mettre en rouge et sur le test exact pour décider

Attention il ne dit pas que ça semble impossible, il n'en voit pas l'utilité, et après avoir vu le fichier, je dois avouer ne pas comprendre non plus, pourquoi tiens-tu absolument à passer par du code? C'est parce que tu essayes d'apprendre le VBA?

Si c'est bien ce que je pense que tu fais avec ton code, alors tu peux t'en sortir avec la formule que je te donne en exemple :

La formule compte le nombre de nombres qui respectent l'opérateur donné, et compare au nombre de nombres dans la plage, si c'est le même (en clair tous les nombres comptés sont également comptés comme respectant l'opérateur), alors on renvoie "oui", sinon on renvoie "non"

J'ai mis en jaune les cellules qui doivent être colorés.

Par exemple pour la première ligne, on voit que les valeurs doivent être supérieur à 100 du coup on colorie tout ce qui est au dessus de 100 en l’occurrence on colore la cellule E2 car elle est à 120

re

à quoi te sert le code ? Dans un fichier bien organisé en colonnes on fait des sommes, des tris des filtres des TCD des garphiques des extractions...

peut-on s'en passer ?

J'aurais besoin de le faire avec le code mais si vous me dites que c'est possible autrement. En fait je veux mettre en rouge les cellules quand la valeur ne correspond pas à la cible (soit < et > ou =, cela dépend)

Ah ben dans ce cas une mise en forme conditionnelle avec une formule peut suffire!

Je te laisse voir ça:

J'ai laissé la formule dans une cellule en dessous pour que tu vois ce que ça fait

Et pour mon information, c'est possible de le faire en vba ? Si oui, comment peut-on faire ?

Utilises l'enregistreur de macro et regarde le code produit lorsque tu changes la couleur de remplissage d'une cellule, ou de son contenu. Tu peux ensuite t'en inspirer pour changer la couleur dans une macro selon certaines conditions.

C'est ce que j'ai fait mais je bloquais avec mon incompatibilité de type.

merci Eriiic mais en fait tu devrais mieux comprendre avec mon exemple, du coup la formule avec val ne fonctionne pas car mon opérateur est stocké dans une variable.

je suggère que tu remplace le < de mon exemple par ce qui te plait.

Par exemple ... & ta_variable &...

Mais c'est vrai qu'une MFC suffit, et il y aurait tellement à dire sur ton code. Une usine à gaz à la shadok pour peu

"Je pompe donc je suis" c'est bien ça? Ce n'est pas de mon époque c'est pour ça que j'ai un doute

Cette devise marche aussi pour les cancres à l'école (mais plutôt que de pomper à proprement parler, ça pompe sur le voisin)

Rechercher des sujets similaires à "probleme formule"