Macro compter cellules non vides colonne visibles

Résolu
Donou12 Messages postés 7 Statut Membre -  
Donou12 Messages postés 7 Statut Membre -
Bonjour à tous !

Je tiens à préciser pour ma défense que VBA je connais un peu mais sans plus ^^

J'essaie de compter le nombre de cellules non vides sur les colonnes que je n'ai pas masqué. En effet les colonnes peuvent-être masquées/affichées via une autre macro, c'est pour présenter une synthèse.

Donc pour ce problème, la fonction sous-total 109 ne fonctionne pas (car masquage en colonnes)
J'ai donc pu trouver une macro qui fonctionne parfaitement pour additionner seulement les données des colonnes visibles en créant une nouvelle formule intitulée SommeVisibles (macro que j'utilise) :

Function SommeVisibles(champ As Range)
Application.Volatile
t = 0
For Each c In champ
If Not c.EntireRow.Hidden And Not c.EntireColumn.Hidden Then
t = t + c.Value
End If
Next c
SommeVisibles = t
End Function


Celle-ci fonctionne avec une macro private_sub (pourquoi?):

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Calculate
End Sub


J'aimerais avoir la même pour compter les cellules non vides dans une colonne, j'ai essayé ça mais j'ai une erreur #VALEUR

Function NbVisibles(champ As Range)
Application.Volatile
t = 0
For Each c In champ
t = t + c.CountA
Next c
NbVisibles = t
End Function


Merci, j'espère avoir été assez clair :D

5 réponses

  1. thev Messages postés 2007 Date d'inscription   Statut Membre Dernière intervention   722
     
    Essayer ceci

    Function NbVisibles(champ As Range)
    Dim cell As Range

    Application.Volatile
    NbVisibles = 0
    For Each cell In champ
    If Not cell.EntireRow.Hidden And Not cell.EntireColumn.Hidden _
    And Not IsEmpty(cell) Then NbVisibles = NbVisibles + 1
    Next cell

    End Function

    --
     
    1
    1. Donou12 Messages postés 7 Statut Membre
       
      Un très grand merci à toi Thev

      Ca parait tellement simple quand on a la solution!!

      Je te souhaite une excellente journée, t'es le best

      Donou
      0