Vider cellules par choix dans menu déroulant

Fermé
cityinterface Messages postés 4 Date d'inscription mardi 1 mars 2016 Statut Membre Dernière intervention 2 mars 2016 - 1 mars 2016 à 23:05
Mike-31 Messages postés 18318 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 26 avril 2024 - 2 mars 2016 à 16:25
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

Gyrus Messages postés 3334 Date d'inscription samedi 20 juillet 2013 Statut Membre Dernière intervention 9 décembre 2016 523
2 mars 2016 à 10:05
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
eriiic Messages postés 24571 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 8 mai 2024 7 216
2 mars 2016 à 12:04
Bonjour,

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

A quoi ça sert de faire l'union de 3 fois la même cellule ?
eric
0
Mike-31 Messages postés 18318 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 26 avril 2024 5 078
Modifié par Mike-31 le 2/03/2016 à 16:29
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
cityinterface Messages postés 4 Date d'inscription mardi 1 mars 2016 Statut Membre Dernière intervention 2 mars 2016
2 mars 2016 à 12:33
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
eriiic Messages postés 24571 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 8 mai 2024 7 216
2 mars 2016 à 13:15
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