Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Recuperer la valeur somme de la barre d'état en bas a droite en VBA

205 views
Skip to first unread message

TTL76

unread,
Aug 16, 2009, 5:22:17 PM8/16/09
to
Bonsoir a tous,

Y a t il des courageux qui fuient la torpeur des plages pour m'aider �
r�pondre a ces question :
Peux t on recuperer par VBA la valeur de la somme ou comptage cellule
ou....... qui s'affiche dans la barre d'etat en bas a droite ?
Peut t on selectionner le menu contextuel et choisir ce qui sera affich� si
oui comment?

Merci de votre aide,

Bien Cordialement,


Jacky

unread,
Aug 16, 2009, 5:56:08 PM8/16/09
to
Bonsoir,

Recuperer les valeurs inscrites dans la barre, je ne sais pas si c'est
possible.
Mais si j'ai bien compris, l'�quivalent en vba serait
'----------
MsgBox Application.CountA(Selection)
MsgBox Application.Sum(Selection)

--
Salutations
JJ


"TTL76" <alain.p...@orange.fr> a �crit dans le message de news:
Op87kerH...@TK2MSFTNGP04.phx.gbl...

Modeste

unread,
Aug 16, 2009, 7:08:54 PM8/16/09
to
Bonsour® Jacky avec ferveur ;o))) vous nous disiez :

> Recuperer les valeurs inscrites dans la barre, je ne sais pas si c'est
> possible.

> Mais si j'ai bien compris...
../..
;o)))
????? c'est pas certain ...

l'équivalent en vba serait plutôt du genre
MsgBox Application.SubTotal(N° de Fonction, Plage)

voir l'aide-en ligne F1
pour la fonction SOUS.TOTAL
- no_fonction représente le nombre compris entre 1 et 11 indiquant quelle fonction utiliser pour calculer les sous-totaux d'une liste.
- La fonction SOUS.TOTAL ne prend pas en compte les lignes masquées suite à un filtrage.
Le sous-total ne porte que sur les données visibles résultant du filtrage d'une liste.

@+

TTL76

unread,
Aug 17, 2009, 1:43:48 AM8/17/09
to
Bonjour,
Merci a vous deux pour ces r�ponses, mais je constate que c'est pas gagn�!
Mon besoin est : l'utilisateur selectionne une zone variable
(lignes+colonnes) par selection click gauche, sans relacher le MsgBox doit
s'afficher le nombre de cellules selectionn�es * constante comme le fait le
resultat de la barre d'�tat.

Pas d'autre id�e ??

Merci pour votre aide

Cordialement,

"Modeste" <G...@libre.fr> a �crit dans le message de news:
uBmjCasH...@TK2MSFTNGP04.phx.gbl...


Bonsour� Jacky avec ferveur ;o))) vous nous disiez :

> Recuperer les valeurs inscrites dans la barre, je ne sais pas si c'est
> possible.
> Mais si j'ai bien compris...
../..
;o)))
????? c'est pas certain ...

l'�quivalent en vba serait plut�t du genre


MsgBox Application.SubTotal(N� de Fonction, Plage)

voir l'aide-en ligne F1
pour la fonction SOUS.TOTAL

- no_fonction repr�sente le nombre compris entre 1 et 11 indiquant quelle

fonction utiliser pour calculer les sous-totaux d'une liste.

- La fonction SOUS.TOTAL ne prend pas en compte les lignes masqu�es suite �
un filtrage.
Le sous-total ne porte que sur les donn�es visibles r�sultant du filtrage
d'une liste.

@+


Jacky

unread,
Aug 17, 2009, 5:13:19 AM8/17/09
to
Bonjour Modeste

>l'�quivalent en vba serait plut�t du genre


>MsgBox Application.SubTotal(N� de Fonction, Plage)

Qu'est-ce qui permet cette affirmation ???
MsgBox Application.Subtotal(109, Selection)
plut�t que
MsgBox Application.Sum(Selection)

Dans la barre il y � bien.....
Somme=r�sultat
--
Salutations
JJ


"Modeste" <G...@libre.fr> a �crit dans le message de news:
uBmjCasH...@TK2MSFTNGP04.phx.gbl...


Bonsour� Jacky avec ferveur ;o))) vous nous disiez :

> Recuperer les valeurs inscrites dans la barre, je ne sais pas si c'est
> possible.
> Mais si j'ai bien compris...
../..
;o)))
????? c'est pas certain ...

l'�quivalent en vba serait plut�t du genre


MsgBox Application.SubTotal(N� de Fonction, Plage)

voir l'aide-en ligne F1
pour la fonction SOUS.TOTAL

- no_fonction repr�sente le nombre compris entre 1 et 11 indiquant quelle

