Can't Set UProperty in C++, Why?

I’m trying to change the properties of any object through the TFieldIterator …

Running my code with Begin Play I can actually print on the screen the value of some property, then change it and print property value modified … .
nothing else happens to the object after the value has been changed …

I’m trying to change the intensity of a lamp … the code seems to work and when I get the properties of the lamp returns the value that has been modified over the lamp not changes in intensity … why?

void UIllusionToolkit::SetFloats(UObject* Object, FName PropertyName, float PropertyValue)
{
	UProperty* Property = Object->GetClass()->FindPropertyByName(PropertyName);

	if (UNumericProperty *NumericProperty = Cast<UNumericProperty>(Property))
	{
		if (UFloatProperty *FloatProperty = Cast<UFloatProperty>(NumericProperty))
		{
			void* ValuePtr = FloatProperty->ContainerPtrToValuePtr<void>(Object);
			FloatProperty->SetFloatingPointPropertyValue(ValuePtr, PropertyValue);
		}

	}
}