Traduction d'une formule conditionelle en VBA

GCFRG

XLDnaute Occasionnel
Bonjour, après de long mois d'abscence je vois que ce forum est toujours aussi actif!
Voici mon problème, j'essayes de convertir un formule en code VBA de façon à l'intégrer dans un module.
La premiere fontionne, voici celle qui me pose problème
=SI(OU(J5<=0;J5="");"";J5-P5)
et voici le module que j'ai écrit

D'avance merci a qui m'aidera

Gilbert

Code:
  Dim I As Integer, Déb As Integer, Fin As Integer
    If ActiveWorkbook.Name <> ThisWorkbook.Name Then ThisWorkbook.Activate
    With Sheets("Ventes")
    Déb = 5
    Fin = .Range("a" & .Rows.Count).End(xlUp).Row
        For I = Déb To Fin
        .Cells(Déb, 16).FormulaR1C1 = "=r" & Déb & "c15 * 1.196"
        .Cells(Déb, 17).FormulaR1C1 = "=if(or(r" & Déb & "c10 <=0;" & "r" & Déb & "c10 =""""" & ");"""";" & "r" & Déb & "c16-" & "r" & Déb & "c10)"
        Déb = Déb + 1
    Next
    End With
 

kjin

XLDnaute Barbatruc
Re : Traduction d'une formule conditionelle en VBA

bonsoir,
Code:
For I = Deb To Fin
.Cells(Deb, 16).Formula = "=O" & Deb & "*1.196"
.Cells(Deb, 17).Formula = "=IF(OR(J" & Deb & "<=0,J" & Deb & "=""""" & "),"""",J" & Deb & "-P" & Deb & ")"
Deb = Deb + 1
Next
...ou
Code:
For I = Deb To Fin
.Cells(Deb, 16).Formula = "=O" & Deb & "*1.196"
.Cells(Deb, 17).FormulaLocal = "=SI(OU(J" & Deb & "<=0;J" & Deb & "=""""" & ");"""";J" & Deb & "-P" & Deb & ")"
Deb = Deb + 1
Next
A+
kjin
 

Gareth

XLDnaute Impliqué
Re : Traduction d'une formule conditionelle en VBA

Bonsoir,

Je te propose de tester ceci :
Code:
Sub toto()
ThisWorkbook.Activate
With Sheets("Ventes")
    Déb = 5
    Fin = .Range("a" & .Rows.Count).End(xlUp).Row
    For I = Déb To Fin
        .Cells(Déb, 16).FormulaR1C1 = "=RC[-1]*1.196"
        .Cells(Déb, 17).FormulaR1C1 = "=IF(OR(RC[-7]<=0,RC[-7]=""""),"""",RC[-7]-RC[-1])"
    Déb = Déb + 1
    Next
End With
End Sub

ThisWorkbook.Activate ne necessite pas de test.
Il n'y a pas non plus obligation d'activer le classeur. Tu peux ecrire :
Code:
With ThisWorkbook.Sheets("Ventes")
    Déb = 5
    Fin = .Range("a" & .Rows.Count).End(xlUp).Row
    For I = Déb To Fin
        .Cells(Déb, 16).FormulaR1C1 = "=RC[-1]*1.196"
        .Cells(Déb, 17).FormulaR1C1 = "=IF(OR(RC[-7]<=0,RC[-7]=""""),"""",RC[-7]-RC[-1])"
    Déb = Déb + 1
    Next
End With
End Sub



Edit : bonsoir kjin
 
Dernière édition:

GCFRG

XLDnaute Occasionnel
Re : Traduction d'une formule conditionelle en VBA

Merci à tous les 2 , chacune de vos propositions fonctionne, pour ce qui est de "If ActiveWorkbook.Name <> ThisWorkbook.Name Then ThisWorkbook.Activate",
Il m'arrive d'avoir plusieurs classeurs ouverts, pendant l'exécution de ce code, et pas forcément le bon actif, ceci m'a toujours permis de ne pas écrire intempestivement dans un autre classeur ou de faire planter l'application, mais je vais tester ta proposition
Merci encore Kjin & Gareth

Gilbert
 
Dernière édition:

Discussions similaires

Réponses
8
Affichages
638

Statistiques des forums

Discussions
312 023
Messages
2 084 715
Membres
102 637
dernier inscrit
TOTO33000