Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
Boostez vos compétences Excel avec notre communauté !
Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force.
Apprenez, échangez, progressez – et tout ça gratuitement !
👉 Inscrivez-vous maintenant !
Est-il possible d'obtenir en lecture directe dans la barre d'état en bas de l'écran la différence entre 2 cellules ou plages de cellules ? (de la même manière que la somme/moyenne/minimun/maximun....)
En supposant que une des deux cellules ou plages est une référence fixe, ceci devrait fonctionner :
(code à mettre dans la feuille).
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
' Référence à cellule fixe, exemple A1
'Application.StatusBar = ActiveCell.Value - Range("A1")
' Entre 2 plages de cellules
Application.StatusBar = WorksheetFunction.Sum(Selection) - WorksheetFunction.Sum(Range("A1:B2"))
End Sub
calcul de la somme de la plage 1 - somme de la plage 2
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
' Entre 2 plages de cellules
If Target.Areas.Count = 2 Then Application.StatusBar = _
"Différence " & WorksheetFunction.Sum(Target.Areas(1)) - WorksheetFunction.Sum(Target.Areas(2))
End Sub
à mettre dans le module de la feuille.
Peut-être adapté au module workbook...
Edit : version Workbook améliorée (effacement de la mention si le contexte est différent)
Code:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
' Ecart entre 2 plages de cellules
If Target.Areas.Count = 2 Then
Application.StatusBar = "Différence " & WorksheetFunction.Sum(Target.Areas(1)) - WorksheetFunction.Sum(Target.Areas(2))
Else
Application.StatusBar = ""
End If
End Sub
Ajout d'une fonction "Différence" dans la barre d'état (AutoCalculate) :
Ici la différence entre le Maxi et le Mini
VB:
Option Explicit
Sub NouvelleFonction()
With Application.CommandBars("AutoCalculate").Controls.Add
.Caption = "Différence"
.OnAction = "Difference"
End With
End Sub
Sub EffaceFonction()
Application.CommandBars("AutoCalculate").Controls("Différence").Delete
End Sub
Private Sub Difference()
Dim Valeur As Long
On Error Resume Next
Valeur = Application.Max(ActiveWindow.RangeSelection) - _
Application.Min(ActiveWindow.RangeSelection)
MsgBox "Différence = " & Valeur
Range("A1") = Valeur
End Sub
On voit bien que Différence a été ajouté, mais pas de lien avec ce qui apparaît dans la barre d'état
Je suppose qu'il faut faire du XML pour modifier les menus de la barre d'état
Si le code est dans le classeur concerné cela marche pour ce classeur.
J'ai regardé rapidement pour le faire fonctionner dans tous les classeurs mais n'ai pas trouvé de solution simple.
La méthode la plus simple a priori serait de mettre le code dans un modèle de classeur (xltx) ou bien, pour généraliser, dans le modèle par défaut, mais dans les deux cas cela oblique à enregistrer les classeurs en xlsm.
La solution de JCGL serait plus générale : reste à trouver comment l'implémenter en 2007.
Je reviens vers vous demander si vous seriez faire la même chose (personnalisation barre d'état) avec un affichage du montant HT et du montant TTC (taux de TVA 19.60%) correspondant à une cellule ou plage de cellules. Bien entendu en gardant l'affichage de la différence que vous m'aviez gentiment programmé la dernière fois.
Enfin, savez-vous si on peut avoir un affichage des nombres avec un séparateur des milliers et arrondi à 2 chiffres après virgule (logique monétaire),
Je vous joins un fichier exemple.
Je vous remercie infiniment !
Sachez que j'utilise très très souvent cette différence,
- Navigue sans publicité - Accède à Cléa, notre assistante IA experte Excel... et pas que... - Profite de fonctionnalités exclusives Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel. Je deviens Supporter XLD