IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

[VBA-E]Clic droit dansun feuille excel


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 35
    Points : 22
    Points
    22
    Par défaut [VBA-E]Clic droit dansun feuille excel
    Bonsoir,

    voilà mon problème:
    j'ai un trableau excel dont je colorise certaines "Range", je le fait grâce au menu de mise forme habituel. Le truc c'est que j'utilise des couleurs spécifiques que je comptabilise par la suite.
    L'idée serai que je puisse faire un clic droit sur la case à coloriser et qu'un menu contenant les trois couleurs possibles (ou trois libellés éventuellement) apparaisse. C'est le principe du rightclic habituel mais que je voudrais personnaliser.
    Je pense devoir mettre mon code ici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
     
    End Sub
    Mais je ne sais pas par où commencer....

    Merci pour votre aide.

  2. #2
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    je ne pense pas que tu dois passer par l'événement ...Worksheet_BeforeRight ... mais plutôt par modification du menui contextuel...

  3. #3
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 35
    Points : 22
    Points
    22
    Par défaut
    je débute dans ce monde....
    Pourais tu m'en dire d'avantage?

  4. #4
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    tiens ... colle ça dans un module... cela te donnera peu-être une idée..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    '
    ' Procedure appellé pour effacer option du Menu
    '
    '
    Sub EffaceMenu(CB As CommandBar, stNom As String)
    On Error GoTo Fin
    Dim i As Integer
    For i = 1 To 100 ' Cette boucle ne sert à rien mais me rassure, pour éviter de partir dans boucle infinie..
       CB.Controls(stNom).Delete
    Next
    Fin:
     
    End Sub
    '
    ' Fonction d'ajout option dans menu contextuel
    '
    '
    Sub AjouteMenuContextuel()
      Dim c As CommandBar
      Dim b As CommandBarButton
      Set c = Application.CommandBars("Cell")
      '.. detruit le bouton si existe déjà
      EffaceMenu c, "Essai"
      Set b = c.Controls.Add(msoControlButton)
      b.Caption = "Essai"
      b.BeginGroup = True
      b.OnAction = "Test2"
     
    End Sub
    Public Sub test2()
     MsgBox "text2"
    End Sub

  5. #5
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut
    bonsoir Gil68 , bonsoir Bill

    ci joint une autre possibilité


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
    Dim Reponse As Variant
     
    Cancel = True 
     
    Reponse = Application.InputBox("Saisissez une valeur entre 1 et 3" & vbLf & vbLf & _
    "1 = Rouge" & vbLf & "2 = Vert" & vbLf & "3 = Bleu", "Colorier la cellule active", 1)
     
    If Not IsNumeric(Reponse) And Len(Reponse) <> 1 Then Exit Sub
    If Reponse > 0 And Reponse < 4 Then ActiveCell.Interior.ColorIndex = Reponse + 2
    End Sub

    bonne soiree
    michel

  6. #6
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut
    rebonsoir

    une autre possibilité ...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
    Dim x As Long
     
    Cancel = True
     
    Application.Dialogs(xlDialogPatterns).Show
    x = ActiveCell.Interior.ColorIndex
    If x = xlColorIndexAutomatic Then x = xlColorIndexNone
    ActiveCell.Interior.ColorIndex = x
     
    End Sub

    bonne soiree
    michel

  7. #7
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 35
    Points : 22
    Points
    22
    Par défaut
    Salut et merci pour vos réponses.
    J'aimerai pouvoir utiliser un menu dans le mêm style que celui qui apparaît lorsque vous faite un clic droit (copier, coller,...)
    Vous vopyez comment je vois les choses?

  8. #8
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    justement le code que je t'ai mis + haut permet de modifier le menu contextuel ... manque plus qu'à l'adapter..

  9. #9
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 35
    Points : 22
    Points
    22
    Par défaut
    oups, pardon.

    Mais je ne comprends pas trop. Tu veux créer une barre d'outils? Qui s'appelerai "Cell"?

    J'ai affecter cette macro à un bouton mais il ne se passe rien...
    Je vais chercher un peu....

  10. #10
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    non .. je modifie le menu contextuel des feuilles de calculs ... ( clic droit sur cellule...)

  11. #11
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 35
    Points : 22
    Points
    22
    Par défaut
    Voilà la solution que j'ai trouver:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    Public menucontext As CommandBar
    Sub creabar()
     
    'On Error GoTo fin
    Application.CommandBars("Couleurs").Delete
     
    Set menucontext = Application.CommandBars.Add("Couleurs", msoBarPopup, False, True)
    Set BPfait = menucontext.Controls.Add
    With BPfait
        .Caption = "Fait"
        .OnAction
    End With
    Set BParret = menucontext.Controls.Add
    With BParret
        .Caption = "A l'arrêt"
    End With
    Set BPprepa = menucontext.Controls.Add
    With BPprepa
        .Caption = "Avec préparation"
    End With
    Set BPsuivre = menucontext.Controls.Add
    With BPsuivre
        .Caption = "A suivre"
    End With
    fin:
     
    End Sub
     
    Sub affichagemenu()
    menucontext.ShowPopup
    End Sub
    Le problème c'est que j'ai le menu contextuel habituelle qui s'affiche de manière très très courte. C'est pas trés élégant.

    Merci bbil. Ta solution est très bien
    Une dernière chose, je n'arrive pas à retirer tout les éléments du menu contextuel. Si j'y arrive est-ce que c'est réversible automatiquement ou dois-je remettre mon menu "Cell" d'equerre moi même?

  12. #12
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Salut

    Je crois que c'est bbil qui est sur la meilleure voie. J'ai essayé d'afficher une barre d'outils perso ou un UserForm avec l'événement beforeRightClick mais une fois l'action effectuée (changement de la couleur de fond), le menu contextuel s'affiche intempestivement... Alors, puisqu'il tient à s'afficher, celui-là, laissons-le faire et ajoutons lui une ou deux options... voire trois.

  13. #13
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 35
    Points : 22
    Points
    22
    Par défaut
    ok, je suis d'accord avec vous.

    Mais je voudrai que lorsque je fais un clique droit, le menu ne me propose plus que 4 options.

    Je vais regarder pour supprimer les autres options....

  14. #14
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 35
    Points : 22
    Points
    22
    Par défaut
    Bon j'ai tout virer mais maintenant je peux plus faire marche arrière.

    Le menu ne contient plus que ce que les options que j'ai créer même après relancement d'excel.

    Je vais le réinstaller.

  15. #15
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 35
    Points : 22
    Points
    22
    Par défaut
    Aïe, aïe, aïe,...

    c'est vraiment pas le truc à faire ça. J'ai désinstaller puis réinstaller Office et rien à faire mon menu contextuel habituel (copi, coller,...) ne veux plus revenir.
    Comment dois-je faire?

  16. #16
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    Le menu ne contient plus que ce que les options que j'ai créer même
    Et... les avais-tu sauvegardées quelque part , ces options créées par toi et qui ne sont plus là après la réinstallation ?

  17. #17
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 35
    Points : 22
    Points
    22
    Par défaut
    Salut,

    et bien en fait, bbil ma orienté vers la possibilité de modifier le menu contextuel nommé "Cell". C'est celui qui apparaît quand tu fais clic droit dans excel. Dans la macro que j'ai fais, j'ai demandé l'effacement total de ce menu et j'y est inséré mes 4 nouvelles options.
    Mais maintenant je ne peux plus faire marche arrière.....


    Je pense que je vais partir sur la solution de créer un nouveau menu contextuel que j'appellerai au moment du right clic. Le problème avec cette solution est que le menu contextuel "Cell" apparaît intempestivement au moment du clic droit..
    Peu-t-on empeché son apaprition sans toute fois le supprimer?

    Merci pour toutes vos réponses.

    @+

  18. #18
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut
    bonjour

    tu peux tester cette macro pour reinitialiser ton menu contextuel

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.CommandBars("cell").Reset

    je ne comprends pas quand tu dis que le menu apparait intempestivement

    cette procedure empeche l'apparition du menu contextuel sans le supprimer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
    Cancel = True
    End Sub

    bonne journée
    michel

  19. #19
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 35
    Points : 22
    Points
    22
    Par défaut
    je vais essayer,
    cancel=true, j'ai pas fais attention...

    @+

Discussions similaires

  1. [VBA-E] positionnement dans une feuille excel
    Par fast&furious dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 28/01/2007, 12h59
  2. [VBA - E] - Manipulation de 2 feuilles EXCEL
    Par jimbololo dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 29/06/2006, 15h42
  3. [VBA-PP]Ecrire dans une feuille Excel
    Par alpking dans le forum Macros et VBA Excel
    Réponses: 21
    Dernier message: 27/04/2006, 18h18
  4. [VBA]Userform mobile dans une feuille excel
    Par fikren dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 28/10/2005, 15h45
  5. [VBA-E]Type d'une feuille excel
    Par LitteulKevin dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 18/05/2004, 14h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo