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,
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...
> 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.
@+
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.
@+
>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.
@+
> 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
>> 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)))
Corollaire :
Comment en VBA, modifier (cocher ou décocher) la fonction active
pour cet affichage dans la barre de tache ... ?
:-(
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 _
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...
'------------------------------------------
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...
"MichDenis" <mich...@hotmail.com> a �crit dans le message de news:
uj9eLMDI...@TK2MSFTNGP02.phx.gbl...
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...
> 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)
| 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().