Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

petit probleme d'un novice !

4 réponses
Avatar
jpp
Bonjour tout le monde,

mon soucis ....... j'ai une feuille execl que je change et renomme tous les
jours en partant d'une feuille de base comportant 3 colonnes ... ref,
désignation, qté. .... .... qté vierge ......... bon , ça, c'est ok !

j'aimerais en cliquant dans n'importe quelle cellule "qté", ajouter une
nouvelle valeur a cette cellule. quand j'en ressors, si elle était vide,
j'ai la quantité inscrite, (normal ! ) mais si elle était déjà remplie, il
apparaît le vrai total .... ex:


qté 3 ..... je clique ... la cellule devient vide ... je tape 7 et je vais
voir une autre ref ..... il apparaît ( a la place de 7 ) ....10 ... si
j'avais tapé -2 .... sur l'évenemet on excite ... il apparaît 1.

D'abord, j'aimerais savoir si cette pratique est possible ? ...on activate
et on excite.
on activate, je récupère la vieille valeur ... 3 ou 0 si elle est vierge ..
dans une variable et ça clear la cellule,
je tape ma nouvelle valeur, je resors en cliquant ailleurs ( donc sur le
onexcite) ... j'obtiens mon addition ou ma soustraction de ma nouvelle
valeur.
ou faut il passer par une 4 ème colonne ? ............... j'y mets ma
valeur ...+7 ou -2 et quand je vais autre part .... je fais
l'addition dans la cellule "qté" et je clear celle où j'avais +7 ou -2

laquelle est la bonne solution ? et auriez vous un bout de code pour
m'aiguiller ?

merci
jpp

4 réponses

Avatar
Hervé
Salut Jpp,
Regarde si cela convient !
En sopposant que la colonne qté soit la C :
A mettre dans le module de ta feuille :

Dim Valeur As Double

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [C:C]) Is Nothing Then
On Error Resume Next
Application.EnableEvents = False
Target.Value = Target.Value + Valeur
If Err.Number <> 0 Then Valeur = 0
Application.EnableEvents = True
End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, [C:C]) Is Nothing Then
On Error Resume Next
Valeur = Target.Value
If Err.Number <> 0 Then Valeur = 0
End If
End Sub

Hervé.

"jpp" a écrit dans le message de news:
cebj3m$kr2$
Bonjour tout le monde,

mon soucis ....... j'ai une feuille execl que je change et renomme tous
les

jours en partant d'une feuille de base comportant 3 colonnes ... ref,
désignation, qté. .... .... qté vierge ......... bon , ça, c'est ok !

j'aimerais en cliquant dans n'importe quelle cellule "qté", ajouter une
nouvelle valeur a cette cellule. quand j'en ressors, si elle était vide,
j'ai la quantité inscrite, (normal ! ) mais si elle était déjà remplie, il
apparaît le vrai total .... ex:


qté 3 ..... je clique ... la cellule devient vide ... je tape 7 et je
vais

voir une autre ref ..... il apparaît ( a la place de 7 ) ....10 ... si
j'avais tapé -2 .... sur l'évenemet on excite ... il apparaît 1.

D'abord, j'aimerais savoir si cette pratique est possible ? ...on activate
et on excite.
on activate, je récupère la vieille valeur ... 3 ou 0 si elle est vierge
..

dans une variable et ça clear la cellule,
je tape ma nouvelle valeur, je resors en cliquant ailleurs ( donc sur le
onexcite) ... j'obtiens mon addition ou ma soustraction de ma nouvelle
valeur.
ou faut il passer par une 4 ème colonne ? ............... j'y mets ma
valeur ...+7 ou -2 et quand je vais autre part .... je fais
l'addition dans la cellule "qté" et je clear celle où j'avais +7 ou -2

laquelle est la bonne solution ? et auriez vous un bout de code pour
m'aiguiller ?

merci
jpp




Avatar
ephilibert
Bonjour Jpp, les lignes suivantes placées au niveau de ta feuille
devrait fonctionner:

Option Explicit
Dim Cel As Range
Dim Valeur

Private Sub Worksheet_Change(ByVal Target As Range)

Application.EnableEvents = False
Cel.Value = Valeur + Cel.Value
Application.EnableEvents = True

End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Set Cel = ActiveCell
Valeur = ActiveCell.Value

End Sub
Avatar
jpp
Hervé a écrit dernièrement :

:: Salut Jpp,
:: Regarde si cela convient !
:: En sopposant que la colonne qté soit la C :

c'est bien la "C"

:: A mettre dans le module de ta feuille :
::
:: Dim Valeur As Double
::
:: Private Sub Worksheet_Change(ByVal Target As Range)
:: If Not Intersect(Target, [C:C]) Is Nothing Then
:: On Error Resume Next
:: Application.EnableEvents = False
:: Target.Value = Target.Value + Valeur
:: If Err.Number <> 0 Then Valeur = 0
:: Application.EnableEvents = True
:: End If
:: End Sub
::
:: Private Sub Worksheet_SelectionChange(ByVal Target As Range)
:: If Not Intersect(Target, [C:C]) Is Nothing Then
:: On Error Resume Next
:: Valeur = Target.Value
:: If Err.Number <> 0 Then Valeur = 0
:: End If
:: End Sub
::
:: Hervé.
::

Merci Hervé ... a lire comme ça, je n'y comprend pas grand chose... pas
grave .. ça viendra ! Bon je vais tester....le souci, c'est que j'ai execl
au travail et que je poste ici que de chez moi ..... donc le test se fera
que lundi

Encore merci pour ta réponse et le temps passé.
Avatar
jpp
manu a écrit dernièrement :

:: Bonjour Jpp, les lignes suivantes placées au niveau de ta feuille
:: devrait fonctionner:
::
:: Option Explicit
:: Dim Cel As Range
:: Dim Valeur
::
:: Private Sub Worksheet_Change(ByVal Target As Range)
::
:: Application.EnableEvents = False
:: Cel.Value = Valeur + Cel.Value
:: Application.EnableEvents = True
::
:: End Sub
::
:: Private Sub Worksheet_SelectionChange(ByVal Target As Range)
::
:: Set Cel = ActiveCell
:: Valeur = ActiveCell.Value
::
:: End Sub

Ok ..... merci bien
je vais tester lundi au boulot