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 :

Annulation d'un code thisworkbook dans un userform


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Janvier 2013
    Messages : 32
    Par défaut Annulation d'un code thisworkbook dans un userform
    Bonjour, j'ai ceci dans mon thiworkbook:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
        With Application
            .CellDragAndDrop = False
            .CutCopyMode = False 'Clear clipboard
        End With
    End Sub
    Je voudrais que ce code soit annulé dans le code d'un userform
    Est ce possible?
    Meric à vous

  2. #2
    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
    a l'initialyse de l'userform peut etre tout simplement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    With Application
            .CellDragAndDrop = true
            .CutCopyMode = true'Clear clipboard
        End With
    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

  3. #3
    Expert éminent


    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
    Par défaut
    Citation Envoyé par progheure Voir le message
    ...je voudrais que ce code soit annulé dans le code d'un userform
    Est ce possible?
    Meric à vous
    Bonjour,
    en quoi ce code te gêne-t-il dans ton UserForm ?

  4. #4
    Membre averti
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Janvier 2013
    Messages : 32
    Par défaut
    J'ai essayé ce que tu as dit patrick ca ne fonctionne pas.

    Ca me bloque parce que les utilisateurs ne doivent pas faire de copier coller et ca vide le presse papier en changeant de cellule donc quand je change de cellule je peux pas coller

  5. #5
    Expert éminent


    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
    Par défaut
    Oui mais que vient faire l'userform ici ? as tu accès à tes cellules lorsque l'userform est ouvert ?

  6. #6
    Membre averti
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Janvier 2013
    Messages : 32
    Par défaut
    L'userform me permet d'afficher toutes les feuilles masquées puis de le déverrouiller.

    Je voudrais ensuite pouvoir copier coller librement mais dès que je change de cellule le presse papier se vide.

  7. #7
    Expert éminent


    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
    Par défaut
    tu rajoute une condition dans ton Workbook_SheetSelectionChange .. qui conditionne l'exécution de ton code en fonction de l'état de ta protection ..


    Quel est le code utilisé pour la protection/ déprotection ?

  8. #8
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Citation Envoyé par progheure Voir le message
    L'userform me permet d'afficher toutes les feuilles masquées puis de le déverrouiller.
    Je voudrais ensuite pouvoir copier coller librement mais dès que je change de cellule le presse papier se vide.
    Ce n'est pas très clair.
    Si tu fais un Copier/Coller avec une instruction VBA, il n'y a pas de problème. Bien entendu sans passer par un Select qui est de toute manière à proscrire dans une procédure VBA.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A9:F19").Copy Range("K4")
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  9. #9
    Membre averti
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Janvier 2013
    Messages : 32
    Par défaut
    Le copier coller se fait pas en VBA philippe.

    Les salariés ouvrent le fichier ils double clic ca rentre l'heure selon conditions enregistre et ferme.

    Par contre comme c'est des boulets parfois ils clic à la mauvaise date.
    Donc j'ai fait un bouton avec userform pour déverrouiller toutes les pages, afficher toutes les pages, et pouvoir ensuite apporter les modifs manuellement.

    sauf que quand je fais copier, que je change de cellule et que je veux coller ca a vidé le presse papier.

    Je joinds le fichier fait si vous pouvez trouver plus facilement

    Ne pas rire de cette programmation serait super sympa LOL
    Philippe tu y retrouvera une partie de ton code super que tu m'a trouvé

    Code 26032012

  10. #10
    Expert éminent


    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
    Par défaut
    Citation Envoyé par bbil Voir le message
    ...
    Quel est le code utilisé pour la protection/ dé-protection ?

  11. #11
    Membre averti
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Janvier 2013
    Messages : 32
    Par défaut
    Le code du userform:
    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
    33
    34
    Private Sub CommandButton1_Click()
    With Application
            .CellDragAndDrop = True
            .CutCopyMode = True 'Clear clipboard
        End With
    If TextBox1.Value = "" Then
     
     
    Dim Onglets As Worksheet
    For Each Onglets In Worksheets
    Onglets.Visible = True
    Next Onglets
     
    Dim oCtrl As Office.CommandBarControl
         For Each oCtrl In Application.CommandBars.FindControls(ID:=21)
                oCtrl.Enabled = True
         Next oCtrl
     
         For Each oCtrl In Application.CommandBars.FindControls(ID:=19)
                oCtrl.Enabled = True
         Next oCtrl
     
         Application.CellDragAndDrop = True
         Application.CommandBars("Ply").Enabled = True
         Application.OnKey "^v"
         Application.CellDragAndDrop = True
         Application.CutCopyMode = True 'Clear clipboard
    MsgBox "Les feuilles sont déverouillées"
     
    Else
    MsgBox "Le mot de passe saisi n'est pas correct"
    End If
    Unload Me
    End Sub
    J'ai ceci dans le thisworkbook:
    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
    33
    34
    35
    Sub Workbook_DeActivate()
     
    Dim oCtrl As Office.CommandBarControl
         For Each oCtrl In Application.CommandBars.FindControls(ID:=21)
                oCtrl.Enabled = False
         Next oCtrl
     
         For Each oCtrl In Application.CommandBars.FindControls(ID:=19)
                oCtrl.Enabled = False
         Next oCtrl
     
         Application.CellDragAndDrop = False
    End Sub
     
    Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
        With Application
            .CellDragAndDrop = False
            .CutCopyMode = False 'Clear clipboard
        End With
    End Sub
     
    'enregistre avant de fermer
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Application.ScreenUpdating = False
    Dim Feuil As Worksheet
    For Each Feuil In Sheets
    Feuil.Protect Password:=""
    Next Feuil
    For Each w In Application.Workbooks
    w.Save
    Next w
    Application.CommandBars("Ply").Enabled = True
    Application.OnKey "^v"
    Application.Quit
    End Sub

  12. #12
    Expert éminent


    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
    Par défaut
    Tiens essai :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
      If Sh.ProtectContents Then
        With Application
            .CellDragAndDrop = False
            .CutCopyMode = False 'Clear clipboard
        End With
     End If
    End Sub

  13. #13
    Membre extrêmement actif
    Avatar de NVCfrm
    Homme Profil pro
    Administrateur Système/Réseaux - Developpeur - Consultant
    Inscrit en
    Décembre 2012
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Administrateur Système/Réseaux - Developpeur - Consultant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 037
    Billets dans le blog
    5
    Par défaut
    bonjour,
    le piège du for each éviedemment . L'évènement SelectionChange est générée à chaque itération.
    Le plus simple serait de désactiver la gestion d'évènement avant la boucle et la réactiver à la fin.
    Un condition if ; else serait bien également dans ton WorkBook_SelectionChange.

  14. #14
    Membre averti
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Janvier 2013
    Messages : 32
    Par défaut
    Parfait.
    Merci à toi

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

Discussions similaires

  1. [XL-2007] Problème avec code placé dans "ThisWorkbook"
    Par Fred4345 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 15/02/2012, 17h41
  2. comment associe t-on du code VBA à un bouton dans un userform
    Par AlexFred dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 02/06/2010, 14h52
  3. [XL-2007] Problème de code dans un UserForm
    Par ip_flashor dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 25/04/2010, 09h57
  4. [CODE] Application dans la zone de notification
    Par Rodrigue dans le forum C++Builder
    Réponses: 4
    Dernier message: 29/05/2003, 19h06
  5. [TP]code asm dans une procedure
    Par M.Dlb dans le forum Turbo Pascal
    Réponses: 3
    Dernier message: 17/08/2002, 20h43

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