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 la saisie de texte dans une cellule avec un menu déroulant et du copier/coller


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    RETRAITE
    Inscrit en
    Août 2018
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : RETRAITE

    Informations forums :
    Inscription : Août 2018
    Messages : 32
    Par défaut Interdire la saisie de texte dans une cellule avec un menu déroulant et du copier/coller
    Bonjour,
    J’ai un fichier qui contient plusieurs feuilles de calculs (toutes protégées par un MDP). Toutes mes feuilles sont équipées de menus déroulants pour faciliter les utilisateurs et uniformiser les saisies. Dans les validations des données j’ai :
    Coché : ignoré si vide
    Coché : quand des données non valides sont tapées
    Style : Arrêt

    Cela marche très bien si dans les cellules concernées on tape une valeur différente, elle est refusée.

    Néanmoins, j’ai des petits malins qui arrivent à mettre autre chose avec une solution de Copier/Coller !!
    Question : y a-t-il un moyen pour éviter cela ????

    Une autre solution serait si possible de capter l’événement sélection de la cellule où se trouve le menu déroulant est de dérouler le menu automatiquement pour empêcher l'utilisateur de saisir du texte dans la cellule.
    Est-ce possible ? Je sais qu’on peut le faire avec les combobox control mais avec les déroulements de menu avec les objets de validations je ne sais pas
    Merci d’avance

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut.

    Perso, j'éduque mes utilisateurs à travailler avec l'outil que j'ai créé pour eux, en les informant que s'ils ne respectent pas les règles, ils seront probablement les premiers lésés. Ne pas oublier qu'Excel est un tableur et pas un "outil de développement de logiciel".

    On ne sait pas capter l'événement "Copy" sur une cellule. On peut, sur l'événement Change, vérifier que la cellule contient une donnée valide (i.e. qui est présente dans une liste) et éventuellement informer l'utilisateur ou défaire ce qui vient d'être fait...

    On peut aussi tout verrouiller et ne travailler qu'avec des userforms... C'est cependant dénaturer totalement Excel et créer, sur base d'un outil qui n'est pas fait pour, une appli complète, avec ce que cela suppose comme compétences en développement d'applications à devoir mettre en oeuvre. Le jeu en vaut-il la chandelle? Poser la question revient à y répondre, pour moi
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  3. #3
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Bonsoir à vous, Bonsoir au Forum,

    Désolé pour cette absence (surbooké).

    Pierre!

    De mémoire, il est possible d'empêcher la copie en vidant le presse papier lors d'un changement de sélection dans la feuille de travail.

    Soit.

    Dans le code inhérent à la feuille de travail

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Option Explicit
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Call empêche_copie
    End Sub
    Dans un module standard

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Option Explicit
     
    Private Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long
    Private Declare Function CloseClipboard Lib "user32" () As Long
    Private Declare Function EmptyClipboard Lib "user32" () As Long
     
    Public Sub empêche_copie()
        OpenClipboard 0
        EmptyClipboard
        CloseClipboard
    End Sub
    Eventuellement à adapter en fonction de l'évènement.

    Le code de la procédure est reporté dans la FAQ à la partie consacrée au presse-papier.

    Ciao a tutti. A più tardi.

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

Discussions similaires

  1. [XL-2016] Rechercher puis remplacer du texte dans une cellule avec formule
    Par Flav.76 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 26/08/2019, 16h21
  2. formatage d'un text dans une cellule stringgrid en float
    Par iam dans le forum Bases de données
    Réponses: 4
    Dernier message: 26/04/2006, 15h05
  3. [VBA-E]séparateur de texte dans une cellule
    Par desdenova dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 11/04/2006, 16h44
  4. [VBA] aligner le texte dans une cellule
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/01/2006, 17h07
  5. Faire défiler un texte dans une cellule de tableau
    Par Furius dans le forum Général JavaScript
    Réponses: 18
    Dernier message: 01/12/2005, 17h06

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