Excel : remplissage automatique d'une cellule lors de la modification d'une aute [Résolu]

cs_Toxik13 15 Messages postés lundi 22 mai 2006Date d'inscription 4 janvier 2007 Dernière intervention - 22 mai 2006 à 16:29 - Dernière réponse : valtrase 936 Messages postés lundi 19 janvier 2004Date d'inscription 17 mars 2017 Dernière intervention
- 24 mai 2006 à 21:43
Je me suis inventé un cas concret pour vous expliquer mon probleme; imaginons une tombolat.

Dans la colone A il y aurait les prénom,

dans la colone B le nombre de tickets venduse

et dans la colone C la date de modification du nombre de ticket vendu

Je voudrais que lorsque l'on modifie la valeur du nombre de tickets vendus d'une ligne, par exemeple B5, la valeur de C5 soit remplacer par la date du jour.
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
valtrase 936 Messages postés lundi 19 janvier 2004Date d'inscription 17 mars 2017 Dernière intervention - 22 mai 2006 à 19:31
3
Merci
Salut,
 Private SubWorksheet_Change(ByVal Target As Range)

  ' On travaille sur toute la colonne B

  ' Et on vérifie que la cellule qui change se trouve bien dans la colonne B

  Dim MyRange As Range: Set MyRange = ActiveSheet.Range("B:B")

  If IsCellInRange(Target, "B:B") = True Then

    ' A toi de mettre en forme la date en fonction de ce que tu veux

    Target.Offset(0, 1).Value = Date

  End If

End Sub

' Ce code est à mettre dans un module
 
FunctionIsCellInRange(Rng As Range, RangeName As String) As Boolean

  On Error Resume Next

  IsCellInRange = _

      Not (Application.Intersect(Rng, Range(RangeName)) Is Nothing)

End Function

Si t'as des questions n'hésites pas

Cordialement, Jean-Paul  
______________________________________________________________________

Le Savoir n'a de valeur que s'il est partagé

Merci valtrase 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de valtrase
Meilleure réponse
cs_Toxik13 15 Messages postés lundi 22 mai 2006Date d'inscription 4 janvier 2007 Dernière intervention - 23 mai 2006 à 10:34
3
Merci
Ca y est j'ai réussi, j'ai modifié un peu ton code

Dim MyRange As Range: Set MyRange = ActiveSheet.Range(
"B:B")
 

If
IsCellInRange(Target, "B:B") = True Then

par

Dim MyRange As Range: Set MyRange = ActiveSheet.Range(
"B:B")
 

If
IsCellInRange(Target, MyRange) = True Then

et aussi la fonction car je n'ai pas complétement compris le fonctionnement de la tienne

Function IsCellInRange( CelluleAs Range, ZoneAs Range) As Boolean

IsCellInRange = False
    
If Not Intersect(Cellule, Zone) Is Nothing Then IsCellInRange = True

End Function

Merci beaucoup pour ton aide

Merci cs_Toxik13 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de cs_Toxik13
cs_Toxik13 15 Messages postés lundi 22 mai 2006Date d'inscription 4 janvier 2007 Dernière intervention - 22 mai 2006 à 20:41
0
Merci
Ok merci, je regardes ça demain.
Commenter la réponse de cs_Toxik13
cs_Toxik13 15 Messages postés lundi 22 mai 2006Date d'inscription 4 janvier 2007 Dernière intervention - 23 mai 2006 à 09:54
0
Merci
Tu peux m'expliquer le fonctionnement de la fonction ?
Commenter la réponse de cs_Toxik13
kalobit 169 Messages postés mardi 15 juillet 2003Date d'inscription 7 avril 2008 Dernière intervention - 23 mai 2006 à 12:09
0
Merci
salut,

la fonction utilisée par valtrase teste si les deux ranges ont une intersection

comme il s'agit d'un coté d'une cellule et de l'autre d'une plage, si il y a intersection alors la cellule est forcément dans la plage.

is nothing permet de tester la valeur retournée par intersect.

On aurrai pu utiliser aussi union de la manière suivante

if  union (range(cell),range(zone)).address = range(zone).address then
        IsCellInRange = true
else
    IsCellInRange = false
end if

voilà,

++++

[mailto:K@lobit K@lobit] < Ne pas clicker ici
Mon Site < Mais ici
Commenter la réponse de kalobit
valtrase 936 Messages postés lundi 19 janvier 2004Date d'inscription 17 mars 2017 Dernière intervention - 23 mai 2006 à 19:10
0
Merci
Re,
Rien à rajouter à Kalobit.
Fait des essais avec l'autre fonction c'est toujours bon de se creuser les méninges.
Fais du pas à pas (F8) et regardes les valeurs.
Si qqch te chagrine n'hésites pas à demander.
Juste une question tu as changé le code pour le comprendre ou parcequ'il ne tournait pas ?

Cordialement, Jean-Paul  
______________________________________________________________________

Le Savoir n'a de valeur que s'il est partagé
Commenter la réponse de valtrase
cs_Toxik13 15 Messages postés lundi 22 mai 2006Date d'inscription 4 janvier 2007 Dernière intervention - 24 mai 2006 à 00:26
0
Merci
Ca ne marchait pas, pour IsCellInRange = _ je ne comprend pas :)

et IsCellInRange(Rng As Range, As String
)

j'ai mis <gras>Zone As Range car il smeble que RangeName doit un nom interdit à l'utilisation, et en Range car intersect ne marche pas entre RAnge et String

enfin c'est ce que j'ai cru comprendre
Commenter la réponse de cs_Toxik13
valtrase 936 Messages postés lundi 19 janvier 2004Date d'inscription 17 mars 2017 Dernière intervention - 24 mai 2006 à 21:43
0
Merci
Re, tu aurais pu changer le String en Range dans la fonction ce qui te permet de travailler sur une plage et pas sur une valeur String (qui représente une plage)
donc :
FunctionIsCellInRange(Rng As Range, RangeName As Range) As Boolean


 
On Error Resume Next

 
IsCellInRange = _

     
Not
(Application.Intersect(Rng, RangeName) Is Nothing)

End Function

Cordialement, Jean-Paul  
______________________________________________________________________

Le Savoir n'a de valeur que s'il est partagé
Commenter la réponse de valtrase

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.