Condition qui ne fonctionne pas

Bonjour,

Voici mon code:

Private Sub Worksheet_Calculate() 
Application.ScreenUpdating = False 
Dim x As Integer, n As Integer, e As Integer 
For x = 3 To 26 
n = Left(Cells(18, x), Len(Cells(18, x)) - 2) 
e = Left(Cells(19, x), Len(Cells(19, x)) - 2) 

If n > e Then 

Feuil2.Cells(18, x).Font.Color = -16777024 

Else 

Feuil2.Cells(18, x).Font.Color = -11489280 

End If 
Next 

Application.ScreenUpdating = False 
End Sub

Mais à chaque fois que la procédure se lance, il me dit : argument ou appel de procédure incorrect,

Je ne comprend pas du tout cette erreur. Moi je part de la ligne 18, qui est la Difference de jour ouvre, sauf que je met un & " j" avec, du coup je me retrouve avec dans la case C18 "4 j" Moi je veux fair si 4 j est plus grand que 10 j, tu met en rouge. Et donc cest pour cela je dois prendre que la partit numérique et voila mon probleme.

Merci de votre aide.

Bonjour,

essaie ainsi (non testé)

Private Sub Worksheet_Calculate() 
Application.ScreenUpdating = False 
Dim x As Integer, n As Integer, e As Integer 
For x = 3 To 26 

if len(cells(18,x))>2 then n = Left(Cells(18, x), Len(Cells(18, x)) - 2) 
if len(cells(19,x))>2 then e = Left(Cells(19, x), Len(Cells(19, x)) - 2) 

If n > e Then 

Feuil2.Cells(18, x).Font.Color = -16777024 

Else 

Feuil2.Cells(18, x).Font.Color = -11489280 

End If 
Next 

Application.ScreenUpdating = False 
End Sub

Bonjour, bonjour !

Il y a plus simple avec la fonction VBA Val

La méthode de h2so4 fonctionne à merveille, je n'ai pas bien compris ton message Marc L, jveux bien savoir quand même.

Mais en tout cas merci de votre réactivité.

bonjour,

ce que marc voulait dire c'est qu'on pouvait faire plus court que ma proposition en utilisant l'instruction val.

qui prend les premiers chiffres d'une cellule pour les convertir en nombre.

Private Sub Worksheet_Calculate() 
Application.ScreenUpdating = False 
Dim x As Integer, n As Integer, e As Integer 
For x = 3 To 26 
 n =val (cells(18,x))
 e =val(cells(19,x))

If n > e Then 

Feuil2.Cells(18, x).Font.Color = -16777024 

Else 

Feuil2.Cells(18, x).Font.Color = -11489280 

End If 
Next 

Application.ScreenUpdating = False 
End Sub

Ahh okai, merci à tout les deux pour vos reponsse.

Ben pourtant rien qu'en lisant l'aide VBA de la fonction Val !

Et puis ce n'est pas difficile de la tester : MsgBox Val("4 j")

Du côté de l'évènement (pas sûr non plus que ce soit le plus approprié …) :

Private Sub Worksheet_Calculate()
    Application.ScreenUpdating = False

    For C& = 3 To 26
        With Cells(18, C)
            .Font.Color = IIf(Val(.Value) > Val(.Offset(1).Value), -16777024, -11489280)
        End With
    Next
End Sub
Rechercher des sujets similaires à "condition qui fonctionne pas"