Vider cellules par choix dans menu déroulant

Bonjour,

Dans un tableau Excel, j'ai besoin que le choix d'un menu déroulant aboutisse à l'effacement de 2 cellules contenant des sommes entrées manuellement.
J'ai utilisé le code suivant:

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Union([A26], [A26], Range("A26:A26"))) Is Nothing Then Exit Sub
ActiveSheet.Unprotect
Range("D26:E26").Select
Selection.ClearContents
ActiveSheet.Protect
End Sub

L'effacement fonctionne mais le pb c'est que je ne suis plus autorisé ensuite en changeant de choix dans le menu de la cellule qui le pilote à entrer une valeur numérique dans les 2 cellules cibles.
L'erreur: "Un utilisateur a restreint les valeurs que peut accepter cette cellule".

Une idée? Je bloque là.
Merci!

3 réponses

  1. Bonjour,

    L'union de 3 fois la même cellule, c'est mon petit plaisir... Non à rien, c'est juste que étant une bille j'ai compilé plusieurs scripts et je ne sais pas faire autrement en l'état ;))

    Donc maintenant ça marche! Merci, merci Gyrus! Cependant, nouveau petit soucis:

    Evidement je cherche à exécuter ce script sur plusieurs cellules et là VBA me jette.
    Faut-il ouvrir un code VBA pour chaque cellule?
    L'idée initiale qui malheureusement ne marche pas:

    Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, Union([A26], [A26], Range("A26:A26"))) Is Nothing Then Exit Sub
    ActiveSheet.Unprotect
    Range("D26:E26").Select
    Selection.ClearContents
    ActiveSheet.Protect

    Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, Union([A27], [A27], Range("A27:A27"))) Is Nothing Then Exit Sub
    ActiveSheet.Unprotect
    Range("D27:E27").Select
    Selection.ClearContents
    ActiveSheet.Protect

    Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, Union([A28], [A28], Range("A28:A28"))) Is Nothing Then Exit Sub
    ActiveSheet.Unprotect
    Range("D28:E28").Select
    Selection.ClearContents
    ActiveSheet.Protect
    End Sub

    Merci si quelqu'un sait me faire avancer...;)

    Antoine
    0
    1. Contributeur
      Comme tu ne décris pas ce que tu veux exactement à tout hasard je dirais :
      Private Sub Worksheet_Change(ByVal Target As Range)
          Dim pl As Range
          Set pl = Intersect(Target, Range("A26:A28"))
          If pl Is Nothing Then Exit Sub
          ActiveSheet.Unprotect
          Application.EnableEvents = False
          pl.Offset(, 3).Resize(, 2).ClearContents
          Application.EnableEvents = True
          ActiveSheet.Protect
      End Sub

      eric
      0
  2. Contributeur
    Bonjour,

    Union([A26], [A26], Range("A26:A26")) 

    A quoi ça sert de faire l'union de 3 fois la même cellule ?
    eric
    0
    1. Salut Eriiic,

      Parce qu'il a pompé un code ici et inadapté à sa demande, qu'il a d'ailleurs reformulé à la fin de la discussion sans répondre à ma demande de renseignement
      Cordialement
      0
  3. Bonjour,

    Le message que tu indiques doit provenir de la validation de données appliquée à la plage D26:E26.
    Regarde dans l'onglet DONNEES > Outils de données > Validation des données.

    A+
    0