VAB

Résolu
gregg1712 Messages postés 59 Statut Membre -  
gregg1712 Messages postés 59 Statut Membre -
Bonjour,

Voici le code :

_________________________
Dim Salaire As Integer
Dim Proprio As Byte
Dim Financement As String
Dim Charge As String
Dim Charge2 As String
Dim Loyer As Integer
Dim A As String

Range("B2").Select

Salaire = InputBox("Entrez votre salaire mensuel (en €):")
ActiveCell.Offset(0, 0).Value = Salaire
'--------------------------------------------------------------------------------------------

Do
Proprio = InputBox("Entrez :" & vbCrLf & "1 si vous êtes Propriétaire" & vbCrLf & "2 si vous êtes Locataire")
If Not (Proprio = 1 Or Proprio = 2) Then MsgBox "Erreur de saisie. Recommencez"
Loop Until Proprio = 1 Or Proprio = 2

If Proprio = 1 Then
Financement = MsgBox("Avez-vous un financement?", vbYesNo, "")
End If

If Proprio = 2 Then
Charge = MsgBox("Les charges sont comprise dans le loyer?", vbYesNo, "")
End If

If Charge = vbNo Then
Charge2 = InputBox("Quel est le montant des charges (en €)?")
ActiveCell.Offset(3, 0).Value = Charge2
End If

If Proprio = 1 Or 2 Then
A = Proprio
End If

If Proprio = A And Financement = vbYes Then
Loyer = InputBox("Indiquez votre loyer mensuel (en €)")
ActiveCell.Offset(2, 0).Value = Loyer
Else
ActiveCell.Offset(2, 0).Value = "0"
End If


__________________________

Il y a un truc qui ne fonctionne pas:

a la fin: Je voudrais demander le Loyer:
_Au propriétaire en finanacement
_PAS Au propriétaire sans financement
_Au Locaraire avec ou sans charge
(Docn tout le monde sauf les proprio sans financement)

Le but est de connaitre le salaire, leur loyer (pas de loyer pour les Propio sans financement)... (et de savoir si Locataire compte les charges dans leur loyer ou pas)

.... Aidez moi ...plz

