Fonction Si en VBA

Résolu/Fermé
kehd - 20 mai 2014 à 17:21
 Kehd - 21 mai 2014 à 15:52
Bonjour,
Je veux transcrire la formule suivante en VBA

Accueil!S39 = SI(Calculs!S165>0;Calculs!S165;SI(Calculs!S164>0;Calculs!S164;SI(Calculs!S163>0;Calculs!S163; SI(Calculs!S162>0;Calculs!S162; SI(Calculs!S161>0;Calculs!S161; SI(Calculs!S160>0;Calculs!S160; SI(Calculs!S159>0;Calculs!S159; SI(Calculs!S158>0;Calculs!S158; SI(Calculs!S158>0;Calculs!S158;Calculs!S159)))))))))

Le but est de copier et coller la cellule S165 de la feuille "Calculs" dans la cellule J39 de la feuille "Accueil" avec la condition suivante:

Si S165 >0 alors on copie S165 sinon la cellule au dessus c-a-d S164
tant que la cellule à copier n'est pas supérieure à 0 le scenario continue jusqu'à la cellue S15.

Merci de me venir en aide

2 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 21/05/2014 à 09:02
bonjour,

Option Explicit
Sub egal_si()
Dim lig As Byte
Application.ScreenUpdating = False
With Sheets("calculs")
For lig = 165 To 15 Step -1
If .Cells(lig, "S") > 0 Then
Sheets("accueil").Range("J39") = .Cells(lig, "S")
Exit Sub
End If
Next
Sheets("accueil").Range("J39") = .Range("S159")
End With
End Sub

Michel
0
Merci à tous ça marche, le problème est resolu
0
bolobo46 Messages postés 128 Date d'inscription vendredi 26 juillet 2013 Statut Membre Dernière intervention 1 août 2015 6
20 mai 2014 à 18:46
Il suffit d'utiliser l'alternative anglaise du si qui est IF.
A chaque SI, tu met IF et normalement, cela devrait marcher.
Dis-moi ce que cela donne :)
-1