[vb.net 1.1] For....Step n [Résolu]

malhivertman1 489 Messages postés mardi 16 novembre 2004Date d'inscription 22 novembre 2007 Dernière intervention - 6 nov. 2006 à 11:46 - Dernière réponse : NHenry 14280 Messages postés vendredi 14 mars 2003Date d'inscription 22 octobre 2018 Dernière intervention
- 7 nov. 2006 à 13:31
Bonjour,
Je fais un for avec un step n (n étant une valeur passé passé en paramètre) mais j'aimerai que mon step n diminu au fur et a mesure, c'est a dire qu'au debut, ce soit step 25, puis step 20, puis step 15 et ainsi de suite, avant mon next, je veux reduire mon pas mais je n'y arrive pas.

Comment faire?
Afficher la suite 

Votre réponse

16 réponses

Meilleure réponse
malhivertman1 489 Messages postés mardi 16 novembre 2004Date d'inscription 22 novembre 2007 Dernière intervention - 6 nov. 2006 à 15:20
3
Merci
    Public Function CouperChaine(ByVal uneChaine As String, ByVal n As Integer)
        'cette fonction coupe une chaine tous les n caractères
        'et insere un retour a la ligne entre chaque coupure

        Dim tmp As String
        Dim maChaine As String
        Dim retourChariot As String
        Dim i As Integer

        retourChariot = vbCrLf 'retour a la ligne
        maChaine = ""

        If InStr(uneChaine, " ") > 0 Then
            For i = 1 To Len(uneChaine)
                'on parcours la chaine tous les n caractères jusqu'à
                'la fin de la chaine

                tmp = tmp & Mid(uneChaine, i, 1)

                If Len(tmp) > n Or i = Len(uneChaine) Then
                    If Right(tmp, 1) <> " " And Right(tmp, 1) <> "," And Right(tmp, 1) <> "." And (Len(uneChaine) - i) > 0 Then
                        tmp = Mid(tmp, 1, InStrRev(tmp, " "))
                        i = i - (n - InStrRev(tmp, " ") + 1)
                    End If
                    maChaine = maChaine & tmp & retourChariot
                    tmp = ""
                    If n > 10 Then
                        n = n - 3
                    End If
                End If
            Next

        Else
            For i = 1 To Len(uneChaine)
                'on parcours la chaine tous les n caractères jusqu'à
                'la fin de la chaine

                tmp = tmp & Mid(uneChaine, i, 1)

                If Len(tmp) > n Or i = Len(uneChaine) Then
                    maChaine = maChaine & tmp & retourChariot
                    tmp = ""
                    If n > 10 Then
                        n = n - 3
                    End If
                End If
            Next

        End If

        Return maChaine

    End Function
Voilà, ça, ça fait ce que je voulais et j'avais tester ton programme avant de dire qu'il ne fesait pas exactement ce que je voulais.

Merci de m'avoir donner l'idée de faire caractere par caractere au lieu de chercher indefiniment comment modifier un step.

Bonne journée à toi.

Merci malhivertman1 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de malhivertman1
drikce06 2247 Messages postés lundi 29 mai 2006Date d'inscription 29 mai 2008 Dernière intervention - 6 nov. 2006 à 11:50
0
Merci
Salut et si avant next tu n=n-5?

dim n as integer = 25

for i=? to ? step n

n=n-5

next

 Drikce 06
Commenter la réponse de drikce06
cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 6 nov. 2006 à 11:56
0
Merci
A vérifier la méthode de Drikce, mais il est possible que ce ne soit pas possible

Les paramètres de la boucle For sont mis en place avant le lancement de la boucle.
Une fois la boucle lancée il est probable qu'il ne soit pas possible de les changer.
Ainsi tu ne dois pas pouvoir, je pense, changer la valeur initiale, la valeur finale et le saut

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Commenter la réponse de cs_casy
drikce06 2247 Messages postés lundi 29 mai 2006Date d'inscription 29 mai 2008 Dernière intervention - 6 nov. 2006 à 12:01
0
Merci
Effectivement casy a raison

 Drikce 06
