Gestion d'un espace, d'un point, d'une virgule

Résolu
VivoBaggio Messages postés 140 Date d'inscription jeudi 27 octobre 2005 Statut Membre Dernière intervention 23 janvier 2009 - 5 juil. 2007 à 14:25
VivoBaggio Messages postés 140 Date d'inscription jeudi 27 octobre 2005 Statut Membre Dernière intervention 23 janvier 2009 - 5 juil. 2007 à 15:31
Bonjour à tous. Voilà, j'ai un soucis au niveau d'un algo. Sur mon bas de page, je dois afficher des variables selon si elles sont renseignées. Par exemple, j'ai quatre variables appelées "Remise1, Remise2.. Remise4. Chaque variable correspond à un type d'article. Et je dois afficher ces variables dans une seule textbox. Le soucis se situe au niveau des virgules, espaces et points.
Ce qui donne en ex : "Voici les remises du jour : Remise1, Remise2, Remise3, Remise4. Bonne journée."
Les contraintes sont qu'au minimum une variable est obligatoirement affichée, que si une d'entre elle ou 2 ou 3 ont pour valeur 0, elle ne sont pas affichées, et que l'ordre des remises ne doit pas changé.1er cas : Remise1 9, Remise2 0, Remise3 = 0, Remise4 = 56
Ca nous donne : "Voici les remises du jour : Remise1, Remise4. Bonne journée."2e cas : Remise1 9, Remise2 0, Remise3 = 0, Remise4 = 0
Ca nous donne : "Voici les remises du jour : Remise1. Bonne journée."
Le point a remplacé la virgule de la Remise1.

Voilà l'algo que j'ai réalisé pour vous donner une base.

Merci d'avance.

Dim nb as integer
nb = 0
If (PERSO_ATOLSOLDEHIV_REMISE1<>0)  Then
value = "-" & PERSO_ATOLSOLDEHIV_REMISE1 & "% sur points jaunes" & ", "
nb = nb + 1
else
nb = nb + 2
End If
If (PERSO_ATOLSOLDEHIV_REMISE2<>0) Then
value = value & "-" & PERSO_ATOLSOLDEHIV_REMISE2 & "% sur points verts" & ", "
nb = nb + 1
else
nb = nb + 2
End If
If (PERSO_ATOLSOLDEHIV_REMISE3<>0) Then
value = value & "-" & PERSO_ATOLSOLDEHIV_REMISE3 & "% sur points roses" & ", "
nb = nb + 1
End If
If (PERSO_ATOLSOLDEHIV_REMISE4<>0) Then
value = value & "-" & PERSO_ATOLSOLDEHIV_REMISE4 & "% sur points bleus."
End If

Les Canaris redeviendront Champions de France.

4 réponses

VivoBaggio Messages postés 140 Date d'inscription jeudi 27 octobre 2005 Statut Membre Dernière intervention 23 janvier 2009
5 juil. 2007 à 15:31
C'est bon. Ne chercher plus pour si c'est encore le cas. J'ai réussi à m'en sortir en décomposant bien étape par étape. Pour ceux qui veulent le code, voici et merci pour ceux qui m'ont aidé :

Dim cpt as Integer
Dim i as Integer
cpt = 0
i = 1
If (PERSO_ATOLSOLDEHIV_REMISE1<>0)  Then
   cpt = cpt + 1
End If
If (PERSO_ATOLSOLDEHIV_REMISE2<>0)  Then
   cpt = cpt + 1
End If
If (PERSO_ATOLSOLDEHIV_REMISE3<>0)  Then
   cpt = cpt + 1
End If
If (PERSO_ATOLSOLDEHIV_REMISE4<>0)  Then
   cpt = cpt + 1
End If
value = ""
If (PERSO_ATOLSOLDEHIV_REMISE1<>0 AND i<>cpt)  Then
   value = value & "-" & PERSO_ATOLSOLDEHIV_REMISE1 & "% sur points jaunes" & ", "
