XL 2016 VBA condition

Fredox

XLDnaute Occasionnel
Bonjour,

J'ai fais ce code afin de calculer dans K10 "J10 diviser par 12", si C10 est différent de ""
J'aimerais que cette opération de répète la la ligne du dessous aux memes conditions (dans K11 "J11 /12", et ainsi de suite tant qu'il y a un contenu en colonne C

VB:
Sub test()
If Range("C10") <> "" Then
Range("K10").Value = Range("J10") / 12 & " /an"
End If
End Sub

Possible d'avoir de l'aide ?
Il est possible de limiter à 100 lignes si on le souhaite, j'avais penser à la fonction next, mais sans idée précise.

Merci
 
Solution
Bonjour
VB:
Range("K10").Value = iif(Range("C10").value = "","",Range("J10").value / 12 & " /an")
et donc, avec une variable n = la ligne --->>
VB:
Range("K" & n ).Value = iif(Range("C" & n ).value = "","",Range("J" & n) .value/ 12 & " /an")
Sans préjudice de ce qu'il est un peu abusif d'utiliser vba là où une simple formule excel suffirait.
J'appelle par ailleurs ton attention sur le fait qu'il est maladroit d'ajouter, comme tu le fais, du texte réel (ton " /a") qui compliquerait énormément l'utilisation ultérieure de cette donnée dans des expressions conditionnelles, etc ...
Alors que Excel te permet de donner à ta cellule un format spécialisé, lequel a pour effet d'afficher avec texte ajouté, mais de conserver la valeur...

jmfmarques

XLDnaute Accro
Bonjour
VB:
Range("K10").Value = iif(Range("C10").value = "","",Range("J10").value / 12 & " /an")
et donc, avec une variable n = la ligne --->>
VB:
Range("K" & n ).Value = iif(Range("C" & n ).value = "","",Range("J" & n) .value/ 12 & " /an")
Sans préjudice de ce qu'il est un peu abusif d'utiliser vba là où une simple formule excel suffirait.
J'appelle par ailleurs ton attention sur le fait qu'il est maladroit d'ajouter, comme tu le fais, du texte réel (ton " /a") qui compliquerait énormément l'utilisation ultérieure de cette donnée dans des expressions conditionnelles, etc ...
Alors que Excel te permet de donner à ta cellule un format spécialisé, lequel a pour effet d'afficher avec texte ajouté, mais de conserver la valeur intacte à d'autres fins. Il serait encore mieux de donner tout simplement un titre explicite à la colonne (genre "machin annuel") qui supprime la nécessité d'un " /an à chaque donnée).
 
Dernière édition:

Challama

XLDnaute Nouveau
Tu peux utiliser la fonction loop
Tant que la cellule de la colonne K est pleine, l'operation se répétera.

Range("C10").Select
Do Until IsEmpty(ActiveCell)

If Cells(ActiveCell.Row, "C") <> "" Then
Cells(ActiveCell.Row, "K").Select
Cells(ActiveCell.Row, "K").Value = Cells(ActiveCell.Row, "J").Value / 12 & " /an"
ActiveCell.Offset(1, 0).Select
Cells(ActiveCell.Row, "C").Select
Else
End If
Loop
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Bonsoir le fil

Juste pour varier les plaisirs ;)
VB:
Sub Marine(Optional Yellow) '-< même pas honte ;-)
Dim dL&: dL = Cells(Rows.Count, 3).End(3).Row - 9
[K10].Resize(dL).FormulaR1C1 = "=REPT(ROUND(RC10/12,2)&"" /an"",RC3<>"""")"
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 493
Messages
2 088 956
Membres
103 990
dernier inscrit
lamiadebz