Message d'erreur sur code VBA

Bonjour le forum,

Pour masquer des lignes en fonction du contenu d'un ensemble de cellules, j'ai écris le code suivant (je voudrais que les lignes 121 à 223 soient masquées, si les cellules (H121:J220) sont vides) :

If Range("H121:J220") = 0 Then Range("121:223").EntireRow.Hidden = True

Et lorsque la macro s'exécute j'ai un message d’erreur du type "Erreur d'exécution '13' : Incompatibilité de type".

Quelqu'un peut-il me donner la solution.

Merci

Bonjour

Pour que le code reconnaisse qu'elles sont toutes vides, il faudrait les parcourir une à une.

Suggestion: Il me parait plus simple de tester

If Application.Sum(Range("H121:J220")) = 0 Then Range("121:223").EntireRow.Hidden = True

Cordialement

Bonjour,

Il te faut tester si elles contiennent une valeur ou pas mais pour ça tu ne peux pas le faire directement comme ça, il te faut soit parcourir la plage et utiliser un drapeau que tu mais à "True" dès qu'une cellule rencontrée contient une valeur puis en fin de boucle, tu teste sa valeur et agit en conséquence soit utiliser une fonction comme CountIf() en Français NB.SI() pour savoir si toutes les cellules sont vides ou non :

Rows("121:223").EntireRow.Hidden = Application.CountIf(Range("H121:J220"), "*") = 0

si la comparaison de "Application.CountIf(Range("H121:J220"), "*") = 0" retourne Vrai (True) aucune cellule contient une valeur donc on cache. Si tu avais voulu le contraire, il suffisait d'utiliser l'opérateur Not de cette façon :

Rows("121:223").EntireRow.Hidden = Not Application.CountIf(Range("H121:J220"), "*") = 0

en utilisant la seconde ligne de code, tu affiche à nouveau tes lignes à condition qu'elles soient toutes vides

Bonjour Amadéus, bonjour Theze,

Merci beaucoup pour vos réponses, cela m'a bien aidé.

Très bonne journée.

Rechercher des sujets similaires à "message erreur code vba"