[VBA] Personnaliser CommandBars("Cell")-Demande de conseils

Staple1600

XLDnaute Barbatruc
Bonjour à tous


Dans le classeur ci-joint vous trouverez un descriptif détaillé
de ma demande.

Résumé:
Après la personnalisation du menu contextuel (en VBA)
comment effacer une Shape (en 1 clic)?

(+demande de conseils et/ou autre piste en vie de faciliter la saisie
dans une feuille)


PS: j'ai inactivé les macros (en ajoutant un apostrophe)

--> Pour ceux qui débutent en VBA
ATTENTION :Le code VBA modifie le menu contextuel d'Excel
(une fois que les macros seront décommentées )

En cas de problème:
Il y a une macro prévue pour réactiver le menu
Si vous n'êtes pas sûr de savoir réactiver le menu
n'utiliser pas ce classeur.

Aide supplémentaire ici: Comment personnaliser des menus et une barre de menus dans Excel

Bonne soirée et merci à tous ceux qui voudront bien s'attarder dans ce post.

A+


JM
 

Spitnolan08

XLDnaute Barbatruc
Re : [VBA] Personnaliser CommandBars("Cell")-Demande de conseils

Re,

J'essaye de trouver pourquoi ça bugge.
En attendant merci à Fred : Lis mon 1er post dans ce fil...;)

Cordialement

Edit : pas vu ta reflexion post caféine... Dans ce cas, je te laisse continuer seul : si souci tu call back;)
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : [VBA] Personnaliser CommandBars("Cell")-Demande de conseils

Bonsoir Fred65200

Merci de ton intérêt (et de ta réponse)

Je n'avais pas pensé à Application.Caller

Je testerai demain.

Et il me restera à déterminer quelle est la solution la plus confortable


Shapes ou Format Cellule


edit: houps désolé Spitnolan08, mais mon écran n'est pas assez grand
pour voir le bas du fil. ;)

Bonne nuit à tous
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : [VBA] Personnaliser CommandBars("Cell")-Demande de conseils

Bonsoir à tous

Voici la dernière version en cours de finalisation

J'aurais besoin, svp, de "beta testeurs" aux mains robustes, et aux doigts
agiles
ne craignant pas les TMS et l'abus de clics (droit au gauche)

pour déterminer quelle solution vous semble la plus confortable à l'utilisation.

Rappel:
Objet du classeur:
saisie d'un planning horaire mensuel
(soit 30 à 31 cellules par x lignes donc n*x clics possibles--> ca peut fatiguer à force ;)
1) (au clavier) on saisie des chiffres de 2 à 6
2) par le clic-droit sur la cellule active on ajoute(ou pas) une information supplémentaire (ici une lettre: de A à F)

Ma première idée était d'insérer des shapes (formes automatiques)

Suite à au code de Sptinolan, j'ai également testé sa version
utilsant les formats personnalisé (par VBA donc)

Grâce à l'inervention conjointe de Spitnolan08 et fred65200

j'en suis là (cf classeur joint)

Il reste un petit problème cependant
le cycle de changement des lettres ne se reéintialise pas quand on change
de cellules .--(que ce soit pour les shapes ou le format)

Avant de d'utiliser le classeur -> CRTL+J
'Active/Désactive le menu contextuel

Je reprécise; si vous ne maitrisez pas trop les macros
et que vous ne désirez pas modifer l'interface d'Excel
utilisez ce classeur avec prudence.