3 réponses

  1. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Bonjour,
    1°) ActiveCell.Offset(0, 0).Value = Salaire ?
    ActiveCell.Value = Salaire -> Suffit
    2°) il faux mettre la variable à chaque fois.
    If Proprio = 1 Or Proprio = 2 Then
    3°) Pourquoi faire un test qui ne sert à rien puisque Proprio sera toujours soit à 1 soit à 2
    4°) Tu essaye d'entrer une variable Byte dans une variable string.
    Donc, oublie le test de Proprio et écrire.
    A = Cstr(Proprio)
    Mais tout ça n'est pas nécessaire.
    Tu supprime tes lignes en gras et remplace par...
        If Financement = vbYes Then
            Loyer = InputBox("Indiquez votre loyer mensuel (en €)")
        Else
            Loyer = 0
        End If
        ActiveCell.Offset(2, 0).Value = Loyer

    A+
    1
    1. gregg1712 Messages postés 59 Statut Membre 2
       
      Merci lermite222, j'essaye ca je te tiens au courant :)
      0
    2. gregg1712 Messages postés 59 Statut Membre 2
       
      Bonjour,

      Cela ne fonctionne pas car , il ne demande pas le Loyer:

      ________________________

      Sub Depense()


      Dim Salaire As Integer
      Dim Proprio As Byte
      Dim Financement As String
      Dim Charge As String
      Dim Charge2 As String
      Dim Loyer As Integer
      Dim A As String

      Range("B2").Select

      Salaire = InputBox("Entrez votre salaire mensuel (en €):")
      ActiveCell.Value = Salaire

      Do
      Proprio = InputBox("Entrez :" & vbCrLf & "1 si vous êtes Propriétaire" & vbCrLf & "2 si vous êtes Locataire")
      If Not (Proprio = 1 Or Proprio = 2) Then MsgBox "Erreur de saisie. Recommencez"
      Loop Until Proprio = 1 Or Proprio = 2

      If Proprio = 1 Then
      Financement = MsgBox("Avez-vous un financement?", vbYesNo, "")
      End If


      If Proprio = 2 Then
      Charge = MsgBox("Les charges sont comprise dans le loyer?", vbYesNo, "")
      End If

      If Charge = vbNo Then
      Charge2 = InputBox("Quel est le montant des charges (en €)?")
      End If
      ActiveCell.Offset(3, 0).Value = Charge2


      If Financement = vbYes Then
      Loyer = InputBox("Indiquez votre loyer mensuel (en €)")
      Else
      Loyer = 0
      End If
      ActiveCell.Offset(2, 0).Value = Loyer




      End Sub

      ____________________________________

      Et je pense que ca demanderais qu'au proprio avec financement pas comme je voudrais:
      _Au propriétaire en finanacement
      _PAS Au propriétaire sans financement
      _Au Locaraire avec ou sans charge

      Je voyais un truc du grene: Si propriétaire avec financement OU locataire alors demandé le loyer sinon rien.
      (Docn tout le monde sauf les proprio sans financement)

      A part le loyer, tout marche
      0
    3. gregg1712 Messages postés 59 Statut Membre 2
       
      Même quand je fait un :
      If Financement = vbYes Or Proprio = 2 Then ...

      Il me revois une Erreur d'exécution 13, incompatibilité de type
      0
  2. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Déclare Financement en integer ou Byte et la condition fonctionnera.
    ou bien tu met..
    If Financement = "6" Or Proprio = 2 Then
    Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
    NOTE : Je ne répond pas aux MP pour les questions techniques.
    1
    1. gregg1712 Messages postés 59 Statut Membre 2
       
      Bonjour,

      Merci pour ta réponse plus que rapide :)

      Cela fonctionne pour les Locataire (proprio = 2) mais pas pour les Proprio avec financement (Financement = vbYes) ...
      0
    2. gregg1712 Messages postés 59 Statut Membre 2
       
      "Incompatibilité de type"
      0
    3. gregg1712 Messages postés 59 Statut Membre 2
       
      If Financement = "6" , c'est bizarre :p mais ca ne fonctionne pas Maitre lermite :s
      0
    4. lermite222 Messages postés 9042 Statut Contributeur 1 199
       
      Mais ça ne saurait pas fonctionner, tu a encore une erreur sur Charge ?
      Tu met tes variable en String ? si tu à des calcul à faire avec des formules dans le tableur ça ne va pas fonctionner.
      Je regarde pour arranger ça.
      0
    5. gregg1712 Messages postés 59 Statut Membre 2
       
      Charge fonctionne, plus de string
      0
  3. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Essaye avec..
    Dim Proprio As Byte 
    Dim Financement As Integer 
    Dim Charge As Single 
    Dim Charge2 As Single 
    Dim Loyer As Single 
    
        Do 
            Proprio = InputBox("Entrez :" & vbCrLf & "1 si vous êtes Propriétaire" & vbCrLf & "2 si vous êtes Locataire") 
            If Not (Proprio = 1 Or Proprio = 2) Then MsgBox "Erreur de saisie. Recommencez" 
        Loop Until Proprio = 1 Or Proprio = 2 
    
        If Proprio = 1 Then 
            Financement = MsgBox("Avez-vous un financement?", vbYesNo, "") 
        Else 
            Charge = MsgBox("Les charges sont comprise dans le loyer?", vbYesNo, "") 
        End If 
        If Charge = vbNo Then 
            Charge2 = InputBox("Quel est le montant des charges (en €)?") 
        End If 
        ActiveCell.Offset(3, 0).Value = Charge2 
        If Financement = vbYes Or Proprio = 2 Then 
            Loyer = InputBox("Indiquez votre loyer mensuel (en €)") 
        Else 
            Loyer = 0 
        End If 
        ActiveCell.Offset(2, 0).Value = Loyer

    Les variables "Single" permettent les décimales comme par exemple 202.45 euros
    A+
    Edit :
    Mais ça ne serait pas plus "Pro" avec un userForm ?
    Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
    NOTE : Je ne répond pas aux MP pour les questions techniques.
    1
    1. gregg1712 Messages postés 59 Statut Membre 2
       
      Merci bcp Lermite, ca fonctionne très bien.
      Vraiment
      Bonne journée :)
      0
    2. gregg1712 Messages postés 59 Statut Membre 2
       
      Je ne maîtrise pas les userForm :p
      0
    3. lermite222 Messages postés 9042 Statut Contributeur 1 199
       
      Il n'est jamais trop tard pour apprendre :D
      0