Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 28/12/2011, 15h41   #1
Invité régulier
 
Femme
Développeur décisionnel
Inscription : décembre 2011
Messages : 15
Détails du profil
Informations personnelles :
Sexe : Femme

Informations professionnelles :
Activité : Développeur décisionnel

Informations forums :
Inscription : décembre 2011
Messages : 15
Points : 8
Points : 8
Par défaut Creation d'un événement Worksheet_AfterCopy

Bonjour à tous,

Je souhaiterais dans le cadres d'une macro VBA copier une feuille sans les bouton (exporter les données en quelque sorte) sans que l'utilisateur n'ait à appuyer sur un bouton. Bref, que les bouton de macro disparaissent de la feuille dès lors que la feuille est copiée vers un autre classeur.

J'ai essayé de créer un événement Worksheet_AfterCopy mais ça ne fonctionne pas???
Si quelqu'un a une solution intéressante je suis partante (sans passer par un bouton de macro).

Je bosse sur Excel 2003.
fama78 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2011, 16h10   #2
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 849
Points : 16 849
Envoyer un message via Skype™ à bbil
quel est le code utilisé pour la copie ?
bbil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2011, 14h26   #3
Invité régulier
 
Femme
Développeur décisionnel
Inscription : décembre 2011
Messages : 15
Détails du profil
Informations personnelles :
Sexe : Femme

Informations professionnelles :
Activité : Développeur décisionnel

Informations forums :
Inscription : décembre 2011
Messages : 15
Points : 8
Points : 8
là est la subtilité... il n'ya pas de code à proprement dit.

C'est lorsque l'utilisateur fait clic droit sur l'onglet de sa feuille et sélectionne "Deplacer ou copier..."

Y-a-t-il une solution sans passer par un bouton de macro?

Je vais reprécisez ma demande car je vois que ça n'a pas l'air clair.

Ce que je voudrait en comme c'est créer un module de classe avec l'événment Worksheet_Copy (le code se générerait au moment où l'utilisateur après un clic droit sur l'onglet de la feuille la déplacera ou la copiera...)

J'espère que vous serez plus inspirez que moi (je suis nulle quand on part dans la programmartion de module de classe).

Un bouton ne résouderait qu'en partie le problème (y'aura toujours quelqu'un pour copier la feuille avec le clic droit sur l'onglet)
fama78 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2011, 14h34   #4
Expert Confirmé Sénior
 
Avatar de Qwazerty
 
Homme Stéphane
La très haute tension :D
Inscription : avril 2002
Messages : 2 446
Détails du profil
Informations personnelles :
Nom : Homme Stéphane
Âge : 32
Localisation : France

Informations professionnelles :
Activité : La très haute tension :D
Secteur : Service public

Informations forums :
Inscription : avril 2002
Messages : 2 446
Points : 4 620
Points : 4 620
Envoyer un message via MSN à Qwazerty
Salut

Ça me parait pas simple...
Pour pouvoir ajouter un tel évènement il faudrait sans doute piéger l'appelle de l'API responsable de la copy...

Au lieu de supprimer les boutons, pourquoi dans le code des boutons ne pas tenir compte du nom (ou encore mieux du CodeName) de la feuille, la macro ne s’exécuterait que si celle-ci est appelée par la feuille "principale".

Ou alors demander la destruction des boutons lors de l'affichage de l'onglet si le Name ou CodeName ne correspond pas à la feuille principale.

++
Qwaz
__________________

MagicQwaz := Harry Potter la baguette en moins
Le monde dans lequel on vit
HammerFest
Ma page perso DVP - Dernier Tutoriel : VBA & Internet Explorer
Qwazerty est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2011, 15h13   #5
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 849
Points : 16 849
Envoyer un message via Skype™ à bbil
Je ne connais pas d'événements Worksheet_AfterCopy ...

mais tu peu utiliser l'événement _SheetActivate de l'objet application :

module de classe clApp
Code :
1
2
3
4
5
6
7
8
Public WithEvents App As Application
 
Private Sub App_SheetActivate(ByVal sh As Object)
 
 
 MsgBox "Nouvelle feuille " & sh.Name & " Classeur : " & sh.Parent.Name
 
End Sub
reste à adapter de façon à supprimer le bouton s'il est présent ...


Code d'initialisation dans un module :

Code :
1
2
3
4
Dim X As New clAPP
  Sub InitializeApp()
    Set X.App = Application
End Sub
bbil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2011, 15h21   #6
Membre Expert
 
Avatar de Fvandermeulen
 
Frédéric Vandermeulen
Inscription : juillet 2007
Messages : 1 730
Détails du profil
Informations personnelles :
Nom : Frédéric Vandermeulen
Âge : 36
Localisation : Belgique

Informations forums :
Inscription : juillet 2007
Messages : 1 730
Points : 2 131
Points : 2 131
Citation:
Envoyé par fama78 Voir le message
...
Un bouton ne résouderait qu'en partie le problème (y'aura toujours quelqu'un pour copier la feuille avec le clic droit sur l'onglet)
Sauf si tu mets une protection sur ton classeur.
Par exemple à l'activation de la feuille concernée (tu peux aussi le faire à l'ouverture du classeur, ou de manière permanente)
Code :
1
2
3
4
5
Private Sub Worksheet_Activate()
 
ActiveWorkbook.Protect Password:="LeMotDePasse", Structure:=True, Windows:=True
 
End Sub
Sans oublier la désactivation si tu quitte la feuille

Code :
1
2
3
4
Private Sub Worksheet_Deactivate()
 
ActiveWorkbook.Unprotect Password:="LeMotDePasse"
End Sub
Tu n'as plus qu'a désactiver la protection au moment voulu dans ta procédure liée à ton bouton pour la remEttre ensuite.

Pour contourner, l'utilisateur doit cracker le mot de passe, je sais que c'est possible mais bon, faut pas pousser
__________________
N'oubliez pas le si votre problème est solutionné.
Fvandermeulen est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2011, 16h39   #7
Invité régulier
 
Femme
Développeur décisionnel
Inscription : décembre 2011
Messages : 15
Détails du profil
Informations personnelles :
Sexe : Femme

Informations professionnelles :
Activité : Développeur décisionnel

Informations forums :
Inscription : décembre 2011
Messages : 15
Points : 8
Points : 8
Merci pour toutes vos réponses je veux prendre un peu de tout ça et voir ce que cela donne (protection de la feuille, masquer les onglets et création d'un bouton "copier la feuille".
fama78 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h16.


 
 
 
 
Partenaires

Hébergement Web