XL 2016 VBA condition

  • Initiateur de la discussion Initiateur de la discussion Fredox
  • 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 !

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...
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:
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:
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
 
- 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

Réponses
2
Affichages
427
Réponses
4
Affichages
440
Réponses
6
Affichages
434
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
371
  • Question Question
XL 2019 code vba
Réponses
17
Affichages
2 K
Réponses
32
Affichages
1 K
Retour