beber4x
Messages postés12Date d'inscriptionsamedi 25 août 2007StatutMembreDernière intervention27 août 2007
-
27 août 2007 à 16:28
beber4x
Messages postés12Date d'inscriptionsamedi 25 août 2007StatutMembreDernière intervention27 août 2007
-
27 août 2007 à 20:51
j ai reé un petit compteur , voila le code
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Plage As Range
Set Plage = Intersect(Target, Range("b45"))
If Plage Is Nothing Then Exit Sub
For Each cellule In Plage
If cellule.Value = 1 Then
Range("h7").Value = Range("h7").Value + 1
End If
Next
End Sub
il est fonctionnel mais mon probleme est le suivant:
Quand je rentre la valeur 1 dans la case b45 , la case h7 s incremente de 1.
Puis je vide b45 ,valide ,je reecrit 1 , je valide ,et h7 s incremente de 1 de plus ,soit 2.
Voila le pour fonctionement normal.
Par contre, si je passe par une formule dans la cellule dont le resultat est 1, rien ne se passe!!
Je pense que la macro ne sais pas lire le resultat d une formule dans une cellule.
Pouvez vous m aider a resoudre ce probleme ?
cs_Tioneb
Messages postés193Date d'inscriptiondimanche 16 décembre 2001StatutMembreDernière intervention29 juillet 2015 27 août 2007 à 17:06
Salut,
je pense que ton code est prévu pour fonctionner avec excel (VBA). Au lieu d'utiliser range("h7").value+1, essaye avec range("h7").FormulaLocal+1 et normalement ça devrait prendre en compte le résultat de la formule de la cellule (dans l'exemple H7)
@+
--------------------------------------------------------------------------
Visitez mon site sur http://bp-software.ifrance.com/
cs_Tioneb
Messages postés193Date d'inscriptiondimanche 16 décembre 2001StatutMembreDernière intervention29 juillet 2015 27 août 2007 à 17:11
Excuse moi ma réponse ne fonctionne pas! "formulalocal" prend bien en compte le résultat d'une formule mais par contre, quand on fait "+1" dans la macro ça ne fonctionne pas! J'essaye de trouver et si je trouve quelque chose, je poste...
--------------------------------------------------------------------------
Visitez mon site sur http://bp-software.ifrance.com/
cs_Tioneb
Messages postés193Date d'inscriptiondimanche 16 décembre 2001StatutMembreDernière intervention29 juillet 2015 27 août 2007 à 17:23
Eh je me tape la honte quand même, j'ai répondu complètement à coté!!!!! En, je pense que tu voulais dire que si tu mets une formule dans B45 (ex: =A1-1) et que tu tape "2" dans A1, H7 ne s'incrémente pas. Si ta macro ne doit réagir seulement avec B45, tu peux peut-être faire plus simple, car dans ce cas je ne vois pas pourquoi tu utilise "intersect" (qui, au passage, je ne sais pas à quoi elle sert, si quelqu'un peut l'expliquer au passage...)
--------------------------------------------------------------------------
Visitez mon site sur http://bp-software.ifrance.com/
beber4x
Messages postés12Date d'inscriptionsamedi 25 août 2007StatutMembreDernière intervention27 août 2007 27 août 2007 à 17:54
bon j aifait ca mais ca marche presque trop bien LOL
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Plage As Range
Range("c45").Value = Range("b45").Value
Set Plage = Intersect(Target, Range("c45"))
If Plage Is Nothing Then Exit Sub
For Each cellule In Plage
If cellule.Value = 1 Then
Range("h7").Value = Range("h7").Value + 1
End If
Next
End Sub
le compteur declenche au 1er qui apparait mais il ne s arrete plus arf!!!
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 27 août 2007 à 20:04
Normal, faut remettre à 0 à chaaque vérif...
Private Sub Worksheet_Change(ByVal Target As Range)
Range("H7").Value = 0
Dim Plage As RangeRange("c45").Value Range("b45").Value Set Plage Intersect(Target, Range("c45"))
If Plage Is Nothing Then Exit Sub
For Each cellule In Plage
If cellule.Value = 1 Then
Range("h7").Value = Range("h7").Value + 1
End If
Next
End Sub
cs_Tioneb
Messages postés193Date d'inscriptiondimanche 16 décembre 2001StatutMembreDernière intervention29 juillet 2015 27 août 2007 à 20:22
Sinon, si tu mets une formule dans b45, tu peux utiliser le sub "Worksheet_Calculate()" qui est exécuté seulement s'il y a une formule qui se calcule et dedans tu vérifis si l'utilisateur à entré des valeurs qui entrent en scène lors du calcul de la formule et tu incrémente si c'est le cas. C'est peu-être plus barbare mais je pense que ça devrait fonctionner. Enfin, moi je dis ça, je dis rien....
--------------------------------------------------------------------------
Visitez mon site sur http://bp-software.ifrance.com/
beber4x
Messages postés12Date d'inscriptionsamedi 25 août 2007StatutMembreDernière intervention27 août 2007 27 août 2007 à 20:51
ha be voila se code la fonctionne PRESQUE
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Plage As Range
Range("c45").Value = Range("b45").Value
Set Plage = Intersect(Target, Range("c45"))
If Plage Is Nothing Then Exit Sub
For Each cellule In Plage
If cellule.Value = 1 Then
Range("h7").Value = Range("h7").Value + 1
Range("c45").Value = 0
End If
Next
End Sub
Mais il demarre a 2 ????? et incrment comme lui faut avec +1 a chaque foi