noobie en VB: retour a la ligne + placement de texte autour du résulat

noobie en VB: retour a la ligne + placement de texte autour du résulat - VB/VBA/VBS - Programmation

Marsh Posté le 10-01-2004 à 16:45:14    

voila  
g obtenu le code source suivant qui permet de faire ce que je veux mais il utilise que 3 lettres : a, b, c.  
et je voudrais les 26 lettres de l'alphabet en gardant 3 caracteres ....
qu'est ce qu'il faut modifier ?
Et je voudrais qu'il m'affiche le résultat soit dans word soit dans un fichier texte au lieu d'une boite de dialogue  
Merci pour vos reponses  :hello:  

Code :
  1. Public Sub AppelleGeneMot()
  2. Dim chaine As String
  3. Dim PosLettre(1 To 3) As Integer 'initiale un tableau de n case pour un mot à n lettre
  4. chaine = ""
  5. PosLettre(1) = 1
  6. PosLettre(2) = 1
  7. PosLettre(3) = 1
  8. 'le premier chiffre correspond au nombre lettre de la chaine ex abc = 3
  9. ' le deuxieme correspond au nombre de lettre voulue en sortie ex 3= aaa,aab,aac 2=aa,ab,ac
  10. GeneMot "abc", PosLettre, chaine, 3, 3
  11. MsgBox chaine
  12. End Sub
  13. Public Function GeneMot(chaine As String, PosLettre As Variant, ch As String, LongeurChaine As Integer, nbLettreVoulue As Integer)
  14. While PosLettre(1) < LongeurChaine + 1
  15.    
  16.     For l = 1 To nbLettreVoulue
  17.         a = a & Mid(chaine, PosLettre(l), 1)
  18.     Next l
  19.     ch = ch & a & Chr(13)
  20.    
  21.     For m = nbLettreVoulue To 1 Step -1
  22.         If PosLettre(m) = LongeurChaine Then
  23.             If m <> 1 Then
  24.                 PosLettre(m) = 1
  25.             Else
  26.                 PosLettre(m) = PosLettre(m) + 1
  27.             End If
  28.         Else
  29.             PosLettre(m) = PosLettre(m) + 1
  30.             Exit For
  31.         End If
  32.     Next m
  33.     GeneMot chaine, PosLettre, ch, LongeurChaine, nbLettreVoulue
  34. Wend
  35. End Function


Message édité par boobax le 11-01-2004 à 19:04:22
Reply

Marsh Posté le 10-01-2004 à 16:45:14   

Reply

Marsh Posté le 10-01-2004 à 16:49:57    

hem

Reply

Marsh Posté le 10-01-2004 à 16:51:17    

:heink:

Reply

Marsh Posté le 10-01-2004 à 16:55:53    

c bon g trouvé pour ajouter des lettres
Maintenant je voudrais savoir pour ajouter ca a un fichier texte ou dans word ou dans un truc exploitable pour du copier coller :hello:

Reply

Marsh Posté le 11-01-2004 à 17:43:46    

Open [adresse et nom du fichier] for Output as #[numero de fichier entre 1 et 512]
Write [la variable], #[numero de fichier entre 1 et 512, le meme qui est deja mis]
Close #[numero de fichier entre 1 et 512, le meme qui est deja mis]
 
il faut pas mettre les accolades, et si tu veux rajouter une ligne a chaque fois, mets Append au lieu de Output
 
vala

Reply

Marsh Posté le 11-01-2004 à 19:10:09    

Merci pour ta réponse PhenXDesign
Donc voila je voudrais avoir en sorti les résultat sur le fichier texte comme ca :
 
aaa
aab
aac
...
 
mais je voudrais ajouter le texte machin avant et le texte truc aprés chaque résultat pour que ca devienne
 
machinaaatruc
machinaabtruc
machinaactruc
machin...truc
...
'machin et 'truc garderont toujours la même valeure
Qu'ajouter dans le code ?

