Besion dun coup de main=)

Fermé
etienne11017 Messages postés 4 Date d'inscription jeudi 21 août 2008 Statut Membre Dernière intervention 22 août 2008 - 21 août 2008 à 18:29
 etienne11017 - 22 août 2008 à 11:39
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

8 réponses

wilfried_42 Messages postés 907 Date d'inscription mardi 19 août 2008 Statut Contributeur Dernière intervention 8 décembre 2009 244
21 août 2008 à 18:52
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
eriiic Messages postés 24597 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 22 septembre 2024 7 236
21 août 2008 à 23:17
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
wilfried_42 Messages postés 907 Date d'inscription mardi 19 août 2008 Statut Contributeur Dernière intervention 8 décembre 2009 244
22 août 2008 à 07:09
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
Bonjour

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

Merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bonjour

La suite ... 'VBA aide SVP :) pb dans boucle for' :
https://forums.commentcamarche.net/forum/affich-8014257-vba-aide-svp-pb-dans-boucle-for#0
# Par 'etienne11017', le jeudi 21 août 2008 à 21:47:38.

Merci
0
wilfried_42 Messages postés 907 Date d'inscription mardi 19 août 2008 Statut Contributeur Dernière intervention 8 décembre 2009 244
22 août 2008 à 08:41
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
Rebonjour à tous et toutes

Merci 'wilfried_42' :))

D'autres solutions différentes ? Éventuellement ?

Merci à tous et toutes
0
etienne11017
22 août 2008 à 11:39
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