addition

N

Nadine

Guest
Bonjour

Meilleur Voeux à tout le monde pour cette nouvelle année

Je connais assez bien Excel et un peu de VBA, j'ai appris avec livres ,cdrom et aussi internet, mais cela fait des mois que je cherche à savoir s'il est possible en code VBA de demander à une cellule d'additionner les chiffres que l'on saisirai dedans

Ex: je saisis en A1: 250 et le lendemain 500 est il possible de demander à A1 de faire l'addition et de comptabiliser 750 en code VBA

Je précise que j'ai déjà beaucoup cherché mais pas trouvé, j'ai 49 ans et j'avoue que là je cale, je n'ai peut être pas tout compris

Je remercie quiconque pourra me renseigner
 
B

Bernard

Guest
Bonjour Nadine

J'avais eu un problème pour conserver les données rentrées dans une cellule et je l'avais résolu en ajoutant directement dans la barre de formule les quantités à ajouter dans la cellule : =250+500+100

Peut être que cela peut t'aider

Salut

Bernard
 
C

chris

Guest
Bonjour
Si la solution de Bernard ne te convient pas, cela nécessite un code événementiel qui a chaque tentative de saisie vérifie que tu es dans la cellule voulue, met alors la valeur de la cellule de côté afin de l'ajouter à la valeur saisie.
C'est sûrement faisable mais cela va ralentir Excel à mon avis.
Quel est ton objectif final en fait ?
Chris
 
N

Nadine

Guest
c'est parce que je me suis fait un fichier ou tous les jours je dois additionner des quantités de produits sortis et la somme je dois la defalquer de mon stock

pour moi il serait plus simple de pouvoir inscrire les chiffres à saisir dans une cellule que ceux ci s'additionnent et avec une formule que je ferai je defalquerai la somme de mon stock
 
M

Marc

Guest
Bonjour,

Un début de solution. Lorsque tu changes en A1, B1 augmente du nombre saisie.
Pour cela, la formule en b1 est =b1+a1. (formule contestée par excel :circulaire)

Modifier les paramètres de Excel : Outil - Options - Calcul : cocher itération et mettre le nombre à 1.


Autre solution déjà évoquée: la procédure événementielle (je ne pense pas que la pénalisation Temps soit significative)

A+
 

Pièces jointes

  • ANADINE.zip
    1.4 KB · Affichages: 29
L

le CH'TI160

Guest
salut le FORUM et meilleurs voeux à tous

NADINE je te transmets un fichier proposé sur ce forum il y a peu
il émane de
Auteur: serge (---.globalintranet.net)
Date: 18-12-03 11:39
http://www.excel-downloads.com/html/French/forum/messages/1_61835_61835.htm
je pense qu'il correspond à ce que tu cherches
je ne sais pas comment mettre un lien sur le forum excuses!!


Jean Marie
A+++
 

Pièces jointes

  • AdditionDansCellule.zip
    10.3 KB · Affichages: 24
  • AdditionDansCellule.zip
    10.3 KB · Affichages: 29
  • AdditionDansCellule.zip
    10.3 KB · Affichages: 36
R

Roland

Guest
Bonjour à tous

Question à Marc sur ce sujet.