Commenter la réponse de drikce06
NHenry 14280 Messages postés vendredi 14 mars 2003Date d'inscription 22 octobre 2018 Dernière intervention - 6 nov. 2006 à 12:06
0
Merci
Bonjour

Bourrin mais :


dim n as integer=25

for i as integer=? to ?

    'Opérations

    i+=n-1 'n-1 car for incrémente à chaque passage

next

Il est plus facile de batiser quelqu'un que de la convertir. (surtout en programmation)
NHenry (VB6, VBA excel, VB.NET, C++, C#.Net)

<fon></fon>
Commenter la réponse de NHenry
NHenry 14280 Messages postés vendredi 14 mars 2003Date d'inscription 22 octobre 2018 Dernière intervention - 6 nov. 2006 à 12:07
0
Merci
Bonjour

Euh j'ai poster trop vite, après

i+=n-1


n-=5

Il est plus facile de batiser quelqu'un que de la convertir. (surtout en programmation)
NHenry (VB6, VBA excel, VB.NET, C++, C#.Net)

<fon></fon>
Commenter la réponse de NHenry
malhivertman1 489 Messages postés mardi 16 novembre 2004Date d'inscription 22 novembre 2007 Dernière intervention - 6 nov. 2006 à 12:23
0
Merci
oui Drikce j'avais qd même essayé avec n=n-5 mais non, ca ne marchait pas.
Et NHenry, en fait, c'est une fonction qui coupe une chaine de caractere et j'ai deja i qui prend qqch dc je ne peux pas mettre i+=n-1

Je vous donne ma fonction complete, ca sera peut etre plus facile.

    Public Function CouperChaine(ByVal uneChaine As String, ByVal n As Integer)
        'cette fonction coupe une chaine tous les n caractères
        'et insere un retour a la ligne entre chaque coupure

        Dim tmp As String
        Dim maChaine As String
        Dim retourChariot As String
        Dim i As Integer

        retourChariot = vbCrLf 'retour a la ligne
        maChaine = ""

        If InStr(uneChaine, " ") > 0 Then
            For i = 1 To Len(uneChaine) Step n
                tmp = Mid(uneChaine, i, n)
                If Right(tmp, 1) <> " " And Right(tmp, 1) <> "," And Right(tmp, 1) <> "." And (Len(uneChaine) - i) > n Then
                    tmp = Mid(tmp, 1, InStrRev(tmp, " "))
                    i = i - (n - InStrRev(tmp, " "))
                    n -= 5
                End If
                maChaine = maChaine & tmp & retourChariot
            Next
        Else
            For i = 1 To Len(uneChaine) Step n
                tmp = Mid(uneChaine, i, n)
                maChaine = maChaine & tmp & retourChariot
            Next
        End If

        CouperChaine = maChaine

    End Function
Commenter la réponse de malhivertman1
TMONOD 260 Messages postés mardi 25 novembre 2003Date d'inscription 6 novembre 2009 Dernière intervention - 6 nov. 2006 à 13:42
0
Merci
Bonjour,
En vb6 j'aurait plutôt fait comme ca :

Function CouperChaine2(uneChaine As String, n As Integer)
Dim i As Integer, c As Integer
Dim chainetemp As String, retourchario ' as String

retourChariot = vbCrLf 'retour a la ligne


chainetemp = ""
CouperChaine2 = ""
For i = 1 To Len(uneChaine)
    c = c + 1
    If c = n + 1 Then
        CouperChaine2 = CouperChaine2 + retourChariot + chainetemp
        chainetemp = ""
        c = 1
    End If
    chainetemp = chainetemp + Mid(uneChaine, i, 1)
Next i
End Function

Jcbé[^]
Commenter la réponse de TMONOD
NHenry 14280 Messages postés vendredi 14 mars 2003Date d'inscription 22 octobre 2018 Dernière intervention - 6 nov. 2006 à 13:48
0
Merci
Bonjour

Remarques :


Public Function CouperChaine(ByVal uneChaine As String, ByVal n As Integer)

c'est pas bon, précise toujours un type de retour (avtive les option "Option Explicit" et "Option Strict")


CouperChaine = maChaine
En .NET, on préfère écrire :

return maChaine

Il est plus facile de batiser quelqu'un que de la convertir. (surtout en programmation)
NHenry (VB6, VBA excel, VB.NET, C++, C#.Net)

<fon></fon>
Commenter la réponse de NHenry
malhivertman1 489 Messages postés mardi 16 novembre 2004Date d'inscription 22 novembre 2007 Dernière intervention - 6 nov. 2006 à 14:11
0
Merci
TMONOD, j'ai précisais que je faisais du vb.net dans le titre justement pour qui n'y ait pas des gens qui me reponde en vb 6 dc autant bien lire le sujet avant de répondre à côté. merci.

Et oui NHenry, j'ai déclaré en haut de ma page Option explicit.

Donc si je comprend bien, il est impossible de modifier la valeur d'un step. Parce qu'il faut en fait qu'avec une chaine de caractere, le programme me sorte qqch comme :

xxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxx
xxxxxxxx
xxxx
xx
x
Commenter la réponse de malhivertman1
TMONOD 260 Messages postés mardi 25 novembre 2003Date d'inscription 6 novembre 2009 Dernière intervention - 6 nov. 2006 à 14:18
0
Merci
Hello,


Le prog marche en vb.net aussi, (sauf qu'il faut utiliser return). Sinon l'algo te plait ?






Jcbé[^]
Commenter la réponse de TMONOD
malhivertman1 489 Messages postés mardi 16 novembre 2004Date d'inscription 22 novembre 2007 Dernière intervention - 6 nov. 2006 à 14:25
0
Merci
l'algo ne m'apporte rien de + sauf qu'il est fait caractere par caractere et non avec un step. Il manque aussi une variable pour permettre de couper la chaine et de mettre le retour a la ligne sans effacé ce qu'il y avait avant.
mais je vais surement m'orienter vers du caracteres par caracteres pour faire ce que j'ai dis avant.

merci
Commenter la réponse de malhivertman1
TMONOD 260 Messages postés mardi 25 novembre 2003Date d'inscription 6 novembre 2009 Dernière intervention - 6 nov. 2006 à 15:09
0
Merci
Cela n'éfface rien, l'algo fait éxactement ce que tu as décrit, teste le tu veras.

Sinon, asta la vista baby. J'arrête de te donner de mon temps, puisque cela ne t'aide pas !!

Jcbé[^]
Commenter la réponse de TMONOD
TMONOD 260 Messages postés mardi 25 novembre 2003Date d'inscription 6 novembre 2009 Dernière intervention - 6 nov. 2006 à 16:09
0
Merci
Bonne journée, J'avais pas vu que tu voulais virer les espaces dans ta fonction !

Bye

Jcbé[^]
Commenter la réponse de TMONOD
NHenry 14280 Messages postés vendredi 14 mars 2003Date d'inscription 22 octobre 2018 Dernière intervention - 7 nov. 2006 à 13:30
0
Merci
Bonjour

Tu as mis Option explicit, mais Option Strict ?


Il n'est pas possible de jouer avec le STEP en effet (cela me pose
souvent des pb lors du parcours d'une collection avec suppression de
certains items).


A la place de chaine de x, préfère les variables numériques (plus rapide).

Il est plus facile de batiser quelqu'un que de la convertir. (surtout en programmation)
NHenry (VB6, VBA excel, VB.NET, C++, C#.Net)

<fon></fon>
Commenter la réponse de NHenry
NHenry 14280 Messages postés vendredi 14 mars 2003Date d'inscription 22 octobre 2018 Dernière intervention - 7 nov. 2006 à 13:31
0
Merci
Bonjour

Désolé, je n'avais pas vu la 2ième page.

Il est plus facile de batiser quelqu'un que de la convertir. (surtout en programmation)
NHenry (VB6, VBA excel, VB.NET, C++, C#.Net)

<fon></fon>
Commenter la réponse de NHenry

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.