Nombre stocké sous forme de texte

Bonjour à tous,

Ceci est mon premier post, je vais essayer d'expliquer mon problème le plus clairement possible.

Je fais une comparaison de deux cellules (qui sont sous format numérique nombre dans l'onglet "Accueil"+"Nombre" liste déroulante)

Cependant lorsque je compare avec ce code très simple

            If Cells(i, ColonneEpMesuree) >= Cells(i, ColonneEpTheorique) Then
                Cells(i, ColonneEpMesuree).Interior.ColorIndex = 43
            Else
                Cells(i, ColonneEpMesuree).Interior.ColorIndex = 45
            End If

Voila le résultat:

image

Les cellules qui relèvent des erreurs sont celles qui comparent une cellule avec le nombre stocké sous forme de texte et une avec le nombre stocké sous forme de nombre.

Et je n'arrive pas a enlever cette erreur en Vba pour intégrer dans mon code. J'ai essayé d'intégrer ce bout de code avant la comparaison mais sans succés

    Columns("AP:AQ").Select
    Selection.NumberFormat = "0.00"

Pouvez vous m'aider s'il vous plait ?

Bonjour

L'habit ne fait pas le moine : le format n'est qu'un habillage et ne change pas le type de la donnée

Voit CInt ou CDbl ou CLng selon le besoin

Pouvez vous m'aider a l'intégrer s'il vous plait?

J'ai une incompatibilité de type quand je fais :

            If CSng(Cells(i, ColonneEpMesuree).Value) >= CSng(Cells(i, ColonneEpTheorique).Value) Then
                Cells(i, ColonneEpMesuree).Interior.ColorIndex = 43
            Else
                Cells(i, ColonneEpMesuree).Interior.ColorIndex = 45
            End If

RE

N'y a t'il pas des espaces ou autre caractère en plus des chiffres qui empêche la conversion ?

Non du tout

Quand je met ce code la il ne converti pas je pense, il me dit qu'il y a une incompatibilité de type et me fait un debogage

If CSng(Cells(i, ColonneEpMesuree).Value) >= CSng(Cells(i, ColonneEpTheorique).Value) Then

RE

En déboguage, mets un espion pour voir ce que donnent

Cells(i, ColonneEpMesuree).Value)
Cells(i, ColonneEpTheorique).Value
et 
CSng(Cells(i, ColonneEpMesuree).Value)
CSng(Cells(i, ColonneEpTheorique).Value)

J'ai testé et chez moi cela fonctionne même avec des espaces mais on n'a pas ton fichier pour voir ce qui cloche...

Je ne trouve vraiment pas,

Je vous joins mon fichier du coup si vous pouvez m'aider. L'onglet "Synthese_Physique" est la ou il y a le test. J'ai mis dans le "Module 2" uniquement le code nécessaire

Le mot de passe du code est "MacroDepot"

Merci de votre aide

RE

Tu as des textes comme "Non vérifiable" donc non convertissable en numérique

Sub Macro1()
'
'Variables nombre de lignes et colonnes
nbligne = ThisWorkbook.Worksheets("Synthese_Physique").Range("A1").End(xlDown).Row
nbcolonne = ThisWorkbook.Worksheets("Synthese_Physique").Cells(1, Columns.Count).End(xlToLeft).Column
'
ColonneEpTheorique = 42
ColonneEpMesuree = 43
'Epaisseur mesurée par le bureau de contrôle
'
    For i = 2 To nbligne
    If Cells(i, ColonneEpMesuree).Value <> "" And Cells(i, ColonneEpTheorique).Value <> "" And _
        IsNumeric(Cells(i, ColonneEpMesuree).Value) And IsNumeric(Cells(i, ColonneEpTheorique).Value) Then
            If CSng(Cells(i, ColonneEpMesuree).Value) >= CSng(Cells(i, ColonneEpTheorique).Value) Then
                    Cells(i, ColonneEpMesuree).Interior.ColorIndex = 43
            Else
                    Cells(i, ColonneEpMesuree).Interior.ColorIndex = 45
            End If
        End If
    Next i
'
'Fin Epaisseur mesurée par le bureau de contrôle
End Sub

Merci c'était ça !

Exactement même soucis mais différente colonne, cette fois je n'ai rien d'autres comme valeur.

Est ce que vous pourriez me dire ici pourquoi le 220 au milieu n'est pas pris en compte alors que les autres oui ?

Bonjour

Rien qu'en ouvrant le fichier on voit l'alerte comme quoi ce sont des nombres stockés sous forme de texte et 220 fait partie des 3 seuls nombres de la colonne : tout marche à l'envers dans ta logique...

Ton select case ne fonctionne pas correctement car tu utilise une virgule au lieu d'un point : 3 To 5.99 et non 3 To 5, 99

Par ailleurs il est inutile de spécifier 2 bornes : <6 puis <7 etc suffirait puisque les conditions sont traitées une seule fois et dans l'ordre

Rechercher des sujets similaires à "nombre stocke forme texte"