Besion dun coup de main=)

etienne11017 Messages postés 4 Statut Membre -  
 etienne11017 -
Bonjour,
jai besoin d'un petit coup de main...je suis un debutant en programation...et j'ai un pb:

je veux dans une boucle for separer les pair(2*k) des impairs(2*k+1); pour cela, j'ai fait
For j = 1 To longueur_texte
lettre = Mid(texte_a_coder, j = 2 * k, 1)
....next j
For j = 1 To longueur_texte
lettre = Mid(texte_a_coder, j = 1 + 2 * k, 1)

mais je ne sais pas comment faire pour dire que k est un entier?
jai essayé avec une boucle for: For k = 1 To ...etc...next k mais il m'affiche erreur d'execution '5' argument ou appel de procédure incorrect"

y a t il un autre moyen sinon? merci d'avance

etien
Configuration: Windows XP
Firefox 2.0.0.16

8 réponses

  1. wilfried_42 Messages postés 912 Statut Contributeur 245
     
    bonjour

    j'ai rien compris mais j'essaye

    dim montext as string, i as integer, impair as string, pair as string
    montext = "Ma valeur est celle ci"
    ' Pour recuperer les lettre de postion impaire
    impair = ""
    for i = 1 to len(montext) step 2
    impair = impair & mid(montext,i,1)
    next i
    ' Recuperer le lettes en position paire
    pair = ""
    for i = 2 to len(montext) step 2
    pair = pair & mid(montext,i,1)
    next i
    msgbox impair & vbcrlf & pair

    0
  2. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonsoir,

    ta façon de faire est assez 'lourde' mais la syntaxe que tu aurais dû respecter pour mid(chaine,départ, nbre) est :
    lettre = Mid(texte_a_coder, 2 * j, 1)
    et du coup ta boucle devrais être
    For j = 1 To longueur_texte / 2

    et comme souvent en informatique il souvent plus simple de prendre le problème autrement donc regarde de près la réponse de wilfried avec step 2.

    eric
    0
  3. wilfried_42 Messages postés 912 Statut Contributeur 245
     
    re:

    comme eriiic me confirme que j'ai compris quelque chose, voici une autre boucle

    dim montext as string, i as integer, impair as string, pair as string 
    montext = "Ma valeur est celle ci" 
    ' Pour recuperer les lettre de postion impaire 
    impair = "" : pair = "" 
    for i = 1 to len(montext)
         if i mod 2 =  1 then ' donne le reste de la division par 2, donne 1 si impair, 0 si pair
            impair = impair & mid(montext,i,1) 
        else
            pair = pair & mid(montext,i,1) 
        end if
    next i 
    msgbox impair & vbcrlf & pair 

    0
  4. Anonyme
     
    Bonjour

    Comment faire l'inverse ? Car c'est le but je suppose :)) Codage / Décodage .))

    Merci
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. wilfried_42 Messages postés 912 Statut Contributeur 245
     
    re:

    pour l'inverse, j'a mes deux variables Impair et Pair

    dim recup as string
    recup = ""
    for i = 1 to len(impair) + len(pair)
        if i mod 2 = 1 then 
            recup = recup & mid(impair,i,1)
        else
            recup = recup & mid(pair,i,1)
        end if
    next i


    0
  7. Anonyme
     
    Rebonjour à tous et toutes

    Merci 'wilfried_42' :))

    D'autres solutions différentes ? Éventuellement ?

    Merci à tous et toutes
    0
  8. etienne11017
     
    pour la parité j'ai utilisé modulo 2=0...

    pour decoder j'ai fait l'inverse du codage:

    codage:
    Sub codeAvocat_QuandClic()
    texte_a_coder = Range("texte_a_coder").Value
    longueur_texte = Len(texte_a_coder)
    message_code = ""
    For j = 1 To longueur_texte
    lettre = Mid(texte_a_coder, j, 1)
    lettre = UCase(lettre)
    Worksheets("code").Select
    For i = 2 To 39
    If Worksheets("code").Cells(i, 2).Value = lettre Then
    lettre = Worksheets("code").Cells(i, 3).Value
    Exit For
    End If
    Next i
    message_code = message_code & lettre
    Next j

    Worksheets("codeur").Select
    Worksheets("codeur").Range("texte_decode").Value = message_code

    End Sub

    el voici le decodage:

    Sub decodeAvocat_QuandClic()
    texte_a_decoder = Range("texte_a_decoder").Value
    longueur_texte = Len(texte_a_decoder)
    message_code = ""
    For j = 1 To longueur_texte
    lettre = Mid(texte_a_decoder, j, 1)
    lettre = UCase(lettre)
    Worksheets("code").Select
    For i = 2 To 39
    If Worksheets("code").Cells(i, 3).Value = lettre Then
    lettre = Worksheets("code").Cells(i, 2).Value
    Exit For
    End If
    Next i
    message_decode = message_decode & lettre
    Next j
    Worksheets("decodeur").Select
    Worksheets("decodeur").Cells(7, 2).Value = message_decode

    End Sub

    voilà! merci beaucoup pour votre aide! je progresse!!!=)
    0