Développement d'un calculateur VBa

Yurie Messages postés 2 Date d'inscription lundi 13 avril 2009 Statut Membre Dernière intervention 17 avril 2009 - 13 avril 2009 à 22:30
Yurie Messages postés 2 Date d'inscription lundi 13 avril 2009 Statut Membre Dernière intervention 17 avril 2009 - 15 avril 2009 à 16:52
Bonsoir à tous et toutes,

Comme l'indique le titre de mon post, je dois développer un calculateur du droit d'enregistrement lors d'un achat de bien immobilier, dans le cadre d'un de mes cours en Visual Basic. Malheureusement, j'ai un petit soucis lors d'une "récupération" de donnée enregistrée par l'utilisateur...

J'ai déjà essayé plusieurs façons différentes mais sans succès...

Petit briefing : lors d'un achat de bien, on ajoute au prix du logement une taxe à payer en plus. Dans certains cas, si les conditions adéquates sont vérifiées, il y a un abattement sur le prix (une réduction en clair).

Alors, c'est là où j'ai un soucis. L'utilisateur doit cocher des checkBox pour vérifier les conditions, j'utilise ces tests (itératives) pour voir si l'utilisateur a droit ou non à l'abattement. Celui-ci est normalement envoyé dans une cellules d'une feuille d'excell, que j'utilise pour calculer le prix final. Mais, il considère l'abattement a zéro (en phase de débogage). C'est bizarre... Je vous montre la partie du code qui cloche selon moi :

...
'Abbatement nul si achat d'une partie d'immeuble ou si pas de vente 1er maison et achat maison sec
If ((Range("E3").Value "Partie d'immeuble") And (Range("E4").Value "FAUX") And (Range("E5").Value = "VRAI")) Then prix = prix - 0If ((Range("E3").Value "Partie d'immeuble") And (Range("E5").Value "FAUX") And (Range("E4").Value = "VRAI")) Then prix = prix - 0If ((Range("E4").Value "FAUX") And (Range("E5").Value "VRAI")) Then prix = prix - 0If ((Range("E4").Value "FAUX") Or (Range("E5").Value "VRAI")) Then prix = prix - 0

'zone prioritaire, Vente de la 1er et pas achat d'une secondaire
If ((Range("E7").Value "VRAI") And (Range("E1").Value > 75000) And (Range("E4").Value "VRAI") And (Range("E5").Value = "")) Then prix = prix - 75000 '75000

'Prix plus grand que 60000 et maison 2 vendue et maison = appart sur plan
If ((Range("E1").Value > 60000) And (Range("E4").Value "VRAI") And (Range("E5").Value "FAUX")) Then prix = prix - 60000If ((Range("E3").Value "Appartement sur plan") And (prix > 60000) And (Range("E4").Value "VRAI") And (Range("E5").Value = "FAUX")) Then prix = prix - 60000
 
...

J'espère que j'ai été plus ou moins claire, merci d'avance pour vos réponses.
Yurie.

----------------------------------------------------------------------------------------------------------------

Quand Chuck Norris utilise Windows, il ne plante pas!

2 réponses

bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
14 avril 2009 à 10:07
Salut,

pour commencer : tu n'est pas dans le bon theme !

Plutot moins que plus pour la clareté !

prix = prix - 0 ???

prix = prix aurait suffit si tenté que d'ecrire une telle evidence est une utilité ! Autrement dit les 4 premieres conditions if ne servent à rien.
Et oui implicitement prix = prix donc cela n'a pas d'interet par contre ce qui a un interet c'est les cas ou prix n'est pas egale à prix.

Voici une ecriture plus lisible et qui fait la meme choseIf Range("E4").Value "VRAI" And Range("E5").Value "FAUX" Then '1ere conditon (l'implicite)
   If Range("E1").Value > 60000 Then prix = prix - 60000   If Range("E3").Value "Appartement sur plan" And prix > 60000 Then prix prix - 60000
End if

Avec cette ecriture on voit rapidement que 60000 peut etre retranché 2 fois.
0
Yurie Messages postés 2 Date d'inscription lundi 13 avril 2009 Statut Membre Dernière intervention 17 avril 2009
15 avril 2009 à 16:52
<hr size="2" width="100%" />Salut!
Merci d'avoir répondu, désolé pour mes explications, j'ai essayé comme j'ai pu...

En fait, c'était pour m'y retrouver dans mon code que j'ai inséré "prix=prix-0", ainsi je différenciait clairement lorsqu'il y avait une réduction ou non, désolé si ça vous a perturbé... Au départ, je voulais mettre la réduction dans une cellule et l'utiliser sur le prix plus tard, mais sans effet...

L'abattement doit être retranché une fois, selon les conditions:  "Si le prix de la maison est inférieur à 60000 ET que ce soit un achat pur et simple ( pas d'achat de maison secondaire et que la 1ere maison doit donc être vendue, les cellules E5 et E4) ou encore "l'achat pur et simple d'un appartement sur plan ainsi que son prix doit être inférieur à 60000"...

Pour les 75000, la seule condition en plus est la zone prioritaire, qui se trouve dans la cellule E7 (TRUE ou FALSE)
J'ai encore modifié mon code, mais rien à faire, il met 0 dans la cellule (E11) pour la réduction et donc il ne réduit pas le prix final (la variable "prix").

Le code :
------------
'Recherche de l'abbatement qu'on insere dans une cellule...

'Abbatement nul si achat d'une partie d'immeuble ou si pas de vente 1er maison et achat maison sec
If (Range("E3").Value = "Partie d'immeuble") Then
    Range("E11").Value = 0
End IfIf (Range("E4").Value "FAUX") And (Range("E5").Value "VRAI") Then
    Range("E11").Value = 0
End If

'zone prioritaire, Vente de la 1er et pas achat d'une secondaireIf ((Range("E4").Value "VRAI") And (Range("E5").Value "FAUX")) Then
    If ((Range("E7").Value = "VRAI") And (Range("E1").Value > 75000)) Then
                 Range("E11").Value = 75000
    End If
    If ((Range("E7").Value = "") And (Range("E1") > 60000)) Then
                Range("E11").Value = 60000
                If (Range("E3").Value = "Appartement sur plan") Then
                    Range("E11").Value = 60000
                End If
    End If
End If

'Calcul du prix final avec l'abbatement et le bon taux
prix = Range("E1").Value * Range("E10").Value + Range("E1") 'taxe ajoutée
prix = prix - Range("E11").Value

Je ne comprends vraiment pas pourquoi il met l'abattement à zéro...
Merci pour votre réponse
Yurie
<hr size="2" width="100%" />Quand Chuck Norris utilise Windows, il ne plante pas!
0
Rejoignez-nous