Déclenchement macro d'effacement par saisi cellule

Bonjour à tous,

je souhaiterai qu'une macro qui devra effacer les cellules M14 : O26

soit déclenchée lorsque le remplirai la cellule B38 d'une étoile ( * )

ceci se déroule sur une feuille qui comporte pas mal d'inscription VBA ci dessous

par avance je vous remercie pour votre aide

cordialement

Sub EnvoiFeuilMail()

Dim Wbk As Workbook

ThisWorkbook.Sheets("Préjudice").Copy

Set Wbk = ActiveWorkbook

Wbk.SendMail "xxx......xxxxxxx", "Préjudice de " & ThisWorkbook.Sheets("Préjudice").Range("D2") & ThisWorkbook.Sheets("Préjudice").Range("E5") & ThisWorkbook.Sheets("Préjudice").Range("C5") & ThisWorkbook.Sheets("Préjudice").Range("F5"), True

'true pour un avis de reception

Wbk.Close savechanges:=False

Set Wbk = Nothing

End Sub

Private Sub Worksheet_Change(ByVal Target As Range)

Dim i&, deb, pass As Boolean, C

mem = Target.Address(0, 0)

On Error Resume Next

For Each C In Array("D2", "C5", "D7", "D10", "I14", "I16", "I18", "I32", "I34", "G38", "H38", "I38", "J38", "M38", "G40", "H40", "I40", "J40", "M40", "G42", "H42", "I42", "J42", "M42", "G44", "H44", "I44", "J44", "M44", "G46", "H46", "I46", "J46", "M46")

If pass Then

Range(C).Select

pass = 0

Dim lig, col

lig = Target.Row

col = Target.Column

Application.EnableEvents = False

If (lig = 11) And (col = 4) Then

If Not (Cells(8, 4) = "") Then ' si la cellule [BANQUE] n'est pas VIDE !!!

' ALORS si la cellule {CONSTAT ERREUR] n'est pas vide Alors date Sinon ancienne Valeur

Cells(11, 4) = IIf(Cells(11, 4) = "", Date, Cells(11, 4))

End If

End If

Application.EnableEvents = True

If C = "D10" Then

' Si (IIf) la cellule de la date est vide (Range("D10"))

' Alors "mise à la date" Date

' Sinon "la date existante reste" Range("D10")

Range("D10") = IIf(Range("D10") = "", Date, Range("D10"))

End If

Exit Sub

End If

i = i + 1

If mem = C Then: pass = 1: GoTo 1

1 Next C

End Sub

Sub enregistrer()

Dim nom As String

Dim Chemin As String

nom = Range("C5") & "_" & Range("E5") & "_" & Range("F5")

Chemin = "E:\T.E.G\C2 - PREJUDICE EN ATTENTE D'ENVOI\"

If Format(a) <> False Then

ThisWorkbook.SaveAs Chemin & nom, xlOpenXMLWorkbookMacroEnabled

End If

End Sub

Bonjour,

A mettre dans le module de la feuille :

Private Sub Worksheet_Change(ByVal Target As Range)

    If Target.Address(0, 0) <> "B38" Then Exit Sub

    If Target.Value = "*" Then

        Application.EnableEvents = False
        Range("M14:O26").Value = ""
        Application.EnableEvents = True

    End If

End Su

Bonjour

merci pour ta réponse rapide, j'ai installé dans un module ce que tu m'as transmis mais les cellules M14 à O26 ne s'effacent pas...

cordialement

Re,

j'ai précisé que le code devait être placé dans le module de la feuille visée et pas dans un module standard car c'est une procédure événementielle. Le fait d'entrer le signe * dans la cellule B38 et de validé (touche Entrée, tabulation, etc...) effacera les valeurs de la plage

Pour vérifier, mets une pastille debug sur la ligne

Application.EnableEvents = False

et teste en mettant une étoile

si tu ne passes pas en mode debug, c'est que ton code n'est pas où il faut

J'ai pas tout compris, surtout ou il fallait mettre cette ligne supplémentaire, ce que j'ai fait est peut etre bien mauvais car ça ne marche pas, voilà la réponse sur fichier joint

marci

capture vba

Tu as visiblement déjà ajouté du code sur l'évènement

Worksheet_change 

de ta feuille

L'erreur te dit simplement que tu as 2 procédure avec le même nom

Dans la liste déroulante en haut à droite tu as la liste des fonctions disponibles pour la feuille, copie le code de Theze

celui là :

If Target.Address(0, 0) <> "B38" Then Exit Sub

    If Target.Value = "*" Then

        Application.EnableEvents = False
        Range("M14:O26").Value = ""
        Application.EnableEvents = True

    End If

dans la fonction

Worksheet_Change

existante (sans en créer de nouvelle c'est à dire sans réécrire le

Private Sub Worksheet_Change(ByVal Target As Range)

)

Bonjour

je suis désolé mais je n'ai aucune connaissance de VBA, tout ce que vous voyez sur le module a été crée par vos collègues.

Ce langage est pour moi trop technique. De plus dans le menu déroulant je ne trouve pas "Worksheet_Change" mais change seulement....résultat je n'arrive pas à obtenir ce que je cherche à faire

merci pour votre compréhension

cordialement

Bonjour,

Voici la marche à suivre :

touche alt+F11 (alt, touche du coté gauche de la barre Espace) tu te retrouves alors dans ce qu'on appelle le VBE (Visual Basic Editor, l'éditeur de code), tu as deux petites fenêtres sur la gauche, en bas celle des propriétés (tu n'as pas à t'en occuper) et au dessus, celle du "VBAProject", dans cette dernière tu dois avoir autant de modules "Feuille" que tu as de feuilles de calcul dans le classeur et aussi le module du classeur (appelé "ThisWorkbook"), peut être aussi un ou plusieurs modules standards et modules de classe si ce n'est pas un classeur vierge mais un classeur que tu as récupéré. C'est un module de feuille qui nous intéresse ! Si la feuille du classeur où tu veux supprimer les valeurs de la plage "M14:O26" est par exemple la feuille "Feuil1", dans la fenêtre du VBAProject, tu double-cliques sur la feuille correspondante et une fenêtre d'édition s'affiche sur la droite, c'est là que tu colles le code que je t'ai donné, tu reviens dans la feuille de calcul et tu entres une étoile dans la cellule "B38", une fois validé, les valeurs de la plage "M14:O26" doivent disparaître !

je te remercie pour ta patience et je te transmet une capture de ma feuille VBA et voilà ce que j'obtiens lorsque je saisi * dans B38 de ma feuille de travail, également lorsque je supprime *

cordialement

capture2 vba

Re,

Comme te l'a dis TonioMeyer, tu as déjà une procédure événementielle Worksheet_Change() et il ne peut y en exister deux dans le même module donc, il te faut combiner les deux codes !

Postes le code qui se trouve déjà dans le module afin qu'on puisse voir comment intégrer l'un dans l'autre

ça y est j'ai réussi, ta dernière explication m'a fait comprendre qu'il y avait déjà dans ce module la même fonction je les ai mise toutes les deux ensemble c'est génial et ça marche je te remercie pour ton aide ça n'a pas été facile......

cordialement

Rechercher des sujets similaires à "declenchement macro effacement saisi"