Code :
  1. Public Sub AppelleGeneMot()
  2. Dim chaine As String
  3. Dim PosLettre(1 To 3) As Integer 'initiale un tableau de n case pour un mot à n lettre
  4. chaine = ""
  5. PosLettre(1) = 1
  6. PosLettre(2) = 1
  7. PosLettre(3) = 1
  8. 'le premier chiffre correspond au nombre lettre de la chaine ex abc = 3
  9. ' le deuxieme correspond au nombre de lettre voulue en sortie ex 3= aaa,aab,aac 2=aa,ab,ac
  10. GeneMot "abcdefghijklm", PosLettre, chaine, 13, 3
  11. Open "C:\machin.txt" For Output As #1
  12. Write #1, chaine,
  13. Close #1, 1
  14. End Sub
  15. Public Function GeneMot(chaine As String, PosLettre As Variant, ch As String, LongeurChaine As Integer, nbLettreVoulue As Integer)
  16. While PosLettre(1) < LongeurChaine + 1
  17.    
  18.     For l = 1 To nbLettreVoulue
  19.         a = a & Mid(chaine, PosLettre(l), 1)
  20.     Next l
  21.     ch = ch & a & Chr(13)
  22.    
  23.     For m = nbLettreVoulue To 1 Step -1
  24.         If PosLettre(m) = LongeurChaine Then
  25.             If m <> 1 Then
  26.                 PosLettre(m) = 1
  27.             Else
  28.                 PosLettre(m) = PosLettre(m) + 1
  29.             End If
  30.         Else
  31.             PosLettre(m) = PosLettre(m) + 1
  32.             Exit For
  33.         End If
  34.     Next m
  35.     GeneMot chaine, PosLettre, ch, LongeurChaine, nbLettreVoulue
  36. Wend
  37. End Function


Message édité par boobax le 11-01-2004 à 19:17:13
Reply

Marsh Posté le 11-01-2004 à 19:28:44    

sa se complique
 
 
tu as deja ecris les aaa, aab ... dans le fichier ?
si oui, il faut utiliser une boucle :
while EOF(1)=false
 
wend
 
a l'interieur, il faut lire tout le fichier et mettre chaque ligne dans une variable tableau :
dim VariableTablo(1 to n) as string
 
en ouvrant le fichier avant la boucle ( avec open ? for input as #1 ), puis lire une ligne par cycle de boucle (input VariableTablo, #1 ), en incrementant n de 1 a chaque cycle
puis fermer le fichier
 
 
il faut ensuite modifier chak variable :
VariableTablo(1) = machin & VariableTablo(1) & truc
avec une boucle
 
puis de reecrire tt sa avec un boucle
 
vala

boobax a écrit :

Merci pour ta réponse PhenXDesign
Donc voila je voudrais avoir en sorti les résultat sur le fichier texte comme ca :
 
aaa
aab
aac
...
 
mais je voudrais ajouter le texte machin avant et le texte truc aprés chaque résultat pour que ca devienne
 
machinaaatruc
machinaabtruc
machinaactruc
machin...truc
...
'machin et 'truc garderont toujours la même valeure
Qu'ajouter dans le code ?

Code :
  1. Public Sub AppelleGeneMot()
  2. Dim chaine As String
  3. Dim PosLettre(1 To 3) As Integer 'initiale un tableau de n case pour un mot à n lettre
  4. chaine = ""
  5. PosLettre(1) = 1
  6. PosLettre(2) = 1
  7. PosLettre(3) = 1
  8. 'le premier chiffre correspond au nombre lettre de la chaine ex abc = 3
  9. ' le deuxieme correspond au nombre de lettre voulue en sortie ex 3= aaa,aab,aac 2=aa,ab,ac
  10. GeneMot "abcdefghijklm", PosLettre, chaine, 13, 3
  11. Open "C:\machin.txt" For Output As #1
  12. Write #1, chaine,
  13. Close #1, 1
  14. End Sub
  15. Public Function GeneMot(chaine As String, PosLettre As Variant, ch As String, LongeurChaine As Integer, nbLettreVoulue As Integer)
  16. While PosLettre(1) < LongeurChaine + 1
  17.    
  18.     For l = 1 To nbLettreVoulue
  19.         a = a & Mid(chaine, PosLettre(l), 1)
  20.     Next l
  21.     ch = ch & a & Chr(13)
  22.    
  23.     For m = nbLettreVoulue To 1 Step -1
  24.         If PosLettre(m) = LongeurChaine Then
  25.             If m <> 1 Then
  26.                 PosLettre(m) = 1
  27.             Else
  28.                 PosLettre(m) = PosLettre(m) + 1
  29.             End If
  30.         Else
  31.             PosLettre(m) = PosLettre(m) + 1
  32.             Exit For
  33.         End If
  34.     Next m
  35.     GeneMot chaine, PosLettre, ch, LongeurChaine, nbLettreVoulue
  36. Wend
  37. End Function



Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed