VBA bug formule if

Bonjour,

je voudrai faire un sub avec cette synthaxe avec un if mais je vois pas pourquoi ca beug

merci d'avance :)

Sub risque_()

Dim premiere2 As Long
premiere2 = Range("T" & Rows.Count).End(xlUp).Row + 1
Dim i As Long
Dim last As Long
last = Range("R" & Rows.Count).End(xlUp).Row

  For i = premiere2 To last
    With Sheets("Risque Client")
      .Range("t" & i).Borders.Value = 1
      If .Cells(i, 7) <= 365 Then .Cells(i, 20) = .Cells(i, 19) Else .Cells(i, 7) = 0
    End With
  Next
End Sub

Bonjour,

Juste avec le code et "ça bug" on ne peut pas faire grand chose, j'ai vérifié la syntaxe et tout me semble ok, peut-être que tu pourrais nous joindre un fichier pour qu'on puisse tenter de débuguer ton code?

vba

Merci de ta réponse :) je ne peux malheureusement pas joindre de fichier. Je voudrai imbriquer un if avec la synthaxe du code précédant dans la colonne T.

Si les données de la colonne g (Time to mat) sont inférieur à 365 donc mettre la valeur de la S (Risque maxi total réel EUR) ou alors mettre 0.

Hum si je regarde ton tableau ta première ligne sera la 17 et la dernière la 16, la boucle ne doit pas trop aimer ça, c'est potentiellement ta source d'erreur.

Tu pourrais au moins nous dire à quelle ligne ça plante? quelles sont les valeurs des variables sur la ligne?

Tu as raison j'aurai du l'indiquer.

Le code se plante au IF. J'ai essayé de placet le if après le end with en enlevant les point de Cells. le sub ne beug pas mais la formule s'execute dans le vide :/

dans la colonne G ligne 17 la valeur est :195 par exemple

dans la colonne S ligne 17 la valeur est 200 par exemple

Désolé de t'embêter avec ma non précision je maitrise pas encore le règlement du forum

Pas de souci, je ne connais pas totalement le règlement non plus, c'est plus des bonnes pratiques pour pouvoir nous aider à t'aider on va dire, c'est vrai que le titre parlait d'un bug sur if donc j'aurais pu trouver où c'était avec ça.

De ce que je vois sur ton code du if...

If .Cells(i, 7) <= 365 Then .Cells(i, 20) = .Cells(i, 19) Else .Cells(i, 7) = 0

La partie en orange est celle qui pourrait buguer d'après moi, est-ce que tu as une erreur qui te dit "incompatibilité de type"? l'affectation des valeurs sur la ligne me semble bonne, d'autant que si ton i est supérieur à 1, les Cells devraient être ok, il ne reste que le test qui pourrait ne pas marcher.

Par exemple si tu as:

image

Ce qui va créer un bug c'est le fait de tenter de comparer du texte non convertible en nombre à un nombre, quand tu rencontres l'erreur, quelle est la valeur de .Cells(i,7)? As-tu bien le même message d'erreur que moi? il donne généralement une bonne piste. Pour avoir la valeur de .Cells(i,7) tu peux passer la souris dessus ou rajouter un espion en mettant Sheets("Risque Client").Cells(i, 7) pour l'espion, si tu mets seulement .Cells(i,7) VBA ne comprendra pas le contexte.

En fin de compte j'ai changer la colonne pour last j'ai mis g au lieu de R et cela fonctionne merci de ta réponse et de ton implication.
Désolé encore pour la précision :)

Donc c'est bien ce que j'avais relevé avec la ligne 16 et 17, ta colonne R était vide après la ligne 16 du coup ça ramenait à ce numéro de ligne pour ta boucle, ça voulait sûrement comparer ton en-tête qui est du texte à 365, générant ton erreur.

Content que ce soit débugué, bonne journée!

Rechercher des sujets similaires à "vba bug formule"