VBA Boucle While n'est pas égale

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

Je voudrais crée un programme VBA qui remplis un tableau crée au préalable.

Voila mon code:
___________________________________________________
Nom = InputBox("Entrez le nom du client:")
Langue = InputBox("Entrez la langue :" & vbCrLf & "fr = Français" & vbCrLf & "nl = Néerlandais" & vbCrLf & "en = Anglais")
Montant = InputBox("Entrez le montant du compte:")
Salaire = InputBox("Entrez le Salaire mensuel:")
Range("B3").Select
ActiveCell.Offset(0, 0).Value = Nom
ActiveCell.Offset(0, 1).Value = Langue

While Langue <> fr Or nl Or en
ActiveCell.Offset(0, 1).Value = Langue
Wend

ActiveCell.Offset(0, 2).Value = Montant
ActiveCell.Offset(0, 3).Value = Salaire
___________________________________________________

Le problème est que je voudrais que tant que on ne marque pas fr ou nl ou en, ca renvois le message "Entrez la langue ..."

Pourriez vous m'aidez svp :)
Merci d'avance

10 réponses

  1. yoda
     
    Bonjour,

    Ta boucle while est mal placée. Dans ton cas il vaut mieux utiliser une boucle Do...Loop. Voila comment faire
    -------------------------------------------------------------------------------------------------
    Nom = InputBox("Entrez le nom du client:")

    Do
    Langue = InputBox("Entrez la langue :" & vbCrLf & "fr = Français" & vbCrLf & "nl = Néerlandais" & vbCrLf & "en = Anglais")
    If Langue = "" Then Langue = "fr" 'réponse par defaut - cette ligne est optionnelle
    If Not (Langue = "fr" Or Langue = "nl" Or Langue = "en") Then MsgBox "Erreur de saisie. Recommencez"
    Loop Until Langue = "fr" Or Langue = "nl" Or Langue = "en"


    Montant = InputBox("Entrez le montant du compte:")
    Salaire = InputBox("Entrez le Salaire mensuel:")

    Range("B3").Select
    ActiveCell.Offset(0, 0).Value = Nom
    ActiveCell.Offset(0, 1).Value = Langue
    ActiveCell.Offset(0, 2).Value = Montant
    ActiveCell.Offset(0, 3).Value = Salaire
    -------------------------------------------------------------------------------------------------

    ;o)
    1
    1. gregg1712 Messages postés 59 Statut Membre 2
       
      Bonjour,
      Oh Maitre Yoda, un très grand merci :)
      Vraiment !
      0
  2. yoda
     
    Les reponses aux questions sont stockées dans des variables (Nom, Langue, Montant, Salaire).
    Tu peux les saisir dans l'ordre que tu veux.

    Ensuite, tu ranges la valeur de ces variables dans des cellules. Tu peux choisir de les mettres à l'adresse qui t'arrange et dans n'importe quel ordre, tu es totalement libre.

    ;)
    1
  3. gregg1712 Messages postés 59 Statut Membre 2
     
    Ca marche :) merci
    0
  4. gregg1712 Messages postés 59 Statut Membre 2
     
    Je me demandais juste si "c'est un brouillon"
    ___________________________________
    Nom = InputBox("Entrez le nom du client:")

    Do
    Langue = InputBox("Entrez la langue :" & vbCrLf & "fr = Français" & vbCrLf & "nl = Néerlandais" & vbCrLf & "en = Anglais")
    If Langue = "" Then Langue = "fr" 'réponse par defaut - cette ligne est optionnelle
    If Not (Langue = "fr" Or Langue = "nl" Or Langue = "en") Then MsgBox "Erreur de saisie. Recommencez"
    Loop Until Langue = "fr" Or Langue = "nl" Or Langue = "en"

    Montant = InputBox("Entrez le montant du compte:")
    Salaire = InputBox("Entrez le Salaire mensuel:")

    If Montant >= 25000 And If Salaire >= 1500 Then
    ActiveCell.Offset(0, 4).Value= InputBox ("T'es riche mec")


    Range("B3").Select
    ActiveCell.Offset(0, 0).Value = Nom
    ActiveCell.Offset(0, 1).Value = Langue
    ActiveCell.Offset(0, 2).Value = Montant
    ActiveCell.Offset(0, 3).Value = Salaire
    _____________________________________________________

    Juste c'est possible de refaire autant de boucle qu'on souhaite ?:)
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. gregg1712 Messages postés 59 Statut Membre 2
     
    Plutot un truc comme ca :p

    If Montant >= 25000 And Salaire >= 2000 Then Pub = "Tu as le droit à une voiture"
    ActiveCell.Offset(0, 4).Value = Pub
    0
  7. yoda
     
    refaire autant de boucle qu'on souhaite ?

    Je ne comprends pas ta question.

    Mais ce que t'as ecrit en gras n'est pas correct.
    0
  8. gregg1712 Messages postés 59 Statut Membre 2
     
    Je vais chercher un peu au lieu de tt demander :)
    *Se frappe*

    Bonne soirée Yoda et encore merci
    0
  9. gregg1712 Messages postés 59 Statut Membre 2
     
    Après recherche ...

    ____________________________________
    If Montant >= 25000 And Salaire >= 2000 Then
    Pub1 = "Tu as le droit à une voiture"
    Else
    Pub2 = "tu as le droit à un scouter"
    End If

    ActiveCell.Offset(0, 4).Value = Pub1
    ActiveCell.Offset(0, 4).Value = Pub2
    __________________________________________

    Donc si le montant du compte et élevé et si il à un bon salaire
    Soit il propose la Pub 1 soit il propose la Pub 2

    Je peux rajouter ceci dans mon code ?
    0
  10. yoda
     
    Non, c'est pas bon, comme c'est là, Pub2 ecrase Pub1 quelque soit la condition.

    Il faut mettre

    If Montant >= 25000 And Salaire >= 2000 Then 
       Pub1 = "Tu as le droit à une voiture" 
    Else 
       Pub1 = "tu as le droit à un scouter" 
    End If 
    
    ActiveCell.Offset(0, 4).Value = Pub1 


    ;o)
    0
    1. gregg1712 Messages postés 59 Statut Membre 2
       
      Ok merci³ je vais essayer cela :)
      0
    2. gregg1712 Messages postés 59 Statut Membre 2
       
      Une petite erreur me résiste ...
      0
    3. yoda
       
      Ah bon, laquelle?
      0
    4. gregg1712 Messages postés 59 Statut Membre 2
       
      OMG j'avais fait une petite erreur ...
      Ca fonctionne Nickel³ xD

      Merci encore ^4
      0
    5. yoda
       
      Alors bonne nuit.
      0
  11. gregg1712 Messages postés 59 Statut Membre 2
     
    Si tu ne dors pas :)

    _______
    If Montant >= 20000 And Salaire >= 2000 Then
    Carte = "Gold"


    If Langue = fr Then
    Pub = "Envoyé une publicité en Francais d'un investissement avec un Taux de 4%"
    ElseIf Langue = nl Then
    Pub = "Envoyé une publicité en Néerlandais d'un investissement avec un Taux de 4%"
    Else
    Pub = "Envoyé une publicité en Anglais d'un investissement avec un Taux de 4%"
    End If


    ElseIf Montant >= 10000 And Salaire >= 1000 Then
    Carte = "Silver"


    If Langue = fr Then
    Pub = "Envoyé une publicité en Francais d'un investissement avec un Taux de 3%"
    ElseIf Langue = nl Then
    Pub = "Envoyé une publicité en Néerlandais d'un investissement avec un Taux de 3%"
    Else
    Pub = "Envoyé une publicité en Anglais d'un investissement avec un Taux de 3%"
    End If


    Else
    Carte = "Copper"

    If Langue = fr Then
    Pub = "Envoyé une publicité en Francais d'un investissement avec un Taux de 2%"
    ElseIf Langue = nl Then
    Pub = "Envoyé une publicité en Néerlandais d'un investissement avec un Taux de 2%"
    Else
    Pub = "Envoyé une publicité en Anglais d'un investissement avec un Taux de 2%"
    End If


    End If
    ________

    En PUB il me renvoit toujours Anglais (mais le Taux est bon et change chaque fois), une idée de l'erreur ?
    0
    1. gregg1712 Messages postés 59 Statut Membre 2
       
      Bonjour,
      Personne ? :(
      0
    2. gregg1712 Messages postés 59 Statut Membre 2
       
      Problème résolue :)
      0