[RESOLU]Effacer saisie d'une cellule par rapport à une autre

cathodique

XLDnaute Barbatruc
Bonsoir,

N'ayant pas encore bien compris l'utilisation de target, je me tourne vers vous pour résoudre mon problème.

En colonne C, j'ai des types (sur le fichier j'ai mis volvo), je voudrais en utilisant l'évènement change de la feuille faire apparaitre un msgbox et effacer la saisie effectuée en colonne F si le mot "volvo" est en colonne C.

Les données commencent en ligne 9, le nombre de lignes est variable.

Exemple en C9=volvo ------> si on saisit quelque en F9 ---->msgbox+vidage cellule F9

mais on doit pouvoir insérer quelque chose si le mot est différent de "volvo".

En vous remerciant par avance.
 

Pièces jointes

  • Interdir saisie.xls
    31 KB · Affichages: 39
Dernière édition:

JBARBE

XLDnaute Barbatruc
Re : Effacer saisie d'une cellule par rapport à une autre

Bonsoir à tous,

Peut-être ceci si j'ai bien compris :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    ' Test pour la colonne 3
    If Target.Column = 3 Then
        If Target = "volvo" Then
            MsgBox "Attention cela va effacer la valeur de la colonne F"
            Target.Select
            ActiveCell.Offset(0, 3).ClearContents
        End If
    End If
End Sub

bonne nuit !
 

Si...

XLDnaute Barbatruc
Re : Effacer saisie d'une cellule par rapport à une autre

salut

Dans les évènementielles, Target* désigne la sélection (une ou plusieurs cellules) opérée, visée ou ciblée (pour la traduction) donc impliquée par l'évènement.

Il faut interdire ici la modification d'une cellule de la colonne "valeur" donc on teste le changement dans cette colonne.
Code:
Private Sub Worksheet_Change(ByVal R As Range)
 If Intersect(R, [Valeur]) Is Nothing Then Exit Sub 'hors colonne valeur
  If Application.CountIf([Types], "volvo") > 0 Then
    MsgBox "Interdiction mise en place", 16, "Attention..."
    Application.EnableEvents = 0: R = "": Application.EnableEvents = 1
  End If
End Sub

Attention, dans ce cas la cellule sélectionnée change de valeur avec R="" donc on doit se prémunir d'appels récursifs qui peuvent entraîner un blocage irrémédiable (2010) avec la neutralisation des évènements (events =0 ou False) puis leur réactivation obligatoire (events = 1 ou -1 ou True) sous peine de mauvaise surprise.

Tu peux aussi traiter ce problème sans macro, avec une Validation des données !

* afin de simplifier l'écriture, j'ai l'habitude de remplacer ce mot par la lettre R (initiale de Range)
 

Pièces jointes

  • Interdire saisie.xls
    34.5 KB · Affichages: 21

cathodique

XLDnaute Barbatruc
Re : Effacer saisie d'une cellule par rapport à une autre

Bonjour,

Je vous remercie beaucoup.

@Si.. ton code fonctionne très bien, je te remercie aussi pour tes explications. Mais tu as utilisé des plages nommées fixes, ces plages sont variables, dés fois j'ai 3 lignes et d'autres fois 100 lignes.

@JBARBE Merci beaucoup, ton code n'accepte pas le volvo en colonne C. Ce n'est pas vraiment ce que je voulais.
c'est si sur une ligne en colonne C, il y a le mot "volvo" on interdit sur la même ligne colonne F une saisie de valeur.

Merci à vous deux, bonne journée.
 
Dernière édition:

camarchepas

XLDnaute Barbatruc
Re : Effacer saisie d'une cellule par rapport à une autre

Bonjour à tous,

Autre solution possible


Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim trouve As Range
Set trouve = Range("C:C").Find("volvo", lookat:=xlWhole)
If Not trouve Is Nothing Then
  If Range("F" & trouve.Row) <> "" Then
   Application.EnableEvents = False
   Range("F" & trouve.Row) = ""
   Application.EnableEvents = True
   MsgBox ("Impossible")
  End If
End If
End Sub
 

cathodique

XLDnaute Barbatruc
Re : Effacer saisie d'une cellule par rapport à une autre

Bonjour,

Je vous suis très reconnaissant, c'est parfait.

Mon problème est résolu à 100%.

Mais j'ai encore une question qui est en rapport avec ce fichier: comment donner le focus à la cellule de droite au lieu de la cellule du bas, quand valide avec la touche "Entrée"?

En vous remerciant beaucoup.

Bonne journée à tous.
 

cathodique

XLDnaute Barbatruc
Re : Effacer saisie d'une cellule par rapport à une autre

Désolé, je me suis précipité pour tester vos codes avec d'autres fichiers ouverts et du coup je me suis emmêlé.

@camarchepas: ne fonctionne pas. ne fonctionne que pour la 1ère occurence trouvée et si on modifie l'occurence trouvée le message apparait (si je modifie le contenu de la cellule contenant le mot volvo).

Merci quand même.

Bonne journée à tous
 
Dernière édition:

cathodique

XLDnaute Barbatruc
Re : Effacer saisie d'une cellule par rapport à une autre

En effet, il possible que je n'ai pas correctement définit mon besoin.

Je te remercie beaucoup pour ton aide. Mon problème est résolu, j'ai utilisé la proposition de JBARBE.

Un grand merci à vous tous.

Bonne journée
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 493
Messages
2 088 956
Membres
103 990
dernier inscrit
lamiadebz