Else If (PERSO_ATOLSOLDEHIV_REMISE1<>0 AND i=cpt)  Then
           value = value & "-" & PERSO_ATOLSOLDEHIV_REMISE1 & "% sur points jaunes" & "."
        End If
End If
i = i + 1
If (PERSO_ATOLSOLDEHIV_REMISE2<>0 AND i<>cpt)  Then
   value = value & "-" & PERSO_ATOLSOLDEHIV_REMISE2 & "% sur points verts" & ", "
Else If (PERSO_ATOLSOLDEHIV_REMISE2<>0 AND i=cpt)  Then
           value = value & "-" & PERSO_ATOLSOLDEHIV_REMISE2 & "% sur points verts" & "."
        End If
End If
i = i + 1
If (PERSO_ATOLSOLDEHIV_REMISE3<>0 AND i<>cpt)  Then
   value = value & "-" & PERSO_ATOLSOLDEHIV_REMISE3 & "% sur points roses" & ", "
Else If (PERSO_ATOLSOLDEHIV_REMISE3<>0 AND i=cpt)  Then
           value = value & "-" & PERSO_ATOLSOLDEHIV_REMISE3 & "% sur points roses" & "."
        End If
End If
i = i + 1
If (PERSO_ATOLSOLDEHIV_REMISE4<>0 AND i<>cpt)  Then
   value = value & "-" & PERSO_ATOLSOLDEHIV_REMISE4 & "% sur points bleus" & ", "
Else If (PERSO_ATOLSOLDEHIV_REMISE1<>0 AND i=cpt)  Then
           value = value & "-" & PERSO_ATOLSOLDEHIV_REMISE4 & "% sur points bleus" & "."
        End If
End If

Les Canaris redeviendront Champions de France.
3
bilaloch Messages postés 556 Date d'inscription lundi 6 octobre 2003 Statut Membre Dernière intervention 31 octobre 2019 1
5 juil. 2007 à 14:32
Je ne comprends pas très bien ta question, premièrement. Deuxièmement, explique nous pourquoi tu nous donnes un code qui n'a pas grand chose à voir avec le reste... Enfin... Sois plus clair, je veux dire.

BILALoch
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
5 juil. 2007 à 14:34
Faut pas forcément vouloir tout faire en même temps

Décompose ton code, et effectue les opérations comme si c'est toi qui les faisaient à la main :

Dim nb as integer
nb = 0
If (PERSO_ATOLSOLDEHIV_REMISE1<>0)  Then
    value = "-" & PERSO_ATOLSOLDEHIV_REMISE1 & "% sur points jaunes"
    nb = nb + 1
else
    nb = nb + 2
End If
If (PERSO_ATOLSOLDEHIV_REMISE2<>0) Then
    if value <>"" then value = value & ", "
    value = value & "-" & PERSO_ATOLSOLDEHIV_REMISE2 & "% sur points verts"
    nb = nb + 1
else
    nb = nb + 2
End If
    if value <>"" then value = value & ", "
    If (PERSO_ATOLSOLDEHIV_REMISE3<>0) Then
    value = value & "-" & PERSO_ATOLSOLDEHIV_REMISE3 & "% sur points roses"
    nb = nb + 1
End If
    if value <>"" then value = value & ", "
    If (PERSO_ATOLSOLDEHIV_REMISE4<>0) Then
    value = value & "-" & PERSO_ATOLSOLDEHIV_REMISE4 & "% sur points bleus"
End If
if value <>"" then value = value & "."

---- Sevyc64  (alias Casy) ---- <hr size ="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
0
VivoBaggio Messages postés 140 Date d'inscription jeudi 27 octobre 2005 Statut Membre Dernière intervention 23 janvier 2009
5 juil. 2007 à 14:37
En gros, selon les remises qui sont renseignées, je les affiche avec la virgule et l'espace ou le point. Et comme je débute dans l'algorithmie, je suis loin d'être correct dans mon raisonnement

Les Canaris redeviendront Champions de France.
0
Rejoignez-nous