Traduction d'une formule conditionelle en VBA

  • Initiateur de la discussion Initiateur de la discussion GCFRG
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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
 
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:
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:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

N
  • Question Question
Réponses
2
Affichages
1 K
nimbus le truand
N
Retour