fonction utiliser pour calculer les sous-totaux d'une liste.

- La fonction SOUS.TOTAL ne prend pas en compte les lignes masqu�es suite �
un filtrage.
Le sous-total ne porte que sur les donn�es visibles r�sultant du filtrage
d'une liste.

@+


Modeste

unread,
Aug 17, 2009, 5:55:49 AM8/17/09
to
Bonsour® TTL76 avec ferveur ;o))) vous nous disiez :

> Merci a vous deux pour ces réponses, mais je constate que c'est pas
> gagné! Mon besoin est : l'utilisateur selectionne une zone variable


> (lignes+colonnes) par selection click gauche, sans relacher le MsgBox

> doit s'afficher le nombre de cellules selectionnées * constante comme
> le fait le resultat de la barre d'état.

;o)))
le click gauche étant le click de sélection par défaut s'appliquant à toute les cellules
son utilisation dans ce contexte risque d'étre tres perturbant.
je conseillerai donc plutot l'utilisation du click droit ...
macro à installer dans le module de la feuille concernée :

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
On Error Resume Next
MsgBox "nb cellules concernées: " & Selection.Cells.Count _
& Chr(10) & Selection.Address _
& Chr(10) & "visibles:" & vbTab & Selection.SpecialCells(xlCellTypeVisible).Count _
& Chr(10) & "Moy :" & vbTab & Application.Subtotal(1, Selection) _
& Chr(10) & "Numer. :" & vbTab & Application.Subtotal(2, Selection) _
& Chr(10) & "Cpteur :" & vbTab & Application.Subtotal(3, Selection) _
& Chr(10) & "Max :" & vbTab & Application.Subtotal(4, Selection) _
& Chr(10) & "Min :" & vbTab & Application.Subtotal(5, Selection) _
& Chr(10) & "Produit :" & vbTab & Application.Subtotal(6, Selection) _
& Chr(10) & "Somme :" & vbTab & Application.Subtotal(9, Selection), vbInformation, "stats MPFE"
End Sub

Modeste

unread,
Aug 17, 2009, 6:01:43 AM8/17/09
to
Bonsour® Jacky avec ferveur ;o))) vous nous disiez :

>> l'équivalent en vba serait plutôt du genre


>> MsgBox Application.SubTotal(N° de Fonction, Plage)
>
> Qu'est-ce qui permet cette affirmation ???
MsgBox Application.Subtotal(109, Selection)

plutôt que
MsgBox Application.Sum(Selection)


;o)))
à condition que ce soit bien par défaut la fonction Somme dans la barre de tache qui est activé à l'instant donné !!!!
et pour la changer il suffit d'une action (in)volontaire de l'utilisateur ;o)))


Modeste

unread,
Aug 17, 2009, 6:37:37 PM8/17/09
to
Bonsour®
> ;o)))
> à condition que ce soit bien par défaut la fonction Somme dans la
> barre de tache qui est activé à l'instant donné !!!!
> et pour la changer il suffit d'une action (in)volontaire de
> l'utilisateur ;o)))

Corollaire :
Comment en VBA, modifier (cocher ou décocher) la fonction active
pour cet affichage dans la barre de tache ... ?
:-(

TTL76

unread,
Aug 18, 2009, 1:48:46 AM8/18/09
to
Merci Modeste pour cette r�ponse,
mais le fonctionnement click droit ne correspond pas � ce que je cherche,
car en fait le mode de fonctionnement souhait� est : je connais le r�sultat
objectif et je cherche � selectionner des cellules (lignes et colonnes
contigues quand m�me!) pour obtenir ce r�sultat. Le comptage cellule (en
direct) de la barre d'�tat m'irait tr�s bien si je pouvais exploiter sa
valeur en VBA.
Une autre id�e?
Merci de votre aide

Cordialement,

"Modeste" <G...@libre.fr> a �crit dans le message de news:

O5uziDyH...@TK2MSFTNGP02.phx.gbl...


Bonsour� TTL76 avec ferveur ;o))) vous nous disiez :

> Merci a vous deux pour ces r�ponses, mais je constate que c'est pas
> gagn�! Mon besoin est : l'utilisateur selectionne une zone variable


> (lignes+colonnes) par selection click gauche, sans relacher le MsgBox

> doit s'afficher le nombre de cellules selectionn�es * constante comme
> le fait le resultat de la barre d'�tat.

;o)))
le click gauche �tant le click de s�lection par d�faut s'appliquant � toute
les cellules
son utilisation dans ce contexte risque d'�tre tres perturbant.


je conseillerai donc plutot l'utilisation du click droit ...

macro � installer dans le module de la feuille concern�e :

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As
Boolean)
On Error Resume Next

