Fonction VBA qui ne prend pas en compte ma condition IF

Bonsoir à tous,

Alors voila cette fois je veux construire une fonction qui me calcule le chiffre d'affaire prévisionnel de plusieurs entreprises.

J'ai une condition qui dit que si certaines cellules sont en gras alors la fonction fait CA * 0.8 , autrement elle fait CA * 1.2

Mais quand je teste ma fonction elle marche mais elle fait sans cesse *1.2 qu'importe les cellules en gras ou non.

Quelqu'un a-t'il une solution svp ?

Par avance Merci !

Voici mon code :

Function previsionCA(CA As Integer) As Double
Dim bonus As Integer

If CA > 14456.9 Then
bonus = 10000
Else
bonus = 2000
End If

For i = 4 To 43
If Cells(i, 5).Font.Bold = True Then
previsionCA = (CA * 0.8) + bonus
Else
previsionCA = (CA * 1.2) + bonus
End If
Next

End Function

bonjour,

previsionCA reçoit le résultat en fonction de la dernière cellule inspectée par la boucle soit E43, si elle n'est pas en bold ce sera bonus * 1.2.

Autant dire que la boucle ne sert à rien, teste directement ta cellule E43.

si tu veux un bonus * 1.2 sauf si une cellule est en bold essaie ceci, En outre je définirais le paramètre CA en double, histoire de ne pas être limité à un nombre entier <32768. J'ai ajouté un displayformat dans le test pour le cas où le gras serait le résultat d'une MFC (mise en forme conditionnelle).

Function previsionCA(CA As Double) As Double
    Dim bonus As Double

    If CA > 14456.9 Then
        bonus = 10000
    Else
        bonus = 2000
    End If
    previsionCA = (CA * 1.2) + bonus
    For i = 4 To 43
        If Cells(i, 5).DisplayFormat.Font.Bold = True Then
            previsionCA = (CA * 0.8) + bonus
            Exit For
        End If
    Next

End Function

Merci pour ta réponse ! J'ai essayé avec ton code mais cette fois ca fait l'inverse !

Tout est multiplié par 0.8...

En fait non ca ne fait pas a chaque fois *0.8 mais ca ne respecte pas la condition quand meme parfois oui et parfois non... Je comprends rien

Bonjour,

En fait non ca ne fait pas a chaque fois *0.8 mais ca ne respecte pas la condition quand meme parfois oui et parfois non... Je comprends rien

c'est que je n'ai pas compris ce que tu essaies de faire ou/ni l'organisation de ton classeur ou/ni la manière dont tu utilises la fonction.

Merci de mettre ton fichier (anonymisé si nécessaire) avec ses macros.

D'accord, voici mon fichier. Il n'y a rien de confidentiel. Merci à toi

La fonction qui pose problème est dans le module Pronostics

bonsoir,

une correction de ta fonction. Mais selon, Excel peut faire cela sans passer par une fonction personnalisée.

Function previsionCA(CA As Double) As Double
    Dim bonus As Double

    If CA > 14456.9 Then
        bonus = 10000
    Else
        bonus = 2000
    End If

    If Cells(Application.Caller.Row, 5).Font.Bold = True Then
        previsionCA = (CA * 0.8) + bonus
    Else
        previsionCA = (CA * 1.2) + bonus
    End If

End Function
Rechercher des sujets similaires à "fonction vba qui prend pas compte condition"