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 :

Interdire de déplacer (Contrôle X) [XL-365]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2017
    Messages
    1 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2017
    Messages : 1 291
    Par défaut Interdire de déplacer (Contrôle X)
    Bonjour

    je voudrai interdire le "Ctrl X" pour éviter le déplacement des formules et se retrouver avec des cellules vides tout en autorisant le "Ctrl C" / "Ctrl V" pour copier

    L'essai le plus concluant trouvé est le suivant :
    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
    Sub InterdireCouper()
      On Error Resume Next
      With Application
        'interdire le raccourci Ctrl + X
        .OnKey "^x", ""
        'interdire le couper
        .CommandBars("Edit").FindControl(ID:=21).Enabled = False
        .CommandBars("Cell").FindControl(ID:=21).Enabled = False
        .CommandBars("Column").FindControl(ID:=21).Enabled = False
        .CommandBars("Row").FindControl(ID:=21).Enabled = False
        .CommandBars("Button").FindControl(ID:=21).Enabled = False
        .CommandBars("Formula Bar").FindControl(ID:=21).Enabled = False
        .CommandBars("Worksheet Menu Bar").FindControl(ID:=21).Enabled = False
        .CommandBars("Standard").FindControl(ID:=21).Enabled = False
      End With
    End Sub
     
    Sub RetablirCouper()
      On Error Resume Next
      With Application
        ' rétablir le raccourci Ctrl + X
        .OnKey "^x"
       ' Rétablir le couper
        .CommandBars("Edit").FindControl(ID:=21).Enabled = True
        .CommandBars("Cell").FindControl(ID:=21).Enabled = True
        .CommandBars("Column").FindControl(ID:=21).Enabled = True
        .CommandBars("Row").FindControl(ID:=21).Enabled = True
        .CommandBars("Button").FindControl(ID:=21).Enabled = True
        .CommandBars("Formula Bar").FindControl(ID:=21).Enabled = True
        .CommandBars("Worksheet Menu Bar").FindControl(ID:=21).Enabled = True
        .CommandBars("Standard").FindControl(ID:=21).Enabled = True
    End With
    End Sub
    mais cela me semble dangereux... et difficilement compréhensible...

    Peut-on faire plus simple ?

  2. #2
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 478
    Par défaut
    Bonjour,

    Pourquoi interdire ????
    N'est-ce pas plus positif d'expliquer ?

  3. #3
    Membre éprouvé
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2017
    Messages
    1 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2017
    Messages : 1 291
    Par défaut
    Bonjour Patrice

    OUI !!! j'ai expliqué... mais l'utilisateur oublie, plongé dans ses pensées métier, il devrait faire "ctrl C" / "ctrl V" mais il fait "Ctrl X" / "ctrl V"...du coup il casse les formules... Ok c'est son pb, mais je préférerai lui interdire...

    Je viens de lire une prose sur onkey... pas trouvé encore la solution

  4. #4
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 478
    Par défaut
    Citation Envoyé par retraite83 Voir le message
    OUI !!! j'ai expliqué... mais l'utilisateur oublie, plongé dans ses pensées métier, il devrait faire "ctrl C" / "ctrl V" mais il fait "Ctrl X" / "ctrl V"...du coup il casse les formules... Ok c'est son pb, mais je préférerai lui interdire...
    Pas besoin d'un usine à gaz, il suffit de protéger la feuille (les formules).

  5. #5
    Membre éprouvé
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2017
    Messages
    1 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2017
    Messages : 1 291
    Par défaut
    Bonjour

    je viens de tester, ce n'est pas suffisant

    dans une feuille F1 j'ai une cellule C4 sans formule où on peut saisir une donnée

    dans la feuille F2 j'ai une cellule dans laquelle j'ai la formule
    si je fais copier/coller de C4 en C5 dans F1 j'ai bien dans la feuille F2
    si je fais couper/coller (Ctrl - X) de C4 en C5 dans F1 j'ai dans la feuille F2
    C'est cela que je veux interdire

  6. #6
    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,
    Lorsque l'on protège une feuille, on ne peux pas faire de Couper/Coller des cellules verrouillées mais en revanche on peut faire une Copie
    Pour empêcher la sélection de cellules et ainsi éviter le Copier/Coller, il suffit de décocher l'option Sélectionner les cellules verrouillées comme illustré ci-dessous

    Nom : 210310 dvp SheetProtect.png
Affichages : 212
Taille : 11,3 Ko
    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

  7. #7
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 478
    Par défaut
    Sur la feuille 2 :
    Code formule : Sélectionner tout - Visualiser dans une fenêtre à part
    =INDIRECT("'F1'!C4")
    et
    Code formule : Sélectionner tout - Visualiser dans une fenêtre à part
    =INDIRECT("'F1'!C5")

    Le fait de couper C4 coller en C5 sur F1 ne modifie pas les formules en F2.

    Et si tu veux une formule "tirable" et/ou copiable :
    Code formule : Sélectionner tout - Visualiser dans une fenêtre à part
    =INDIRECT("'F1'!" & ADRESSE(LIGNE(C4);COLONNE(C4)))

    EDIT : Perso j'évite d'utiliser INDIRECT. On peut aussi utiliser DECALER, exemple =DECALER('F1'!A4;0;2)

  8. #8
    Membre éprouvé
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2017
    Messages
    1 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2017
    Messages : 1 291
    Par défaut
    #13

    Bonjour et merci

    Je garde la solution INDIRECT, je ne comprends pas trop DECALER

  9. #9
    Membre éprouvé
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2017
    Messages
    1 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2017
    Messages : 1 291
    Par défaut
    Bonjour

    j'ai aussi trouvé et adapté :

    à l'open du fichier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim Cible As dataObject
     
    Application.OnKey "^x", ""  ' Interdire Ctrl + X
    Set Cible = New dataObject ' Active la référence "Microsoft Forms 2.0 Object Library."
    Cible.setText ""  ‘ Vide presse papier
    Cible.putInClipboard
    Set Cible = Nothing
    et au close
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Application.OnKey "^x"  ' Rétablir Ctrl + X
    cela semble très bien marcher et correspond à mon besoin après une série de tests, mais pour l'ensemble du fichier

    Par contre je ne sais pas s'il y a des effets de bord à une telle solution

    Merci de vos éclairages

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

Discussions similaires

  1. Interdire Couper Déplacer mais autoriser copier coller
    Par mouftie dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 01/12/2014, 18h10
  2. [C#] Interdire le Paint d'un contrôle
    Par hobotalker dans le forum Windows Forms
    Réponses: 4
    Dernier message: 27/02/2007, 19h22
  3. Réponses: 5
    Dernier message: 22/11/2006, 23h24
  4. Déplacer des contrôles en mode RUN
    Par ptisinge dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 15/10/2006, 09h48
  5. Comment déplacer dynamiquement un contrôle
    Par castorameur dans le forum VB 6 et antérieur
    Réponses: 13
    Dernier message: 10/07/2006, 17h59

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