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 :

Désactiver un Sub worksheet_activate pour un copier coller [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 94
    Par défaut Désactiver un Sub worksheet_activate pour un copier coller
    J'imagine que mon titre n'est pas très clair, mais voici mon problème.
    J'ai une fonction private sub worksheet_activate qui réalise un filtre et un tri automatique à chaque fois qu'on visualise ma feuille pour que les résultats soient toujours à jour.
    D'un autre côté, sur mon classeur, j'ai une macro qui, entre autres, doit faire un copier coller avec liaison d'une feuille A sur cette feuille en question.

    Sauf que du coup, dans mon code, lorsque je copie les cellules de ma feuille A et que je dis de les coller sur l'autre feuille avec ma private sub, très logiquement excel m'actualise mon tri avant de continuer ma macro. Mais en faisant cela, il «*oublie*» la donnée copiée et me fait une erreur lorsque je fais le paste.

    J'ai donc deux questions :
    1. peut-on « bloquer » cette private sub pour ne pas la lancer, ou à défaut, peut-on « mémoriser » la donnée du « copy » pour qu'elle puisse être collée ?
    2. sinon, peut-on faire un copier coller avec liaison sans passer par la sélection des deux feuilles (à l'image d'un range.copy destination:=range normal) ? Là je suis contraint de faire un range.paste link:=True


    Pour info, la partie de mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sheets(FeuilleEtatAvancement).Range(Cells(ligne + 1, 3), Cells(ligne + 1, 5)).Copy
    Sheets(FeuilleTB).Select 'à partir de là, il m'active mon autre code automatique à l'activation de ma sheet FeuilleTB
    Range(Cells(ligne + 1, 3), Cells(ligne + 1, 5)).Select
    ActiveSheet.Paste link:=True
    Merci !

  2. #2
    Membre Expert Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Par défaut
    Bonjour GroFlo, bonjour le forum,

    Pour désactiver les macros événementielles cette ligne de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.EnableEvents = False
    à placer dans le code de ta macro avant de sélectionner l'onglet. Ne surtout pas oublier de remettre à True à la fin avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.EnableEvents = True

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 94
    Par défaut
    Citation Envoyé par patricktoulon Voir le message
    en fait tu n'a pas besoins d'activer pour copier les cellules il faut simplement faire ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets(FeuilleTB).Range(Cells(ligne + 1, 3), Cells(ligne + 1, 5))=Sheets(FeuilleEtatAvancement).Range(Cells(ligne + 1, 3), Cells(ligne + 1, 5))
    Sauf erreur, ça va juste me copier les valeurs, alors que je souhaite copier avec liaison, non ?

    Citation Envoyé par Thautheme Voir le message
    Bonjour GroFlo, bonjour le forum,

    Pour désactiver les macros événementielles cette ligne de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.EnableEvents = False
    à placer dans le code de ta macro avant de sélectionner l'onglet. Ne surtout pas oublier de remettre à True à la fin avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.EnableEvents = True
    Génial, ça fonctionne parfaitement !
    Merci infiniment !

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    Re

    je n'ai pas mis ".value " après le range ca n'est pas pour rien

    pierre = paul

    donc pierre est égal en tout point a Paul

    moi je dis ca je dis rien
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 94
    Par défaut
    Il me semblait que le .value ne se mettait pas car il était la valeur « de base » dans ce genre de cas et donc que VBA comprenait qu'on parlait de value.
    Je viens de faire le test, ça me colle la valeur, pas de liaison : si je modifie manuellement mes cases d'origine, celles collées ne sont pas modifiées pour autant. Ai-je raté quelque chose ?

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut heu
    Bonjour
    ton problème est très simple
    tu utilise un activate donc forcement si du code est écrit dans cet évènement le code va s'exécuter forcement

    en fait tu n'a pas besoins d'activer pour copier les cellules il faut simplement faire ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets(FeuilleTB).Range(Cells(ligne + 1, 3), Cells(ligne + 1, 5))=Sheets(FeuilleEtatAvancement).Range(Cells(ligne + 1, 3), Cells(ligne + 1, 5))
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] Macro qui ne s'exécute pas au bon endroit pour un copier coller
    Par laurasoe dans le forum Macros et VBA Excel
    Réponses: 50
    Dernier message: 24/07/2014, 08h13
  2. Problème Pour Macro copier/coller
    Par Max6546 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 30/04/2013, 11h11
  3. Problème pour un copier / coller
    Par Runsh63 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 13/10/2011, 18h16
  4. Réponses: 10
    Dernier message: 02/03/2009, 11h59
  5. Existe-t-il un activeX pour faire copier/coller sur une image?
    Par bylka dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 22/10/2008, 11h46

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