Macro lancée quand changement de valeur d'une cellule

Lisette

XLDnaute Junior
Bonjour à tous !
Je bloque sur un point en VBA....
J'ai un petit formulaire à remplir.

En L15, j'ai une validation de choix dans ma cellule ("OUI"/"NON")
Je souhaiterais que quand on choisit "NON", ça supprime le contenu de certaines cellules.
J'ai tenté ceci :

VB:
  Private Sub Worksheet_Change(ByVal Target As Range)
If Range("L15") = "NON" Then
Range("J18:L21,E18:G21,G22,L22,E24:G27,G28,J24:L27,L28,E30:G33,G34,J30:L33,L34" _
        ).Select
    Range("L34").Activate
    Selection.ClearContents
Range("L15").Activate
End If
End Sub

Et ça me fait planter excel direct ! :D
Pourriez-vous me dire où est mon erreur s'il vous plaît ?
Merciiiii
 
Dernière édition:

Jacky67

XLDnaute Barbatruc
Désolée Jacky, j'ai dû mal m'expliquer. Quand on a la tête dans son fichier, on a parfois tendance à prendre des raccourcis.
C’est une feuille de signatures : parfois, le responsable signe et auquel cas, je vais chercher l’info dans un autre onglet.
Si c’est un signataire délégué, je laisse la cellule vide.

Du coup, en F8, j’ai une validation de données, ou je choisis « RESPONSABLE » ou « SIGNATAIRE DELEGUE »
En F9, je cherche à avoir soit :

  • Le nom du responsable qui est repris sur un autre onglet quand on choisit « RESPONSABLE »
  • Un champs vide quand on choisit « SIGNATAIRE DELEGUE »

Ensuite, idem en dessous, mais avec F10 et F11
Puis en-dessous avec F12 et F13
Sachant que les noms des responsables ne sont pas les mêmes en fonction des F.

Si je n'ai pas fait simplement une formule en F9, c'est que je souhaite que dans cette cellule, on puisse noter un nom librement quand c'est "SIGNATAIRE DELEGUE" mais que ma formule revienne quand c'est "RESPONSABLE"
RE...
Autre proposition en Pj
 

Pièces jointes

  • question V1.xlsm
    34.2 KB · Affichages: 6

Lisette

XLDnaute Junior
Re,

Le moins que l'on puisse dire ... c'est que tu ne te simplifies vraiment pas la vie ...!!!

VB:
Private Sub Worksheet_change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Intersect(Target, Range("F8,F10,F12,F14")) Is Nothing Then Exit Sub
Application.EnableEvents = False
With Target
    If .Value = "RESPONSABLE" Then
        .Offset(1, 0) = "='01'!" & IIf(.Row = 8, "E10", IIf(.Row = 10, "E19", IIf(.Row = 12, "J19", "E25")))
    ElseIf .Value = "SIGNATAIRE DELEGUE" Then
        .Offset(1, 0).ClearContents
    End If
End With
Application.EnableEvents = True
End Sub

Tu sais, je fais comme je peux. C'est un fichier excel qui est destiné à être utilisé par des dizaines d'utilisateurs différents, avec des données toujours différentes que je ne peux donc pas lister car en gros, c'est un fichier, des noms différents. De plus, il est beaucoup plus conséquent que la version que je vous ai montrée.

Sinon, merci beaucoup pour ton code, qui fonctione parfaitement, un seul changement que j'ai apporté, j'au mis Offset(1, 0).value="" au lieu de Offset(1, 0).ClearContents, sinon, il me mettait une erreur due aux cellules fusionnées. Mais ceci modifié, c'est PARFAIT ! Merci encore.

Merci @Jacky67 pour tes propositions, mais non, je ne veux pas passer par une validation de données. J'ai des utilisateurs très novices qui, de plus, ne savent pas forcément se rappeler qui est boss de quelle entreprise, justement parce qu'ils changent à chaque fichier te je veux éviter les aller-retour entre les fichiers. Merci encore pour tes propositions
 

James007

XLDnaute Barbatruc
merci beaucoup pour ton code, qui fonctione parfaitement, un seul changement que j'ai apporté, j'au mis Offset(1, 0).value="" au lieu de Offset(1, 0).ClearContents, sinon, il me mettait une erreur due aux cellules fusionnées. Mais ceci modifié, c'est PARFAIT ! Merci encore.

Ravi que tout fonctionne ...:)

Un grand MERCI pour tes remerciements ...;)
 

Statistiques des forums

Discussions
314 647
Messages
2 111 533
Membres
111 191
dernier inscrit
Assjmka