Incrementer une cellule a chaque validation de la feuille

Bonjour,

je pensais que la programmation, c'était comme le velo et que sa ne s'oublier pas :s

mais je me trompe on dirais, ou alors ma mémoire me laisse tomber :p

bref rentrons dans le vif du sujet

je souhaiterais qu'a chaque fois qu'une valeur numérique de la colonne C change (en + ou en -) la cellule N (correspondante, cad sur la même ligne) s'incrémente de 1.

exemple:

je met 3 dans C1, j'appuie sur entrer, il faut que la case N1 passe a N1+1 donc 1

je met 2 dans C99, j'appuie sur entrer, il faut que la case N99 passe a N99+1 donc 1

je met 56 dans C1, j'appuie sur entrer, il faut que la case N1 passe a N1+1 donc 2

j'ai commencer a réfléchir un peut, coter théorique, dans this workbook, il faut que je lui mette un truc du genre

Private Sub Worksheet_Change() // a chaque changement donc en théorie a chaque fois que j'appuie sur entrer

incrementer() //exécute la fonction incrémenter

End Sub // fin

Il faut maintenant remplir la fonction incrementer()

a) il faudrait définir la ligne de la colonne N

b) sélectionner la case correspondante

c) incrémenter la valeur de cette case

la je coince ^^ car je me pose plein de question

pour trouver la ligne, je voulez me base sur la cellule active, mais vu que incrémenter() sera exécuter après la validation de la feuille, elle sera exécuter après que la cellule active est changer ( je suis en C1, jappuis sur entrer, je passe en C2 )

Est ce que la validation de la feuille marche aussi avec fleche droite et fleche gauche ?

pour la sélection de la case,

Sub Selection()

???? //trouver les coordonées de la cellule a incrementer

worksheet("mafeuille").range("celluleAModifier").activate // activation de la cellule a incrementer

End Sub

pour incrementer, est ce que ceci pourrais convenir:

Sub incrementer() // Debut de la fonction

dim val as integer // declaration des variables

selection() // executer la fonction selectionner la cellule N correspondante

Val = activecell.value // val prend la valeur de la cellule active

Activecell.value = Val + 1 // la cellule active est incrementer de 1

End Sub // fin de la fonction

Bonsoir,

Tu peux effectivement faire comme tu l'expliques mais pour ce que tu demandes on peut faire plus court.

  • clique droite sur l'onglet de la feuille concernée
  • choisis "visualiser le code"
  • Dans la fenetre VBA qui apparait, place le code ci-dessous puis enregistre ton fichier
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
'Macro Dan pour Narfe le 4/07/09
'http://www.excel-pratique.com/forum/viewtopic.php?t=12679
Dim num As Integer
If Not Intersect(Target, Range("C1:C" & Range("C65536").End(xlUp).Row)) Is Nothing Then
num = Target.Offset(0, 11)
Target.Offset(0, 11) = num + 1
End If
End Sub

Amicalement

Dan

Sa marche du tonnerre je suis super content

Franchement bien jouer ! problème régler en 6 lignes de codes

j'ai trop perdu la main

Encore merci

Bonjour, je voulais faire une modif mais j'ai du me planter quelque part :

Je voudrais :

je met 8 dans D1, j'appuie sur entrer.

a) garde la valeur D1 dans val_incr

b) garde la valeur C1 dans val_C1

c) calcule la nouvelle valeur de C1 ( C1 = C1 - D1)

d) efface D1

e) calcule la nouvelle valeur de O1 ( O1 = O1 + D1)

code de la solution précédente que j'ai modifier mais ne fonctionne plus ^^ :

Private Sub Worksheet_Change(ByVal Target As Excel.Range)

'Macro Dan pour Narfe le 4/07/09

'https://www.excel-pratique.com/forum/viewtopic.php?t=12679

Dim num As Integer

Dim val_incr As Integer

Dim val_C1 As Integer

If Not Intersect(Target, Range("D1:D" & Range("D65536").End(xlUp).Row)) Is Nothing Then

val_incr = D1 'valeur a additionner a O

val_C1 = C1 'valeur de C1 avant modif

Target.Offset(0, -1) = val_C1 - val_incr 'nouvelle valeur de C1

num = Target.Offset(0, 11) 'valeur de O1 avant modif

Target.Offset(0, 11) = num + val_incr 'nouvelle valeur de O1

End If

End Sub

en admettant que la cellule active est D1

Si j'écrit Target.Offset(0,-1) je suis bien sur la cellule C1 ?

re,

val_incr = D1 'valeur a additionner a O

val_C1 = C1 'valeur de C1 avant modif

mets :

val_incr = Target
val_C1 = Target.offset(0,-1)

Amicalement

Dan

décidément, tu est trop fort ^^

sa marche au poils !!!

Merci

Rechercher des sujets similaires à "incrementer chaque validation feuille"