SOS: Mon code désactive le menu coller et c'est pas volontaire...

Signaler
Messages postés
32
Date d'inscription
mercredi 24 mars 2004
Statut
Membre
Dernière intervention
3 août 2006
-
Messages postés
32
Date d'inscription
mercredi 24 mars 2004
Statut
Membre
Dernière intervention
3 août 2006
-
Bonjour,
J'ai un code qui désactive le menu coller et coller spécial dans XL. Il est tjs possible de faire un "coller" en faisant afficher les élément déjà copiés mais les menus "coller" et "coller spécial" sont désactivés dans le menu édit et le menu déroulant lorsqu'on clique droit sur une cellule.Ctrl+V est aussi KO.
Merci pour votre aide,
Michael

La procédure ci-dessous est appelée à chaque Worksheet_SelectionChange

Sub CodePasBon (ByRef rng As Range)
TestMarket.CmdStartSelectedAutomatons.Enabled = True (c'est un commandButton sur la feuille qui a recu le selectionChange event)
End Sub

7 réponses

Messages postés
1488
Date d'inscription
mercredi 5 février 2003
Statut
Membre
Dernière intervention
3 décembre 2007
24
Comme ça on peut pas vraiment t'aider !!! Il faut nous en dire plus :
TestMarket c'est quoi ?
Es-tu certain de l'orthographe de "CmdStartSelectedAutomatons" (manquerait pas un "i" par hasard" ???) ???

Est-ce que le fait de l'activer est succeptible, selon le reste de ton code, de déclancher une procédure événementielle quelconque ???

Parce qu'entre nous, si Coller, Coller spécial et CTRL+V (Shift + Inser entre nous, c'est quand même mieux!!!) sont désactivés, c'est tout simplement parce qu'il n'y a rien à coller !!!

Enjoy

<hr size="2" width="100%">
( Si une réponse vous convient, cliquez sur le bouton "Réponse acceptée". )
Messages postés
32
Date d'inscription
mercredi 24 mars 2004
Statut
Membre
Dernière intervention
3 août 2006

Bonjour,
Sympa de ta part. En fait, TestMarket c'est le nom de la feuille (Sheet) où il y a un command button (CmdStartSelectedAutomatons). Oublie l'orthographe: c'est comme ca qu'on appelle ca en interne. Je vais qd mm essayer de changer le nom pour voir.

Sinon non, a priori ca ne lance rien à part le changement d'apparence (disabled) qui est géré directement par XL.
Sinon, si, il y a à coller. Je peux faire copier sur cette feuille et coller sur une autre... et surtout, je vois ce que je copie dans le "office clipBoard" (presse papier)


Je ne connaissais pas le Shift+inser mais il est aussi désactivé...


Je joins le code sur la feuille "TestMarket":

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

CodePasBon Target

End Sub

Merci de ton attention et bonne journée,
Michael
Messages postés
1488
Date d'inscription
mercredi 5 février 2003
Statut
Membre
Dernière intervention
3 décembre 2007
24
Wai... Il faut savoir que le past ne prend que ce qu'il y a dans le clipboard de Windows. Du coup, si tu n'as pas accès à ces commandes, c'est que le presse-papiers de Windows et vide, tout simplement !!!

Or, tu me dis que le presse-papiers de Excel, lui, ne l'est pas. Donc, il faut regarder de ce coté! Comment accéder au presse-papier de Excel, tel est la question ???
Moi, je ne sais pas. C'est un objet, ça, c'est sûr. Reste à trouver son nom. Moi je te conseille de commencer à chercher dans l'aide via le mot "clipboard" !!!

Mais sur ce coup là, je suis désolé mais je ne peux pas t'aider...

Mais il est impossible que la simple activation d'un bouton engendre un tel problème!!!
Je te conseillerais donc de bien vérifier ton code. De désactiver cette ligne (en la mettant en commentaire en ajoutant une apostrophe en début de ligne), de teste. Si tout fonctionne, c'est que cette ligne est soit fausse syntaxiquement, soit qu'elle déclanche une procédure événementielle quelconque (que je ne peux deviner sans ton code!!!).

Mais as-tu essayé de faire plutôt :

Sheets("TestMarket").Cmdtrucbidule.Enable = True

???

Enjoy

<hr size="2" width="100%">
( Si une réponse vous convient, cliquez sur le bouton "Réponse acceptée". )
Messages postés
32
Date d'inscription
mercredi 24 mars 2004
Statut
Membre
Dernière intervention
3 août 2006

Merci encore pour ton attention!
Non, non tu as tout le code!!!!: Si tu veux je peux t'envoyer une feuille de test par mail. Mais c'est vraiment court:

1/ Sur une feuille, tu mets un commandButton du bon nom (CmdStartSelectedAutomatons) et dans le code VBA de la feuille:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
CodePasBon Target
End Sub

2/ Et tu crées la procédure CodePasBon qque part.

Sub CodePasBon (ByRef rng As Range)
Sheet1(ou nom de la sheet).CmdStartSelectedAutomatons.Enabled = True
End Sub

Et joue avec: effectivement si tu mets la ligne du commandButton en commentaire, tout remarche... Mais c'est justement my prob...(
En fait je voulais activer/désactiver un bouton selon les cellules sélectionnées.)
Si tu n'observes rien, vérifie que Application.enableEvents=true

Je regarde pour le clipBoard mais en tout cas, je le vois se remplir quand je l'affiche dans l'application Edit/Office CilpBoard.

J'ai qd mm bien l'impression que d'une manière ou d'une autre il refuse le paste car il a qque peu sélectionné le bouton? (j'ai essayé de voir le focus en mettant un gotFocus sur le bouton mais non...)
Ou alors, il considère comme tu le dis que changer un commandButton peut potentiellement déclencher autre chose. And so what?

Bonne soirée,

Michael
PS: j'ai essayé le worksheets(...) sans résultat... Changer le nom du button aussi ...
Messages postés
1488
Date d'inscription
mercredi 5 février 2003
Statut
Membre
Dernière intervention
3 décembre 2007
24
Là je dois admettre que ça dépasse mes compétences!!! Déjà, ton code, sur mon Excel 2000 ne fonctionne pas alors...

Je ne peux malheureusement rien faire pour toi...

J'en suis bien désolé, croit moi!
Refait un post sur le forum... Y'a bien un gars de VBF qui saura!

Enjoy

<hr size="2" width="100%">
( Si une réponse vous convient, cliquez sur le bouton "Réponse acceptée". )
Messages postés
133
Date d'inscription
mardi 24 décembre 2002
Statut
Membre
Dernière intervention
8 juin 2012
4
Bonjour,

C'est la procédure Worksheet_SelectionChange qui efface le Clipboard.
Essayer comme ça :

Dans le module de la feuille :

Private Declare Function OpenClipboard& Lib "user32" _
(ByVal hwnd&)
Private Declare Function CloseClipboard& Lib "user32" ()



Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
OpenClipboard 0&
CodePasBon Target
CloseClipboard
End Sub

ctac
Messages postés
32
Date d'inscription
mercredi 24 mars 2004
Statut
Membre
Dernière intervention
3 août 2006

Ouah!
C'est bcp, bcp mieux merci ctac!!!
Juste un petit détail (mais suis déjà bien soulagé): le paste spécial ne marche pas bien (c'est pas l'interface XL).
Encore merci,
Michael