VB
Résolu
Bonjour,
je ss complètement une débutante en VB 6.0 et j'ai une application à réaliser au cours de ma période de stage! le pb que je rencontre mtn est le fait de concrétiser mon algorithme sous VB. je m'explique: la fonction doit me permettre d'extraire un mot d'un fichier(que je dois copier par après en excel cette fonction de copier en excel je l'ai déjà testé et ça marche!) mais moi je vx juste qu'il me copie depuis le mot que je veux: je vous lance mtn mon algorithme dans l'espoir de trouver qq1 qui pourra m'aider à le codifier en VB:
en 1èr lieu j'ouvre le fichier en mode lecture
je déclare des variables : s=chaine de caractère que je dois initialiser par la 1ère chaine du fichier
D=chaine de caractère initialisée tjs par "ENU"(le mot que je cherche dans tous les fichiers)
i= c'est un compteur qui va s'incrémenter
p=de type pointeur qui va pointer sur la 1ère ligne et l'incrémenter a chaque fois qu'il achève la ligne et ne trouvant pas le mot
trouve=une booléenne initialisée à false
je commence la boucle
tant qu'il n'est pas arrivé à la fin du fichier faire:( do while EOF(1)=false)
compare "s" avec "d"
si s==d alors
trouve=true
copier le texte depuis "ENU"
sinon
on incrémente le compteur
on passe à la ligne suivante(à l'aide du pointeur)
fin tant que
SVP j'ai vraiment besoin de votre aide sinon je serai fichue nan mais complètement fichue.
NB: je dois rendre ce projet dans 2jours et il me reste bcp de choses à traiter.. j'ai confiance en vos compétences pr m'aider
je ss complètement une débutante en VB 6.0 et j'ai une application à réaliser au cours de ma période de stage! le pb que je rencontre mtn est le fait de concrétiser mon algorithme sous VB. je m'explique: la fonction doit me permettre d'extraire un mot d'un fichier(que je dois copier par après en excel cette fonction de copier en excel je l'ai déjà testé et ça marche!) mais moi je vx juste qu'il me copie depuis le mot que je veux: je vous lance mtn mon algorithme dans l'espoir de trouver qq1 qui pourra m'aider à le codifier en VB:
en 1èr lieu j'ouvre le fichier en mode lecture
je déclare des variables : s=chaine de caractère que je dois initialiser par la 1ère chaine du fichier
D=chaine de caractère initialisée tjs par "ENU"(le mot que je cherche dans tous les fichiers)
i= c'est un compteur qui va s'incrémenter
p=de type pointeur qui va pointer sur la 1ère ligne et l'incrémenter a chaque fois qu'il achève la ligne et ne trouvant pas le mot
trouve=une booléenne initialisée à false
je commence la boucle
tant qu'il n'est pas arrivé à la fin du fichier faire:( do while EOF(1)=false)
compare "s" avec "d"
si s==d alors
trouve=true
copier le texte depuis "ENU"
sinon
on incrémente le compteur
on passe à la ligne suivante(à l'aide du pointeur)
fin tant que
SVP j'ai vraiment besoin de votre aide sinon je serai fichue nan mais complètement fichue.
NB: je dois rendre ce projet dans 2jours et il me reste bcp de choses à traiter.. j'ai confiance en vos compétences pr m'aider
Configuration: Windows XP Firefox 2.0.0.6
78 réponses
Résumé de la discussion
Le problème concerne une débutante en VB6 qui doit extraire un mot précis d’un fichier et l’écrire ensuite dans Excel, en repérant ENU et les mots associés. Des solutions proposées lisent le fichier ligne par ligne, détectent les occurrences commençant par ENU, puis basculent vers Split pour écrire chaque mot dans des cellules Excel. Le code type ouvre le fichier en mode input, lit les lignes, extrait les segments pertinents dans des tableaux TB1 et TB2, puis crée une instance Excel et remplit les cellules. En complément, certains ajustements permettent de choisir le fichier via une boîte de dialogue et d’éviter que tout soit copié sur une seule ligne, tout en prévoyant une gestion des erreurs.
-
merciiiii lermite! là ca marche très bien!! t mon sauveur!!!
-
je ss vachement dsl lemrite!! mtn je ss sur un poste ou le VB n'est pas installé, une fois chez moi je le testerai et repardon!!! serieux je sais pas comment te remercier!! merci merci merci
-
ContributeurJ'espère que t'a tout dit maintenant parce que c'est faire et refaire et refaire le boulot...
Private Sub cmdTextEXCEL_Click() Dim EX As New Application Dim Book As Workbook Dim Feuille As Worksheet Dim i As Integer Dim ff As Integer Dim Contenu As String Dim TB Dim s As String Dim P As Integer Dim D As Boolean Dim e As Integer, Lig As Integer Dim T As Boolean Set EX = CreateObject("Excel.application") EX.Visible = True Set Book = EX.Workbooks.Add EX.ScreenUpdating = False Set Feuille = Book.Sheets(1) Lig = 1 ' Première ligne où mettre les données, peut être changer. 'Mise en forme du tableau With Feuille With .Columns("A:AC") .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter End With .Rows("1:1").Select Selection.RowHeight = 19.5 With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter End With With Selection.Font .Name = "Arial" .Size = 12 .ColorIndex = 3 End With With Selection.Interior .ColorIndex = 6 End With End With ff = FreeFile Open "G:\stage\TextversEXCEL\rabat2.txt" For Input As #ff While Not EOF(ff) Line Input #ff, Contenu If Left(Contenu, 4) = " ENU" Then D = True End If If D Then If Len(Contenu) < 2 Then GoTo Fermer Contenu = Mid(Contenu, 2) GoSub MiseEnForme TB = Split(Contenu, " ") With Feuille For i = 0 To UBound(TB) .Cells(Lig, i + 1) = TB(i) Next i End With Lig = Lig + 1 End If Wend Fermer: Close #ff Range("A2").Select EX.ScreenUpdating = True Exit Sub MiseEnForme: e = 1 While e < Len(Contenu) If Asc(Mid(Contenu, e, 1)) = 32 Then If Not T Then T = True Else Contenu = Left(Contenu, e - 1) & Mid(Contenu, e + 1) e = e - 1 End If Else T = False End If e = e + 1 Wend Return End Sub
A+ -
en fait j'ai trouvé une solution qui est comme suit:
le code cherche le mot ENU c bon, là je vx lire le numéro de la ligne où se trouve ENU
après on affecte cette valeur (c a d le numéro de la ligne) à une variable "j"(qu'on déclare as integer)
après je compte le nombre des lignes du fichier à l'aide de strLigne qu'à son tour je l'affecte à une autre variable "nbr" (declarée comme integer), après je fais un for " l"(variable déclaré comme integer) l que je lui affecterai j to UBound(nbr)
for l=j to UBound(nbr)
et je commence à copier
voilà l'algorithme!! px tu me ré-aider§?
PS: je sais que j'abuse trop de ta gentillesse mais t'es mon sauveur :D -
ok mon sauveur, en fait si par exemple le fichier que je possède contient bcp de ligne, par exemple comme le fichier ci joint https://www.cjoint.com/?jdqshuVEfT!! comment pourrai-je faire pr qu'il me copie tt le fichier ??
-
Contributeuret ces 3 là aussi
'Open "E:\rabat3.txt" For Input As #ff
Debug.Print Contenu
Debug.Print Asc(Mid(Contenu, e, 1))
-
ok chef
-
Contributeurfaut supprimer d = "ENU"
ça sert à rien
A+ -
wooooooooooooooooooooooow toi t le meilleur!! permet moi de te dire chapeau!!!! je sais pas comment te remercier
vraiment chapeau!! les mots m'echappent -
ContributeurJe comprend que tu soit impatiente mais faut laisser le temps au temps...
Ca se fait pas en un coup de cuill§re à pot. -
Contributeurbon.. Pas trop long ?
Tu remplace toute la sub parPrivate Sub cmdTextEXCEL_Click() Dim EX As New Application Dim Book As Workbook Dim Feuille As Worksheet Dim i As Integer Dim ff As Integer Dim Contenu As String Dim TB1, TB2 Dim s As String Dim P As Integer Dim d As String Dim e As Integer Dim T As Boolean ff = FreeFile Open "G:\stage\TextversEXCEL\rabat2.txt" For Input As #ff 'Open "E:\rabat3.txt" For Input As #ff While Not EOF(ff) Line Input #ff, Contenu If Left(Contenu, 4) = " ENU" Then Contenu = Mid(Contenu, 2) GoSub MiseEnForme TB1 = Split(Contenu, " ") Line Input #ff, Contenu Contenu = Mid(Contenu, 2) GoSub MiseEnForme TB2 = Split(Contenu, " ") GoTo Fermer End If Wend Fermer: Close #ff d = "ENU" Set EX = CreateObject("Excel.application") EX.Visible = True Set Book = EX.Workbooks.Add Set Feuille = Book.Sheets(1) With Feuille For i = 0 To UBound(TB1) .Cells(1, i + 1) = TB1(i) .Cells(2, i + 1) = TB2(i) Next i End With Exit Sub MiseEnForme: e = 1 While e < Len(Contenu) If Asc(Mid(Contenu, e, 1)) = 32 Then If Not T Then T = True Else Contenu = Left(Contenu, e - 1) & Mid(Contenu, e + 1) Debug.Print Contenu Debug.Print Asc(Mid(Contenu, e, 1)) e = e - 1 End If Else T = False End If e = e + 1 Wend Return End Sub
A+ -
alors mon sauveur? t'en es où?
-
encore mon binome qui vx me créer des soucis av mon sauveur, dès que je me lève de la chaise elle commence à utiliser mon compte à gauche et à droite, fais po attention
-
ok capitain...; je te laisse le ts qu'il faudra!! je t'assure que je sais plus comment te remercier!!
-
ContributeurOK compris le problème, j'arrange ça et je revient, tu me laisse quelque minutes quand même !!? :-D
-
voilà c'est fait chef
-
-
mais ça me donne pas ces trucs là att je change de poste et je reprend
-
ContributeurBon, je reprend..
Tu appel Ci joint, tu clic sur Parcourrir >> Tu recherche le fichier et tu clic sur Créer le lien>> Ensuite une fenêtre te demande si tu veux copier dans le presse papier tu dit OUI
Tu reviens sur CCM et dans un nouveau poste tu tape Ctrl+C
Compris ? -
ok c'est fait j'ai mm inséré mon adresse mail!!
- 1
- 2
- 3
- 4
Suivant