Question sur l'application.worksheetFunction

bonjour , j'ai une toute petite question sur l'application.worksheetFunction..

est ce que

Application.WorksheetFunction.CountA(Range("c26:g26")) > 0

dans une procédure veut dire que la plage c26:g26) contient des données ?

si j'ecris

 Application.WorksheetFunction.CountA(Range("c26:g26")) =0

dans une procedure pour dire que ma plage ne contient aucune donnée ,est ce correct ?

Merci pour vos réponses

ApplicationWorksheetFunction indique que la commande qui suit est une commande spécifique à Excel (n'oublie pas que le Visual Basic est un langage qui n'est pas spécifique à Excel uniquement)

ApplicationWorksheetFunction.CountA en VBA est l'équivalent de NB.SI pour les formules... cete fonction compte donc les cellules non vides (attention : une formule dont la valeur est "" n'est pas considérée comme une cellule vide par cette commande) d'une plage.

ApplicationWorksheetFunction.CountA permet aussi de compter le nombre de valeurs contenues dans une variable comme dans l'exemple ci dessous.

Sub test()
aa = Range("A1:E1")
zz = Application.WorksheetFunction.CountA(aa)
MsgBox "La plage A1:E1 contient " & zz & "éléments."
End Sub
    Application.WorksheetFunction.CountA(Range("c26:g26")) > 0

cette ligne de code est incomplète. Je pense qu'on cherche à vérifier si la plage C26:G26 est vide ou non.

voici ce que ça pourrait donner

Dim aa As Byte
aa = Application.WorksheetFunction.CountA(Range("c26:g26"))
    If aa > 0 Then
    MsgBox "La plage C26:G26 contient " & aa & "élément(s)."
    Else
    MsgBox "La plage C26:G26 est vide."
    End If

Voilà, j'espère que les choses sont un peu plus claires.

Merci pour toutes ces explication Game Over ! à présent c'est nettement plus clair !

Bonjour rocket4,

Salut Game Over,

WorksheetFunction.CountA compte le nombre de cellules non vides.

J’aurais donc plutôt dit que c’est un équivalent de la fonction Excel NBVAL.

Une astuce pour trouver ce type d’équivalence :

tu notes par exemple la formule =NBVAL(C:C) en cellule A1.

Et tu regardes la traduction dans la fenêtre exécution en tapant ? [A1].formula

Résultat : =COUNTA(C:C)

A+

Salut Frangy et merci de me reprendre...

Tu as absolument raison, CountA est l'équivalent de NBVAL

On s'en doutait mais maintenant la preuve est faite : je suis une vraie chèvre dans la manipulation des formules.

excellente et bien utile petite astuce !

à mon tour de proposer un tuyau pour éviter qu'une macro ne comptabilise comme non vide une cellule contenant une formule dont la valeur vaut ""... ça peut être utile dans certains cas de figure.

Sub test()
Dim myRange As Range, aa As Byte
Set myRange = Columns(1)
aa = Application.WorksheetFunction.CountIf(myRange, ">*") + Application.WorksheetFunction.CountIf(myRange, ">0")
MsgBox aa
End Sub

la déclaration de la variable aa et de myRange, ">0" à adapter en fonction des besoins.

Rechercher des sujets similaires à "question application worksheetfunction"