Les Allergies
Alimentaires
Posez votre question Signaler

VBA Boucle While n'est pas égale [Résolu/Fermé]

gregg1712 36Messages postés 20 décembre 2009Date d'inscription 25 décembre 2011Dernière intervention - Dernière réponse le 21 déc. 2011 à 09:30
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
Lire la suite 

VBA Boucle While n'est pas égale »

19 réponses
Réponse
+1
moins plus
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)

gregg1712- 20 déc. 2011 à 23:03
Bonjour,
Oh Maitre Yoda, un très grand merci :)
Vraiment !
Réponse
+1
moins plus
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.

;)

Réponse
+0
moins plus
Ca marche :) merci

Réponse
+0
moins plus
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 ?:)

Réponse
+0
moins plus
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

Réponse
+0
moins plus
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.

Réponse
+0
moins plus
Je vais chercher un peu au lieu de tt demander :)
*Se frappe*

Bonne soirée Yoda et encore merci

Réponse
+0
moins plus
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 ?

Réponse
+0
moins plus
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)

gregg1712- 21 déc. 2011 à 00:28
OMG j'avais fait une petite erreur ...
Ca fonctionne Nickel³ xD

Merci encore ^4
yoda - 21 déc. 2011 à 00:30
Alors bonne nuit.
gregg1712- 21 déc. 2011 à 00:35
Merci Yoda, à toi aussi.
Réponse
+0
moins plus
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 ?

gregg1712- 21 déc. 2011 à 08:55
Bonjour,
Personne ? :(
gregg1712- 21 déc. 2011 à 09:30
Problème résolue :)
Ce document intitulé « VBA Boucle While n'est pas égale » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?