MsgBox "nb cellules concern�es: " & Selection.Cells.Count _

MichDenis

unread,
Aug 18, 2009, 2:21:46 PM8/18/09
to
Bonjour TTL76,

Dans Excel 2007, tu peux utiliser ceci :

Au lieu d'afficher le message, tu peux utiliser une variable
diff�rente d�clar�e "Public" dans un module Standard pour
conserver la valeur obtenue par chaque item. Excel 2007
permet de cocher plusieurs items � la fois.

Tu copies ce qui suit dans le ThisWorkbook du classeur.
'-----------------------------------
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Dim Ctrl As CommandBarButton, Msg As String
If TypeName(Selection) = "Range" Then
If Selection.Cells.Count = 1 Then Exit Sub
V = ""
On Error Resume Next
For Each Ctrl In Application.CommandBars("AutoCalculate").Controls
Select Case Ctrl.Caption
Case "&Moyenne"
Msg = Msg & "Valeur de la moyenne de la s�lection : " _
& Application.Round(Application.Average(Selection), 3) & vbCrLf
Case "&Compteur"
Msg = Msg & "Nombre de cellules non vides dans la " _
& "s�lecton : " & Application.CountA(Selection) & vbCrLf
Case "Chi&ffres"
Msg = Msg & "Nombre de valeurs num�riques dans la " _
& "s�lection: " & Application.Count(Selection) & vbCrLf
Case "Ma&x."
Msg = Msg & "Valeur maximale de la s�lection : " _
& Application.Max(Selection) & vbCrLf
Case "M&in."
Msg = Msg & "Valeur minimale de la s�lection : " _
& Application.Min(Selection) & vbCrLf
Case "&Somme"
Msg = Msg & "La somme de la s�lection est : " _
& Application.Sum(Selection) & vbCrLf
End Select
Next Ctrl
If Msg <> "" Then MsgBox Msg
End If
End Sub
'-----------------------------------

"TTL76" <alain.p...@orange.fr> a �crit dans le message de groupe de discussion :
Op87kerH...@TK2MSFTNGP04.phx.gbl...

MichDenis

unread,
Aug 18, 2009, 2:38:12 PM8/18/09
to
Pour les versions ant�rieures � 2007, on peut ajouter
une ligne de code pour tester express�ment quelle est la
fonction de cocher pour afficher seulement cette information
dans le message.
La ligne de code est : If Ctrl.State = msoButtonDown Then
sinon, le fonctionne est similaire � 2007.

'------------------------------------------


Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Dim Ctrl As CommandBarButton, Msg As String
If TypeName(Selection) = "Range" Then
If Selection.Cells.Count = 1 Then Exit Sub
V = ""
On Error Resume Next
For Each Ctrl In Application.CommandBars("AutoCalculate").Controls

If Ctrl.State = msoButtonDown Then


Select Case Ctrl.Caption
Case "&Moyenne"
Msg = Msg & "Valeur de la moyenne de la s�lection : " _
& Application.Round(Application.Average(Selection), 3) & vbCrLf
Case "&Compteur"
Msg = Msg & "Nombre de cellules non vides dans la " _
& "s�lecton : " & Application.CountA(Selection) & vbCrLf
Case "Chi&ffres"
Msg = Msg & "Nombre de valeurs num�riques dans la " _
& "s�lection: " & Application.Count(Selection) & vbCrLf
Case "Ma&x."
Msg = Msg & "Valeur maximale de la s�lection : " _
& Application.Max(Selection) & vbCrLf
Case "M&in."
Msg = Msg & "Valeur minimale de la s�lection : " _
& Application.Min(Selection) & vbCrLf
Case "&Somme"
Msg = Msg & "La somme de la s�lection est : " _
& Application.Sum(Selection) & vbCrLf
End Select

End If


Next Ctrl
If Msg <> "" Then MsgBox Msg
End If
End Sub

'------------------------------------------

"TTL76" <alain.p...@orange.fr> a �crit dans le message de groupe de discussion :
Op87kerH...@TK2MSFTNGP04.phx.gbl...

TTL76

unread,
Aug 19, 2009, 1:06:55 AM8/19/09
to
Merci MichDenis,
Je vais de ce pas tester cette solution
Cordialement,

"MichDenis" <mich...@hotmail.com> a �crit dans le message de news:
uj9eLMDI...@TK2MSFTNGP02.phx.gbl...

MichDenis

unread,
Aug 19, 2009, 8:23:08 AM8/19/09
to
La version suivante de la proc�dure te permet d'afficher
dans la barre d'�tat le ou les �l�ments pertinents suivants
suite � la s�lection d'une plage de cellules dans une feuille.

