XL 2010 VBA remplacement valeur cellule si

jfglrx

XLDnaute Nouveau
Bonjour à tous,

Pourriez-vous m'éclairer quant au code VBA que je devrais écrire afin d'automatiser ceci :

J'ai un tableau comprenant une dizaine de feuilles.
Chaque feuille comporte +/- 1000 lignes.
Sur chaque feuille, en colonne G, j'encode des quantités.
En colonne B, j'aimerais que si j'écris la lettre "n", la quantité inscrite en colonne G se remette à zéro.
(Ex : en en G92, j'ai écrit 50, si par après en B92 j'écris "n", alors la quantité en G92 retourne à zéro.)

Si possible, je souhaiterais que si je fais CRL+Z, je puisse tout de même retrouver ma valeur initiale en colonne G (dans le cas où j'écrirais "n", en colonne B, par erreur …)

Un grand merci d'avance pour votre aide précieuse
Je sais que ce forum fait des miracles.
 
Solution
Si tu le souhaites mes ces deux lignes en ramarque et efface la procédure retour
mais sache qu'il n'existe ici qu"une seule feuille cachéepour tous les autres feuilles,
J'utilise le numéro de colonne de la feuille cachée pour désigner la feuille sur laquelle tu travailes

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

If Target.Parent.Name = "mem" Then Exit Sub
On Error Resume Next
If Target.Column = 2 And Target = "n" Then
If Err.Number <> 0 Then Exit Sub
'Sheets("mem").Cells(Target.Offset(0, 5), Target.Parent.Index) = Target.Offset(0, 5).Value
'Application.StatusBar = mem

Target.Offset(0, 5) = 0
End If
End Sub
Sub retour()
For Each i In Selection

If i = "n" Then i.Value = "": i.Offset(0, 5) =...

jfglrx

XLDnaute Nouveau
Si tu le souhaites mes ces deux lignes en ramarque et efface la procédure retour
mais sache qu'il n'existe ici qu"une seule feuille cachéepour tous les autres feuilles,
J'utilise le numéro de colonne de la feuille cachée pour désigner la feuille sur laquelle tu travailes

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

If Target.Parent.Name = "mem" Then Exit Sub
On Error Resume Next
If Target.Column = 2 And Target = "n" Then
If Err.Number <> 0 Then Exit Sub
'Sheets("mem").Cells(Target.Offset(0, 5), Target.Parent.Index) = Target.Offset(0, 5).Value
'Application.StatusBar = mem

Target.Offset(0, 5) = 0
End If
End Sub
Sub retour()
For Each i In Selection

If i = "n" Then i.Value = "": i.Offset(0, 5) = Sheets("mem").Cells(i.Offset(0, 5).Row, i.Parent.Index)
Next
End Sub
c'est PARFAIT !

Merci, bonne journée,
 

Discussions similaires

Statistiques des forums

Discussions
315 098
Messages
2 116 198
Membres
112 681
dernier inscrit
romain38