As-tu essayé ta formule dans plusieurs cellules car chez moi ta solution ne fonctionne pas correctement.
En effet dés que tu change une valeur dans une quelqonque cellule tu regénère le calcul de la feuille et donc à nouveau l'incrémentation de A dans B1 et de A2 dans B2.
Y-a-t-il une option pour éviter ce problème ( le passage en calcul manuel n'en est pas une )

Pour ma part j'ai chercé du côté de la mise en mémoire dans Notestext

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim li As Integer
Dim co As Integer
Dim valeur As Variant
Static ad As String
li = ActiveCell.Row
co = ActiveCell.Column
If ad = ActiveCell.Address Then Exit Sub
ad = ActiveCell.Address
valeur = CVar(Worksheets("Feuil1").Cells(li - 1, co).NoteText)
If valeur = "" Then valeur = 0
Worksheets("Feuil1").Cells(li - 1, co).NoteText Str(Target + valeur)
Worksheets("Feuil1").Cells(li - 1, co).Value = Str(Target + valeur)
End Sub

Cela marche mais ce n'est pas trés propre car on ne peut pas saisir deux fois de suite dans la même case et il faut ajouter à mon programme la limitation des adresses concernées par ce mode de saisie.

Si Nadine est intéressée par cette solution qu'elle m'indique la plage de cellule concernée et j'affinerai ce programme.


A+ Roland
 
J

Jean-Marie

Guest
Bonjour tout le monde

Pour répondre à Nadine, l'itération permet de faire une boucle simple sur le calcul d'une cellule, la valeur du nombre de boucle correspond à la valeur indiquée dans le champ Nb maximum d'itération, dans l'onglet Calcul des options d'Excel.

Pour comprendre ce que je viens de dire :
1) Note la valeur de la cellule B1 elle va changée, (1)
2) Va dans les options de calcul et remplace la valeur d'itération par 2,
3) Valide
4) Regarde maintenant la valeur de la cellule B1, elle a changé, ce qui est normale, le changement de la valeur d'itération provoque le recalcule de la feuille.
Tu peux constater que la valeur de la cellule B1 est égale à l'ancienne valeur du (1)+(2*A1). Et maintenant à chaque fois que le recalcul de la feuille sera fait, l'ancienne valeur sera augmentée de deux fois la valeur de la cellule A1.

Dans ton cas Nadine, je te conseille de ne pas utiliser l'option d'itération, elle a trop de contrainte (ce n'est pas les fils avec André qui me diront le contraire). L'utilisation de macro VBA qui change le mode de calcul sans remettre cette option (il y en a).
L'option est inscrite dans le fichier, mais il suffit d'ouvrir un autre fichier et l'option est caduc.

Bonne journée

@+Jean-Marie
 
R

Roland

Guest
Re Bonjour à tous

Je suis assez d'accord avec Jean-Marie.
J'ai joins un fichier qui met en application ma proposition (post -2) et qui règle le problème des cellules concernée par la fonction.
Par contre il subsiste l'impossibilité de saisir deux fois de suite dans la même cellule. J'ai un problème similaire à celui de l'itération car si je n'interdit pas la saisie consecutive dans la même cellule le simple fait d 'écrire une valeur par le code VBA relance la scrutation de Worksheet_Change et je m'enferme dand une boucle fatale.

Si l'un ou l'autre à une idée merci d'avance. Je pense que si l'on arrive à améliorer ce code il peut constituer une solution assez simple lors l'on souhaite des traitement particulier sur certaines cellules.

Amicalement Roland

Par ailleurs je ne désespère pas qu'il y est une méthode plus simple ....
 

Pièces jointes

  • SaisieInc.zip
    13.3 KB · Affichages: 30
T

Ti

Guest
Nadine, personnellement je ne trouve pas ta manière de faire très sûre, parce que si un matin tu arrives pas très réveillée, que tu tapes ta nouvelle valeur et qu'un peu plus tard tu ne te souviens plus si tu l'as déjà modifiée ou pas, tu n'as plus aucun moyen de contrôle.
Excel te permet de garder l'historique de tes saisies, pourquoi ne pas en profiter en créant deux colonnes supplémentaires dans lesquelles seront inscrites toutes ces valeurs les unes sous les autres, ainsi que la date de saisie.
En A1 il n'y a plus qu'à reporter la somme des valeurs de cette colonne.

Et pour automatiser tout cela tu crées une macro événementielle qui se charge de toute cette cuisine, comme dans l'exemple ci-joint. La saisie se fait directement en A1, la formule n'est pas effacée
 

Pièces jointes

  • IncremenTi.zip
    7.5 KB · Affichages: 40

Discussions similaires

Statistiques des forums

Discussions
313 066
Messages
2 094 955
Membres
106 136
dernier inscrit
MilieBZH