(Bien qu'en faisant CTRL+J une deuxièle fois le menu contextuel sera réactivé)


Merci de l'attention que vous porterez à ce fil

A+

JM
Ex: si je clique-droit 1 fois dans une cellule --> A
si je change de cellule, clic-droit à nouveau --> B
alors que je souhaiterai recommencer le cycle donc -->A
 

Spitnolan08

XLDnaute Barbatruc
Re : [VBA] Personnaliser CommandBars("Cell")-Demande de conseils

Re,
Il reste un petit problème cependant
le cycle de changement des lettres ne se reéintialise pas quand on change
de cellules .--(que ce soit pour les shapes ou le format)
Je pensais que tu résoudrais ce petit souci tout seul... Arf:rolleyes:
Voici une solution pour ma proposition :
Code:
Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
Set Zone_Saisie = ActiveSheet.Range("B3:AF15")
On Error Resume Next
Application.CommandBars("Cell").Enabled = False
Valeurs = Array("A", "B", "C", "D", "E", "F")

If Not Intersect(Target, Zone_Saisie) Is Nothing Then
    For i = 1 To UBound(Valeurs)
        If Valeurs(i) = Mid(Selection.NumberFormat, 3, 1) Then NbClic = i + 1: Exit For
    Next
    Select Case NbClic
        Case 0 To 5
        Selection.NumberFormat = 0 & Valeurs(NbClic)
    End Select
End If

If NbClic > 5 Then NbClic = 0
ez = True
End Sub
Bons tests et attention à l'indexite aigue:D pour les cobayes.

Cordialement
 
Dernière édition:

fred65200

XLDnaute Impliqué
Re : [VBA] Personnaliser CommandBars("Cell")-Demande de conseils

bonsoir staple1600,
je commence à tester ton classeur.
J'ai commencé par Avec_Shapes.

Si j'ai bien compris Avant d'ajouter un shapes dans une cellule, s'il y en a déjà une, il faut l'effacer par double clic, clic gauche, et clic droit pour ajouter le Shape suivant. très contraignant
clic gauche, clic droit,.....................

tu devrais insérer le code suivant avant d'ajouter une nouvelle forme

Code:
Dim Shp As Shape
For Each Shp In ActiveSheet.Shapes
'si l'adresse de la cellule au dessus et à gauche de Shape,
'décalée de 1 ligne vers le bas, 1 colonne vers la droite est l'adresse de Target, on efface.
If Shp.TopLeftCell.Cells(2, 2).Address = Target.Address Then Shp.Delete

Next
Les tests continus

..........

Pour réinitialiser le nombre de clic

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
NbClic = 0
End Sub

@+
fred65200
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : [VBA] Personnaliser CommandBars("Cell")-Demande de conseils

Re

Je vais vous raconter une histoire (pour bien comprendre)

Imaginez , un(e) secrétaire , "utilisateur basique" d'Excel

Après son petit noir au bar des Acacias, il(elle) arrive au boulot
(on est un lundi) et là boum on lui "T'as fait le planning?"

Il/elle réponds "Pas encore, car le petit nouveau(moi donc) est en train
de créer une version "améliorée" du Planning"

Voila ce qu'il/elle faisait avant que j'arrive

Un classeur ( 12 feuilles mensuelles, 15 à 30 personnes )

Donc comme elle/il dit :" de 30 à 31 cases" par lignes
Dans ces lignes il/elle saisissait au clavier

des chiffres (2à6) et parfois des annomations (lettres ou abréviations)
ce qui rendaient les formules crées par mon prédecesseur caduques.

J'ai donc voulu mettre ma patte personnelle qui se résume à:

Déroulement scénarisé de la saisie:
On saisit le planning de l'agent au clavier
si en cours de saisie on doit ajouter "une annotation dans la case"
on fait 1 clic-droit --> le premier item dispo s'affiche:
donc dans l'exemple : la lettre A (voir le classeur joint dans le pécédent message)
(un 2 ème clic affichera B etc...)
et on continue la saisie au clavier
et zut! la on s'apercoit que l'on a fait une erreur
donc avec la souris on clic-gauche sur la cellue erronée qui supprime
(soit le format, soit la shape) mais laisse la valeur saisie.

Voila en détaillé vers quoi j'essai de tendre.
 

Staple1600

XLDnaute Barbatruc
Re : [VBA] Personnaliser CommandBars("Cell")-Demande de conseils

Re


--> Spitnolan08: comme je commençais à avoir des crampes (cérbrales et digitales) à forcer de cliquer comme un dératé
je me suis dit que tu allais me dépanner sur ce coup-là :)


->fred65200: pour les shapes : c'est l'annulation en cas d'erreur qui me pose
problème

