Sommes successives dans une cellule
Bonjour,
je désire faire un fichier qui me permette d'encoder des résultats d'un jeu sur un fichier Excel
Les résultats s'encodent dans une colonne que j’appellerai "A". Ces résultats se copient dans une autre colonne "B" .
Quand j'encode de nouveaux résultats dans la colonne "A", je voudrais qu'ils viennent s'ajouter au nombres déjà présents dans les cellules de la colonne "B"
Si un résultat est encodé en A1 , le résultat en B1 est = B1+A1 .
Cela me donne une référence circulaire bien entendu . J'ai réussi à contourner le problème en activant le calcul itératif avec un nombre d'itération de 1 . Cela fonctionne mais en enregistrant le classeur le calcul se fait une deuxième fois .
Existe-t-il un autre moyen pour faire une addition dans une cellule en conservant la valeur précédente ?
j'espère avoir été clair pour ma première question sur votre forum.
Merci d'avance
Jean - Christophe
Bonjour,
en VBA :
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 And Target.Row > 1 Then
Application.EnableEvents = False
Target.Offset(, 1) = Target.Offset(, 1) + Target
' Target.ClearContents ' s'il faut effacer la saisie en A
Application.EnableEvents = True
End If
End Suberic
Bonjour,
en VBA :
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 1 And Target.Row > 1 Then Application.EnableEvents = False Target.Offset(, 1) = Target.Offset(, 1) + Target ' Target.ClearContents ' s'il faut effacer la saisie en A Application.EnableEvents = True End If End Suberic
Merci pour votre réponse rapide . Je vais tester la macro dans ma feuille de calcul .
Bonne soirée
Bonjour Eric,
Etant assez nouveau dans le monde du vba , j'ai mis un certain temps a intégrer ce code à ma feuille de calcul . Mais j'ai fini par comprendre grâce aux cours de débutants du site .( Merci à ceux qui prennent le temps de rédiger tout cela )
Une dernière question . Si je veux appliquer cette macro à plusieurs colonnes non adjacentes comment doit-on l'écrire dans la ligne
If Target.Column = 1 And Target.Row > 1 Then
Jean-Christophe
Bonjour,
c'est bien, tu as essayé d'être autonome
Si saisie en colonne impaires de A:F :
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Not Intersect(Target, [A:F]) Is Nothing And Target.Row > 1 Then
If Target.Column Mod 2 = 1 Then
Application.EnableEvents = False
Target.Offset(, 1) = Target.Offset(, 1) + Target
' Target.ClearContents ' s'il faut effacer la saisie
Application.EnableEvents = True
End If
End If
End SubSi ça peut être un collé de plusieurs valeurs il faudra compliquer un peu le code.
Mais le problème avec ces systèmes, c'est que tu n'as aucun historique de tes saisies. En cas d'erreur tu as intérêt à savoir quelle touche tu as appuyée par erreur, ou quel était le résultat avant... Pas très fluide du coup.
eric