1- Nombre de cellules non vides
2- Nombre de valeurs num�riques
3- La somme des cellules de la s�lection
4 - Moyenne de la s�lection
5- Valeur maximale de la s�lection
6- Valeur minimale de la s�lection

La moyenne est arrondi � 3 d�cimales.

Placer dans le ThisWorkbook d'un classeur
'-------------------------------------------
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, _


ByVal Target As Range)
Dim Ctrl As CommandBarButton, Msg As String

Dim A As String, B As String, C As String
Dim D As String, E As String

Application.StatusBar = False


If Selection.Cells.Count = 1 Then Exit Sub

On Error Resume Next


For Each Ctrl In Application.CommandBars("AutoCalculate").Controls

Select Case Ctrl.Caption
Case "&Compteur"
If Application.CountA(Selection) > 1 Then
A = Msg & "Non vides : " & _
Application.CountA(Selection) & " "
End If

Case "Chi&ffres"
If Application.Count(Selection) > 0 Then
B = Msg & "Num : " & _
Application.Count(Selection) & " "
End If

Case "&Somme"
If Application.Count(Selection) > 0 Then
C = Msg & "Somme : " _
& Application.Sum(Selection) & " "
End If

Case "&Moyenne"
If Application.Count(Selection) > 0 Then
D = Msg & "Moyennne : " & Application.Round _
(Application.Average(Selection), 3) & " "
End If

Case "Ma&x."
If Application.Count(Selection) > 0 Then
E = Msg & "Max : " & _
Application.Max(Selection) & " "
End If

Case "M&in."
If Application.Count(Selection) > 0 Then
f = Msg & "Min : " _
& Application.Min(Selection) & " "
End If
End Select
Next Ctrl
'Peut choisir d'afficher seulement un ou tous
'les �l�ments en incluant dans la cha�ne la ou
'les lettres correspondantes.
Application.StatusBar = A & B & C & D & E & f
End Sub
'-------------------------------------------

"TTL76" <a...@wanadoo.fr> a �crit dans le message de groupe de discussion :
uEeQhrII...@TK2MSFTNGP04.phx.gbl...

Modeste

unread,
Aug 19, 2009, 10:52:45 AM8/19/09
to
Bonsour® MichDenis avec ferveur ;o))) vous nous disiez :

> La version suivante de la procédure te permet d'afficher
> dans la barre d'état le ou les éléments pertinents suivants
> suite à la sélection d'une plage de cellules dans une feuille.


>
> 1- Nombre de cellules non vides

> 2- Nombre de valeurs numériques
> 3- La somme des cellules de la sélection
> 4 - Moyenne de la sélection
> 5- Valeur maximale de la sélection
> 6- Valeur minimale de la sélection

> 'Peut choisir d'afficher seulement un ou tous

> 'les éléments en incluant dans la chaîne la ou


> 'les lettres correspondantes.
> Application.StatusBar = A & B & C & D & E & f
> End Sub
> '-------------------------------------------

Juste pour titiller... ;o)))
Il n'est pas certain que les chiffres restitués par cette macro
soient toujours les mêmes que ceux affichés par la commandbars("autoCalculate")
selon qu'un filtre soit actif ou pas...
;o)))

Les résultats affichés par la Commandbars("autoCalculate") sont équivalents à ceux de la fonction :
fr :
SOUS.TOTAL(NoFonction; Plage)
Us :
SubTotal(NoFonction, Plage)

MichDenis

unread,
Aug 19, 2009, 11:16:53 AM8/19/09
to
| Il n'est pas certain que les chiffres restitu�s par cette macro
| soient toujours les m�mes que ceux affich�s par

| la commandbars("autoCalculate")
| selon qu'un filtre soit actif ou pas...

| Les r�sultats affich�s par la Commandbars("autoCalculate")
| sont �quivalents � ceux de la fonction :


| fr :
| SOUS.TOTAL(NoFonction; Plage)
| Us :
| SubTotal(NoFonction, Plage)

*** Le fait d'obtenir ces r�sultats par programmation permet
de retenir la formule la plus appropri�e aux besoins de l'usager.

*** Pour les versions pr�c�dentes � Excel 2007, il est m�me possible
d'ajouter des �l�ments � la liste du menu contextuel au clic droit
sur cette barre d'outils et de les afficher dans la barre d'�tat.

*** La version Excel 2007 affiche d�j� ces r�sultats dans la barre d'�tat
si on s�lectionne le(s) item(s) dans le menu contextuel. Nul besoin de
les afficher 2 fois.

*** Le commentaire est appropri�, il permettra au demandeur de retenir
la fonction qui lui pla�t. � partir de la version Excel 2003, il est aussi
possible de retenir les fonctions (101 � 111) de Sous.Total().

0 new messages