Fonction SI ESTERREUR en vba

peternewman007

XLDnaute Nouveau
Bonjour,

Je souhaite transformer une fonction en vba.
Voici la fonction :
=SI(ESTERREUR(+AM1886/RECHERCHEV($A1886;$A$3847:$AP$3942;39;FAUX));0;+AM1886/RECHERCHEV($A1886;$A$3847:$AP$3942;39;FAUX))

Et voici mon essai en vba :
Code:
If IsError(Cells(target.Row, 39) / Application.WorksheetFunction.VLookup(Cells(target.Row, 1).Value, Range("A:AP"), 39, False).Value) Then
    Cells(target.Row, 41) = 0
Else
    Cells(target.Row, 41) = Cells(target.Row, 39) / Application.WorksheetFunction.VLookup(Cells(target.Row, 1).Value, Range("a:ap"), 39, False)
End If

Qu'est-ce qui cloche?

Merci d'avance,

Peter
 

Tibo62

XLDnaute Occasionnel
Re : Fonction SI ESTERREUR en vba

Bonjour si tu veux simplement transcrire ta formule en VBA utilise l'enregistreur de macro comme ceci :

"=IF(ISERROR(+R[1884]C[37]/VLOOKUP(R[1884]C1,R3847C1:R3942C42,39,FALSE)),0,+R[1884]C[37]/VLOOKUP(R[1884]C1,R3847C1:R3942C42,39,FALSE))"
 

Pierrot93

XLDnaute Barbatruc
Re : Fonction SI ESTERREUR en vba

Bonjour,

comme conseillé par Tibo, utilise l'enregistreur de macro sur la première ligne, et applique ensuite le code donné sur la plage de cellule en question... nous pas de fichier pour tester...

bon après midi
@+
 

peternewman007

XLDnaute Nouveau
Re : Fonction SI ESTERREUR en vba

Bonjour,

Ok, je suis parvenu à le faire fonctionner mais maintenant je cherche le moyen de l'actualiser une fois que je modifie une ligne.
Je m'explique..

Lorsque je suis sur ma ligne cela fonctionne mais lorsque je remplis une ligne en-dessous, la ligne sur laquelle je suis s'adapte aux lignes précédentes mais la ligne précédente ne se met pas à jour.

Comment pourrais-je faire?

Merci,

Peter
 

peternewman007

XLDnaute Nouveau
Re : Fonction SI ESTERREUR en vba

Oui je suis bien en calcul automatique.

Voici le code :

Code:
If target.Column > 7 And target.Column < 40 Then
    Application.EnableEvents = 0
        If Cells(target.Row, 7) <> "oui" Then
            Cells(target.Row, 40) = 0
        ElseIf Cells(target.Row, 2) = "Chantier" Then
            If Cells(target.Row, 3) <> "Tâches_générales_réparties" And Cells(target.Row, 3) <> "Tâches_S.A.A._réparties" And Cells(target.Row, 3) <> "Tâches_Prod_réparties" Then
                If Cells(target.Row, 4) <> "Suivi - 1" And Cells(target.Row, 4) <> "Achat - 5" Then
                    Cells(target.Row, 40) = Cells(target.Row, 39).Value + (Range("AR370") * (Cells(target.Row, 39) / Range("AR371")))
                ElseIf Cells(target.Row, 4) = "Suivi - 1" Then
                    Cells(target.Row, 40) = Cells(target.Row, 39).Value + (Range("AR367") * (Cells(target.Row, 39) / Range("AR368"))) + (Range("AR370") * (Cells(target.Row, 39) / Range("AR371")))
                ElseIf Cells(target.Row, 4) = "Achat - 5" Then
                    Cells(target.Row, 40) = Cells(target.Row, 39).Value + (Range("AR366") * (Cells(target.Row, 39) / Range("AR369"))) + (Range("AR370") * (Cells(target.Row, 39) / Range("AR371")))
                End If
            End If
        ElseIf Cells(target.Row, 2) = "Bureau_de_dessin" Then
            If Cells(target.Row, 3) <> "Tâches_Bureau_de_dessin_réparties" Then
                Cells(target.Row, 40) = Cells(target.Row, 39).Value + (Range("AR372") * (Cells(target.Row, 39) / Range("AR373")))
            End If
        ElseIf Cells(target.Row, 2) = "Promotion" Then
            If Cells(target.Row, 3) <> "Tâches_promo_réparties" Then
                Cells(target.Row, 40) = Cells(target.Row, 39).Value + (Range("AR374") * (Cells(target.Row, 39) / Range("AR375")))
            End If
        ElseIf Cells(target.Row, 2) = "Soumission" Then
            If Cells(target.Row, 3) <> "Tâches_soum_réparties" Then
                Cells(target.Row, 40) = Cells(target.Row, 39).Value + (Range("AR376") * (Cells(target.Row, 39) / Range("AR377")))
            Else
                Cells(target.Row, 40) = Cells(target.Row, 39).Value + 0
            End If
        End If
    Application.EnableEvents = 1
End If

Où placerais-tu le .calculate?

Peter
 

Discussions similaires

Statistiques des forums

Discussions
311 540
Messages
2 080 523
Membres
101 234
dernier inscrit
Layani89