1. Ce site utilise des "témoins de connexion" (cookies) conformes aux textes de l'Union Européenne. Continuer à naviguer sur nos pages vaut acceptation de notre règlement en la matière. En savoir plus.

Eviter le copier coller dans plusieurs listes déroulantes

Discussion dans 'Forum Excel' démarrée par phandil, 22 Mars 2013.

  1. phandil

    phandil XLDnaute Nouveau

    Inscrit depuis le :
    21 Mars 2013
    Messages :
    16
    "J'aime" reçus :
    0
    bonjour,

    j'essaie de protéger les listes déroulantes du copier coller et de l'inscription manuel.

    J'ai 3 listes déroulantes faisant à chaque fois références à 3 feuilles différentes qui ont chacune une liste nommé différente

    Pour l'instant avec mes recherches j'ai trouvé comment protéger une liste mais pas moyen de protéger les 2 autres

    Voici le code

    Code (Text):
    Dim validation As Boolean
    Dim validation1 As Boolean
    Dim validation2 As Boolean

    Dim trouvé As Boolean
    Dim trouvé1 As Boolean
    Dim trouvé2 As Boolean
    validation = False
    validation1 = False
    validation2 = False

    For Each cellule In Sheets("XXXX_test").Range("LISTE_TEST")
        If Target.Value = cellule.Value Then trouvé = True
    Next
    On Error Resume Next
    validation = Target.validation.InCellDropdown
    If validation = True And trouvé = False Then Target.ClearContents
    On Error GoTo 0

    For Each cellule In Sheets("XXXX_FRN").Range("liste_fournisseur")
        If Target.Value = cellule.Value Then trouvé1 = True
    Next
    On Error Resume Next
    validation1 = Target.validation1.InCellDropdown
    If validation1 = True And trouvé1 = False Then Target.ClearContents
    On Error GoTo 0

    For Each cellule In Sheets("XXXX_NIVEAU").Range("liste_niveau")
        If Target.Value = cellule.Value Then trouvé2 = True
    Next
    On Error Resume Next
    validation2 = Target.validation2.InCellDropdown
    If validation2 = True And trouvé2 = False Then Target.ClearContents
    On Error GoTo 0


    End Sub

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Application.EnableEvents = False
    If Not Intersect(Cells.SpecialCells(xlCellTypeAllValidation), Target) Is Nothing Then
        Application.CutCopyMode = False
    End If
    Application.EnableEvents = True
    End Sub

     
    Merci d'avance pour vos réponses
     
  2. Chargement...

    Discussions similaires - Eviter copier coller Forum Date
    INDEX-EQUIV dans plusieurs cellules : eviter le copier-coller dans vba Forum Excel 12 Août 2013
    copîer coller ou integrer formulesau colonnes pour eviter les saisies Forum Excel 29 Décembre 2010
    Copier coller, si mise à jour ajout ligne, éviter doublons Forum Excel 16 Septembre 2010
    eviter un copier coller en valeur Forum Excel 23 Août 2006
    VBA Copier un onglet avec InputBox et éviter les doublons de noms Forum Excel 9 Décembre 2015

  3. Papou-net

    Papou-net XLDnaute Barbatruc

    Inscrit depuis le :
    8 Mai 2007
    Messages :
    4854
    "J'aime" reçus :
    295
    Utilise:
    Excel 2010 (PC)
    Re : Eviter le copier coller dans plusieurs listes déroulantes

    Bonjour phandil,

    Là aussi, tu augmenterais tes chances de réponses en joignant un fichier support de travail pour les éventuels répondeurs.

    A +

    Cordialement.

    PS : est-ce le même fichier que dans ta demande précédente ?
     
  4. phandil

    phandil XLDnaute Nouveau

    Inscrit depuis le :
    21 Mars 2013
    Messages :
    16
    "J'aime" reçus :
    0
    Re : Eviter le copier coller dans plusieurs listes déroulantes

    oui l'autre sujet étant clot j'ai réouvert un fil de discussion ici

    euh pour la création d'un fichier exemple...je vais voir dès que j'ai 5 minutes pour l'adapter

    merci
     
  5. phandil

    phandil XLDnaute Nouveau

    Inscrit depuis le :
    21 Mars 2013
    Messages :
    16
    "J'aime" reçus :
    0
    Re : Eviter le copier coller dans plusieurs listes déroulantes

    Voici une version essai j'espère que ca sera explicite...
     

    Pièces jointes:

  6. Papou-net

    Papou-net XLDnaute Barbatruc

    Inscrit depuis le :
    8 Mai 2007
    Messages :
    4854
    "J'aime" reçus :
    295
    Utilise:
    Excel 2010 (PC)
    Re : Eviter le copier coller dans plusieurs listes déroulantes

    Bonsoir phandil,

    Effectivement, c'est plus explicite avec une pièce jointe.

    Mais le problème est assez ardu à résoudre, car les opérations de copie ne déclenchent pas l'événement Change, donc pas d'action possible sur les cellules déroulantes. Je suis en train d'explorer une piste, mais pour le moment je n'ai pas encore pu finaliser la solution et il se fait tard. Je te tiendrai donc au courant demain, si tout va bien, ou sinon au plus tôt.

    A +

    Cordialement.
     
  7. Papou-net

    Papou-net XLDnaute Barbatruc

    Inscrit depuis le :
    8 Mai 2007
    Messages :
    4854
    "J'aime" reçus :
    295
    Utilise:
    Excel 2010 (PC)
    Re : Eviter le copier coller dans plusieurs listes déroulantes

    RE :

    Finalement, la curiosité étant plus forte que le sommeil, je te propose donc une solution que j'ai trouvée et adaptée à ton exemple.

    Je me suis inspiré d'une publication de MichD sur le forum Microsoft Community, et je l'ai adaptée à ton cas particulier.

    Pour résumer :

    - La sélection de la feuille Feuil1 désactive la fonction de copie par Drag & Drop, la sélection de n'importe quelle autre feuille la rétablit.

    - Un clic droit sur une des cellules à liste de validation vide le Presse-papier et donc rend le Coller inactif.

    Cordialement.


    PS : pour rendre l'exemple plus parlant, et pour vérifier le bon fonctionnement du programme, j'ai modifié les valeurs des plages "essai2" et "essai3".
     

    Pièces jointes:

  8. pascal21

    pascal21 XLDnaute Barbatruc

    Inscrit depuis le :
    24 Septembre 2005
    Messages :
    3055
    "J'aime" reçus :
    12
    Habite à:
    Saint Apollinaire (21) Dijon
    Page d'accueil :
    Utilise:
    Excel 2007 (PC)
    Re : Eviter le copier coller dans plusieurs listes déroulantes

    bonjour à tous
    sans avoir regardé le fichier joint
    une solution, entre autres, permettant de supprimer dans le menu contextuel du clic doit les lignes copier et coller
    à adapter aux cellules concernées et remettre à true lors du changement de feuille
    n'empêche pas le copier coller par ctrl/C et Ctrl/V malheureusement
     
    laetitia90 aime votre message.
  9. DoubleZero

    DoubleZero XLDnaute Barbatruc

    Inscrit depuis le :
    14 Septembre 2010
    Messages :
    5758
    "J'aime" reçus :
    1203
    Utilise:
    Excel 2013 (PC)
    Re : Eviter le copier coller dans plusieurs listes déroulantes

    Bonjour à toutes et à tous,

    Une autre suggestion en pièce jointe.

    Un gros bisou à Papou-net :D !

    A bientôt :)
     

    Pièces jointes:

  10. Papou-net

    Papou-net XLDnaute Barbatruc

    Inscrit depuis le :
    8 Mai 2007
    Messages :
    4854
    "J'aime" reçus :
    295
    Utilise:
    Excel 2010 (PC)
    Re : Eviter le copier coller dans plusieurs listes déroulantes

    Bonjour à tous,

    J'ai repris mon exemple de la veille car j'avais oublié de tester la copie avec les boutons du ruban. Cette copie restait opérationnelle si l'on utilisait le bouton Coller après sélection par clic gauche d'une cellule avec liste de validation. Ce n'est plus possible désormais.

    @ Pascal21 :

    Les commandes de barres d'outils que tu préconises ne fonctionnent plus avec XL2010 et n'empêchent pas les actions par ctl-C et ctl-V, comme la copie par glissement de la souris d'ailleurs.

    @ 00 :

    Très astucieuse ton idée qui respecte la structure d'origine du code de notre ami phandil. Seule petite remarque de ma part : le collage spécial n'est pas désactivé et permet donc de modifier le formatage de la cellule. Mais ce n'est pas forcément un inconvénient, seul le demandeur peut se prononcer sur ce point. Tout ceci ne m'empêche pas de t'envoyer 1999 bisous, en attendant le 2000ème.

    A bientôt.
     

    Pièces jointes:

    laetitia90 et DoubleZero aiment cela.
  11. DoubleZero

    DoubleZero XLDnaute Barbatruc

    Inscrit depuis le :
    14 Septembre 2010
    Messages :
    5758
    "J'aime" reçus :
    1203
    Utilise:
    Excel 2013 (PC)
    Re : Eviter le copier coller dans plusieurs listes déroulantes

    Re-bonjour,

    Voilà qui est réparé :D !

    A bientôt :)
     

    Pièces jointes:

    laetitia90 aime votre message.
  12. laetitia90

    laetitia90 XLDnaute Barbatruc

    Inscrit depuis le :
    20 Juin 2010
    Messages :
    2340
    "J'aime" reçus :
    297
    Sexe :
    Féminin
    Utilise:
    Excel 2007 (PC)
    Re : Eviter le copier coller dans plusieurs listes déroulantes

    bonjour tous :):):)

    pour empecher collage on peut tenter cela

    Code (Text):
     Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
     If Not Intersect(Target, [a1:c1]) Is Nothing And Target.Count > 1 Then Cancel = 1
     If Not Intersect(Target, [a1:c1]) Is Nothing And Target.Count = 1 Then Cancel = 1
    End Sub
    je profite de l'occasion pour féliciter DoubleZero barbatruc:):):):):):):):):)
     
    DoubleZero aime votre message.
  13. laetitia90

    laetitia90 XLDnaute Barbatruc

    Inscrit depuis le :
    20 Juin 2010
    Messages :
    2340
    "J'aime" reçus :
    297
    Sexe :
    Féminin
    Utilise:
    Excel 2007 (PC)
    Re : Eviter le copier coller dans plusieurs listes déroulantes

    re tous:):):)

    une autre piste qui peut être interessante utiliser sendkeys attention quand peut méme sendkeys peut avoir des effets "pervers" par exemple deactiver la touche verr num en tenir compte !!!!
    Code (Text):
     SendKeys "{NUMLOCK}"
    le code pourrait se résumer a une seule ligne mais bon!!!! pas trop de temps sorry

    Code (Text):
     Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     If Not Intersect(Target, [a1:c1]) Is Nothing And Target.Count = 1 Then SendKeys "{ESC}"
    End Sub
    ou encore plus simplement pourquoi pas

    Code (Text):
     Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     If Not Intersect(Target, [a1:c1]) Is Nothing And Target.Count = 1 Then _
     Application.CutCopyMode = False
    End Sub
     
    Dernière édition: 24 Mars 2013
    Papou-net et DoubleZero aiment cela.
  14. Papou-net

    Papou-net XLDnaute Barbatruc

    Inscrit depuis le :
    8 Mai 2007
    Messages :
    4854
    "J'aime" reçus :
    295
    Utilise:
    Excel 2010 (PC)
    Re : Eviter le copier coller dans plusieurs listes déroulantes

    Bonjour à tous,

    Bravo à Laetitia:) pour sa dernière proposition : on ne peut faire plus simple avec une seule procédure.

    Voici donc la formule finale, qui tient compte des listes déroulantes, quelle que soit leur position dans la feuille de calcul et le nombre de cellules sélectionnées :

    Code (Text):
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Application.EnableEvents = False
    If Not Intersect(Target, Cells.SpecialCells(xlCellTypeAllValidation)) Is Nothing Then Application.CutCopyMode = False
    Application.EnableEvents = True
    End Sub
    Fichier ci-joint.

    Cordialement.
     

    Pièces jointes:

    laetitia90 et DoubleZero aiment cela.
  15. phandil

    phandil XLDnaute Nouveau

    Inscrit depuis le :
    21 Mars 2013
    Messages :
    16
    "J'aime" reçus :
    0
    Re : Eviter le copier coller dans plusieurs listes déroulantes

    Bonjour à tous !

    et tout d'abord merci pour vos différentes piste et pour le temps consacré :)

    Quelques remarques sur les solutions proposés repris des différents fichiers excel:

    Pour le classeur 2: Parfait pour le copier-coller seulement j'ai un soucis assez bizarre...dans 2 listes déroulantes j'ai toujours la possibilité d'écrire du texte dans la cellule ! Alors que les 2 autres les cellules sont protégé....

    J'ai un peu de mal à comprendre leur différence...J'envoie le fichier excel en copie

    pour le classeur 3: ATTENTION le copier coller venant d'un programme tierce fonctionne (limitation uniquement situé sur le copier -coller des feuilles il me semble.

    merci d'avance pour vos réponses

    cordialement
     

    Pièces jointes:

  16. Papou-net

    Papou-net XLDnaute Barbatruc

    Inscrit depuis le :
    8 Mai 2007
    Messages :
    4854
    "J'aime" reçus :
    295
    Utilise:
    Excel 2010 (PC)
    Re : Eviter le copier coller dans plusieurs listes déroulantes

    Bonjour à tous,

    RE Phandil :

    Pour ma part, je n'ai relevé qu'une cellule dans ce cas : B4. C'est dû au fait que la plage mentionnée dans la liste de validation (=LISTE_TEST) n'existe pas dans le classeur.

    Essaie peut-être avec la version 4 qui vide le presse-papier si une cellule avec liste de validation est sélectionnée :

    Code (Text):
    Private Declare Function OpenClipboard Lib "user32" _
        (ByVal hwnd As Long) As Long
    Private Declare Function EmptyClipboard Lib "user32" () As Long
    Private Declare Function CloseClipboard Lib "user32" () As Long
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Application.EnableEvents = False
    If Not Intersect(Target, Cells.SpecialCells(xlCellTypeAllValidation)) Is Nothing Then
      OpenClipboard 0
      EmptyClipboard
      CloseClipboard
      Application.CutCopyMode = False
    End If
    Application.EnableEvents = True
    End Sub
    Cordialement.
     

    Pièces jointes:

  17. phandil

    phandil XLDnaute Nouveau

    Inscrit depuis le :
    21 Mars 2013
    Messages :
    16
    "J'aime" reçus :
    0
    Re : Eviter le copier coller dans plusieurs listes déroulantes

    J'avais déjà retravaillé le code pour le copier-coller ==> pas de problème

    Seulement pour le premier point il y a un paramètre qui me semblait ingnifant mais qui visiblement prend tout son sens:

    Dans ma liste déroulante j'ai un blanc !

    et visiblement ce blanc qui peut être une option fait "sauter" la sécurité écriture

    CF fichier en pièce jointe: changement de la liste essai1
     

    Pièces jointes:

  18. Papou-net

    Papou-net XLDnaute Barbatruc

    Inscrit depuis le :
    8 Mai 2007
    Messages :
    4854
    "J'aime" reçus :
    295
    Utilise:
    Excel 2010 (PC)
    Re : Eviter le copier coller dans plusieurs listes déroulantes

    RE Phandil,

    Effectivement, un blanc dans la cellule autorise une saisie non contrôlée par la validation des données. Pour y pallier, il suffit de décocher la case "Ignorer si vide". Cette option n'empêchera pas une valeur nulle dans la cellule.

    Cordialement.
     

    Pièces jointes:

  19. phandil

    phandil XLDnaute Nouveau

    Inscrit depuis le :
    21 Mars 2013
    Messages :
    16
    "J'aime" reçus :
    0
    Re : Eviter le copier coller dans plusieurs listes déroulantes

    ca ne fonctionne pas mais ce n'est pas grave, j'ai remplacé le blanc par un "-"

    merci ;)

    (j'ai un autre soucis encore suite au prochain épisode !)
     

Partager cette page