XL 2016 Barre d'état personnalisable ?

clq

XLDnaute Nouveau
Bonjour à tous,

J'ai une question assez bête mais qui me traquasse. Est-il possible (je pense que si oui c'est par code VBA) de personnaliser la barre d'état en bas des fichiers Excel ?

Parce que je me retrouve souvent à faire des multiplication dans un case mais si cela peut se faire par la barre ce serait top. Je pense aux formes SOMME, MIN, MAX ..

Merci de votre réponse,
Chris
 

chris

XLDnaute Barbatruc
Bonjour à tous

C'est quelque chose comme cela que tu cherches, avec un produit et non une soustraction ?
 

clq

XLDnaute Nouveau
Bonjour à tous

C'est quelque chose comme cela que tu cherches, avec un produit et non une soustraction ?

Bonjour Chris,

C'est exactement ce à quoi je pense. Je ne suis pas sûr de bien comprendre les modules de classe mais j'ai modifié pour le produit. Par contre est-il possible de le mettre dans le PERSONAL ? J'ai essayé mais ça n'a pas l'air fonctionner..

Chris
 

chris

XLDnaute Barbatruc
Re

Super !

As-tu bien limité à une cellule de chaque côté pour éviter une erreur
VB:
Private Sub MonExcel_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    ' Entre 2 plages de cellules d'une seule cellule
    
    If Target.Areas.Count = 2 Then
        If Target.Areas(1).Cells.Count = 1 And Target.Areas(2).Cells.Count = 1 Then _
           Application.StatusBar = "Produit " & WorksheetFunction.Sum(Target.Areas(1)) * WorksheetFunction.Sum(Target.Areas(2))
    Else
        Application.StatusBar = ""
    End If
        
End Sub
 

clq

XLDnaute Nouveau
Re,

Non, je ne l'ai pas fait parce que quand tu le laisses sans obligation d'une seule cellule il fait une somme à l’intérieur de la plage avant. Je ne sais pas si cela me servira mais je le verrai par la suite ;)
Par contre, j'ai un peu abusé de ton code parce que du coup j'ai rajouté produit, différence, et comme je travaille avec des Francs CFA et Euros j'ai aussi ajouté les conversions avec la mise en forme des données .... :rolleyes: :D:
VB:
Private Sub MonExcel_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    ' Entre 2 plages de cellules
   
    If Target.Areas.Count = 2 Then
       Application.StatusBar = _
       "Produit : " & Format(WorksheetFunction.Sum(Target.Areas(1)) * WorksheetFunction.Sum(Target.Areas(2)), " #,##0 ") & _
       " / Différence : " & Format(WorksheetFunction.Sum(Target.Areas(1)) - WorksheetFunction.Sum(Target.Areas(2)), "#,##0.00") & _
       " / Conversion € : " & Format(WorksheetFunction.Sum(Target.Areas(1)) / 655.957, "#,##0.00") & _
       " / Conversion FCFA : " & Format(WorksheetFunction.Sum(Target.Areas(1)) * 655.957, " #,##0 ")
    Else
        Application.StatusBar = ""
    End If
End Sub

En tous cas je te remercie vraiment, ça va me changer la vie !

Chris
 

VIARD

XLDnaute Impliqué
Bonjour Staple(JM), Chris, clq et à toutes et tous

Je suis tombé sur le code de @chris je l'ai testé par curiosité
, mais désolé ça ne marche pas chez moi Excel2007.

j'ai donc repris le code.

VB:
Option Explicit
'======================
Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count = 2 Then
    Application.DisplayStatusBar = True
    Application.StatusBar = "Produit = " & Format(Target(1) * Target(2), "##,##0.00 €")
Else
    Application.StatusBar = ""
End If
End Sub
'======================

A+ Jean-Paul
 

Pièces jointes

  • Manip_StatusBar.xlsm
    12.1 KB · Affichages: 4

clq

XLDnaute Nouveau
Bonjour à tous,

Staple1600 Excuse moi je pensais t'avoir répondu. Merci pour ta réponse.

VIARD, as-tu es essayé le code dans un module simple ou bien dans un module de classe ? Car quand tu vas sur le premier lien que Chris a donné, le complément (xlam) fait intervenir un module de classe en application.
Quand j'essaie ton code sur mon ordi cela ne marche pas non plus. Surement que ça rentre en conflit avec celui qui est sur Personal. Après je l'ai encore modifié depuis le dernier post pour éviter le 1004 quand la première sélection vaut 0 et avoir un somme prod quand les plages sont de même taille.
 

chris

XLDnaute Barbatruc
Bonjour à tous
Je suis tombé sur le code de @chris je l'ai testé par curiosité
, mais désolé ça ne marche pas chez moi Excel2007.
Ce code fonctionne pour toute feuille de tout classeur sans ajouter quoi que ce soit aux feuilles ou classeurs, sur la base d'un module de classe.
Il doit donc être installé dans le Personal ou un xlam installé : la classe doit être initialisée.
Si tu testes juste le module hors de ce contexte, sans les 2 autres modules, il est normal que cela ne fonctionne pas.

Ton code est parfait s'il doit s'appliquer au classeur qui contient le module.

Ce sont 2 besoins différents...

Mais cependant tu as confondu cells et areas : ton code ne fonctionne pas pour une double sélection (renvoie soit 0 soit une valeur erronée) et le mien ne marche pas sur une sélection unique car ce n'était pas l'objectif...
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 492
Messages
2 088 926
Membres
103 984
dernier inscrit
maliko67