Gestion d'un espace, d'un point, d'une virgule [Résolu]

Messages postés
140
Date d'inscription
jeudi 27 octobre 2005
Statut
Membre
Dernière intervention
23 janvier 2009
- - Dernière réponse : 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.
Afficher la suite 

4 réponses

Meilleure réponse
Messages postés
140
Date d'inscription
jeudi 27 octobre 2005
Statut
Membre
Dernière intervention
23 janvier 2009
3
Merci
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.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 212 internautes nous ont dit merci ce mois-ci

Commenter la réponse de VivoBaggio
Messages postés
556
Date d'inscription
lundi 6 octobre 2003
Statut
Membre
Dernière intervention
31 octobre 2019
0
Merci
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
Commenter la réponse de bilaloch
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
31
0
Merci
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
Commenter la réponse de cs_casy
Messages postés
140
Date d'inscription
jeudi 27 octobre 2005
Statut
Membre
Dernière intervention
23 janvier 2009
0
Merci
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.
Commenter la réponse de VivoBaggio