Comment tester en vba la valeur d'une cellule Excel issue d'une formule

Résolu/Fermé
jean-paul - 7 févr. 2021 à 00:07
 jean-paul - 7 févr. 2021 à 13:05
Bonjour,

je souhaite faire une macro en vba afin de modifier la hauteur de lignes du tableau Excel en fonction du résultat.

je m'explique
si la formule de la cellule B3 a pour résultat 0 alors la hauteur de la ligne 3 sera 0
si la formule de la cellule B3 a un résultat >0 alors la hauteur de la ligne 3 sera 15
L'idée étant de cacher les lignes ayant pour résultat 0

J'utilise la macro suivante

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Nb As Integer
For i = 3 To 66
If Target.Row = i Then
Nb = Cells(i, 2).Value
If Nb = 0 Then
Target.Rows.RowHeight = 15
ElseIf Nb > 0 Then
Target.Rows.RowHeight = 30
End If
End If
Next i
End Sub


Cette macro fonctionne avec des chiffres dans les cellules B3 à B66 mais dès que je remplace les chiffres par des formules ca ne fonctionne plus.

Merci par avance pour votre aide
A voir également:

3 réponses

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
7 févr. 2021 à 08:44
Bonjour,

Quelle genre de formules?
Chez moi avec une formule simple et le .Value ca marche
1
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 209
Modifié le 7 févr. 2021 à 09:10
Bonjour,

ta formule doit retourner 0 (nombre) et non "0" (chaine)
Et si tu lis 0 le contenu réel peut être 0.00000000000001 <>0. Dans ce cas utiliser un arrondi
eric

1
Merci à vous deux pour vos réponses qui m'ont permis de vérifier que ma macro est correct.
La formule que j'utilise dans mes cellules me sert à compter le nombre de chaque lettres et chiffres utilisés dans des chaines de caractères.

=SOMMEPROD(NBCAR($B$1:$B$2)-NBCAR(SUBSTITUE($B$1:$B$2;A4;"")))

C'était un problème de rafraichissement que j'ai résolu en créant une macro qui copie une cellule vide et la colle dans une cellule vide de chaque lignes .
Je sais ce n'est pas très académique mais c'est la solution que j'ai trouvé qui fonctionne


Cordialement
J-P
0