Au départ on saisit au clavier (car habitude et souhait de l'utilisateur final)
Voil l'idée que j'essaye de mettre en place
Quand on clic-droit -> insertion d'une shape
alors si on veut annuler car on s'est trompé.
soit on clic n fois pour que s'affiche le bonne lettre dans la shape active
soit on clic-gauche pour effacer la shape
et dans ce cas, il faut recliquer -droit pour afficher la bonne valeur.


PS: en prenant la solution de Spitnolan08 cela est plus facile.
Mais l'avantage des shapes c'est que le peux les formater (couleur/police)
voir insérer des images (
 
Dernière édition:

fred65200

XLDnaute Impliqué
Re : [VBA] Personnaliser CommandBars("Cell")-Demande de conseils

Re bonsoir Staple1600, bonsoir Spitnolan08

Toujours sur shape. Moi aussi j'aime bien

voici le code que je propose de tester à ton tour

Plus de double clic

Code:
'Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'AppliquerMacro
'End Sub

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Dim Zone_Saisie As Range
Dim Valeurs() As Variant
Dim Shp As Shape
Set Zone_Saisie = ActiveSheet.Range("B3:AF15")
On Error Resume Next
Application.CommandBars("Cell").Enabled = False
Valeurs = Array("A", "B", "C", "D", "E", "F")
If Not Intersect(Target, Zone_Saisie) Is Nothing Then
'lignes inutiles effacées
Select Case NbClic
Case 0 To 5

Set c = ActiveCell
For Each Shp In ActiveSheet.Shapes
If Shp.TopLeftCell.Cells(2, 2).Address = Target.Address Then Shp.Delete
Next


Set Shp = ActiveSheet.Shapes.AddShape _
   (msoShapeRectangle, c.Left, c.Top, c.Width, c.Height)
   With Shp.TextFrame
       .Characters.Text = Valeurs(NbClic)
       With .Characters.Font
        .Bold = True
        .Size = 8.5
        .ColorIndex = 3
        .Superscript = True
       End With
       .HorizontalAlignment = xlRight
.VerticalAlignment = xlCenter
.Orientation = xlHorizontal
.AutoSize = False
 End With
Shp.Line.Visible = msoFalse
Shp.Fill.Visible = msoFalse

End Select
End If
NbClic = NbClic + 1
If NbClic > 5 Then NbClic = 0
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
NbClic = 0: AppliquerMacro
End Sub
Avec Formats, j'ai quelques bugs, la valeur passe de A à C et de C à F.
Ne se réinitialise pas toujours lors d'un changement de cellule (avec la modif de Spitnolan08.
Bon je ne teste pas sur la version d'Excel que vous utilisez au bureau...

@+
 
Dernière édition:

Spitnolan08

XLDnaute Barbatruc
Re : [VBA] Personnaliser CommandBars("Cell")-Demande de conseils

Re,
PS: en prenant la solution de Spitnolan08 cela est plus facile.
Mais l'avantage des shapes c'est que le peux les formater (couleur/police)
voir insérer des images
J'en déduis que tu maîtrises les menues adaptations dont tu pourrais avoir besoin sur ma dernière proposition et je laisse Fred65200 s'occuper des shapes. CA me va bien...:p Bonne nuit alors...;)
cela est plus facile
C'était le but recherché:D

Cordialement
 

Staple1600

XLDnaute Barbatruc
Re : [VBA] Personnaliser CommandBars("Cell")-Demande de conseils

Bah
non Spitnolan08

je vais de passer un quart d'heure à tester ton code


Ca ne marche pas (en ou plutot je ne trouve pas pourquoi je n'arrive pas à le faire fonctionner)

Bonne nuit si t'es parti
 

fred65200

XLDnaute Impliqué
Re : [VBA] Personnaliser CommandBars("Cell")-Demande de conseils

bonsoir jeanpierre

Tu as des antennes ou les oreilles qui sifflent dès qu'on tape ton nom sur ce forum?
Le classeur avec le code, juste après le code... ça prend de la place.

Aucune once de méchanceté je te rassure.

Cordialement
fred65200
 

Discussions similaires

Réponses
3
Affichages
517

Statistiques des forums

Discussions
312 361
Messages
2 087 626
Membres
103 609
dernier inscrit
AmineAB33