Vider cellules par choix dans menu déroulant

cityinterface Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -  
Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   -
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!


A voir également:

3 réponses

Gyrus Messages postés 3334 Date d'inscription   Statut Membre Dernière intervention   526
 
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 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
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 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 135
 
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   Statut Membre Dernière intervention  
 
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 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
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