VB

Résolu/Fermé
mya1 Messages postés 334 Date d'inscription samedi 5 juillet 2008 Statut Membre Dernière intervention 28 janvier 2013 - 29 août 2008 à 12:56
mya1 Messages postés 334 Date d'inscription samedi 5 juillet 2008 Statut Membre Dernière intervention 28 janvier 2013 - 4 sept. 2008 à 02:19
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
A voir également:

78 réponses

lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
30 août 2008 à 10:03
Bonjour,
Ton exposé n'est pas vraiment explicite mais j'ai un peu extrapoler et voilà déjà un bout de code pour démarrer.
Sub ChercheENU()
Dim Fich As Integer
Dim s As String
Dim P As Integer, i As Integer
Dim d As String
Dim Trouve As Boolean

'Le fichier doit être ouvert en lecture..
    Fich = FreeFile 'N° de fichier libre
    'Ca dépend aussi de la façon dont le fichier a été entrer,
    'peut nécessité LineInput au lieu de Input.
    Open "Chemincomplet\NomFichier.EXT" For Input As #Fich
'Initialise le mot de la recherche
    d = "ENU"
    P = 1
    Do While Not EOF(Fich)
        Input #Fich, s
        For i = 1 To Len(s) - 2
            If Mid(s, i, 3) = d Then
                Trouve = True
                Exit For
            End If
        Next i
        If Trouve Then
        'copier le texte depuis "ENU"...
        'j'ai pas compris.
        End If
        P = P + 1
    Loop
End Sub

Note que je n'ai pas su tester n'ayant pas tes fichiers.
tu dit...
A+
0
mya1 Messages postés 334 Date d'inscription samedi 5 juillet 2008 Statut Membre Dernière intervention 28 janvier 2013 42
31 août 2008 à 22:51
ok merci pr ton aide je vais tester mtn!! c très gentil de ta part
0
mya1 Messages postés 334 Date d'inscription samedi 5 juillet 2008 Statut Membre Dernière intervention 28 janvier 2013 42
31 août 2008 à 22:58
en fait quand j'ai dit que le fichier doit etre copié c que étant trouvé le mot "ENU" le fichier ne va po etre copié en entier (c a d depuis le début)mais plutot depuis la ligne ou se trouve le mot "ENU".. je donne un exemple le fichier étant de cette forme
Calculation Mode Interfering Transmitter Mixed
Radio Service TV / DVB-T Broadcast
Status considered *

General Data

Program Version 5.2.0
Calculated 29/08/08 14:11
User Name sysadmin
Filename C:\CHIRplus BC 5.0.0\HACA_BC50\DATABASES\TV_WDB\TextFiles\IM_BOUKH674.0_010.txt

Fieldstrength Calculation Settings

Model L&S-VHF/UHF (tuneable)
Receiver Height [m] 10.0
Receiver Polarisation Matched

Rec. Version ITU-R P.526
Diffraction Method Bullington
Tx Mode UHF
Distance factor [dB/km] 0.00000
Diffraction factor 1.00000
Constant [dB] 8.00000
k-Factor (Steady) 1.33333

Calculation macro settings

E_min from TX in use

Calculation macro options

Reference DB TX working DB
Calculate with DB TX info DB
Overrule check not in use
Special status not in use
Reference country MRC
Interf. visible 40
Interf. calculated 40
Interf. considered 40
E_nuisance_min -999.00
Additional TPs not in use
Transm. related TPs not in use
Only marked TX in use

______________________________________________________________________________________________________________
Interf. Transmit. : BOUKHOUALI
Frequency/MHz : 674.000 Chan. : 46
MaxERP kW / dBkW : 3.1623 / 5.000
Longit. / Latit. : 002W34 00 / 34N20 00
Heff Max : 818 Country: MRC
Polarisation : H OS :
Antenna Dir : D Service: DVB-T
Offset : 0 System : C2G
Offsettype : U SFN-ID :
Polarization discr. of -10/-9 dB in use (limited to max -16 dB if both ATD and PD are used !)
Propagation correction of 13.0 dB used for interfered DIGITAL stations

ENU OS TRANSMITTER DIS AZM Z% DIR LONGITUDE LATITUDE E1KW ERP PR IVH ATD f/MHz DF CHA HEFF CTY POL PD SFNID OFF OT S TS PROGRAM REMARKS
84.5 BR MELILLA CANADA HIDUM 111.9 341.3 0 D 002W57 45 35N17 08 39.5 5.0 40 0 0.0 671.25 0 46 797 E H 0 0 N G S


après l'éxecution de l'algo (et trouvant le mot ENU) il ne doit copier que ce fragment:

ENU OS TRANSMITTER DIS AZM Z% DIR LONGITUDE LATITUDE E1KW ERP PR IVH ATD f/MHz DF CHA HEFF CTY POL PD SFNID OFF OT S TS PROGRAM REMARKS
84.5 BR MELILLA CANADA HIDUM 111.9 341.3 0 D 002W57 45 35N17 08 39.5 5.0 40 0 0.0 671.25 0 46 797 E H 0 0 N G S
0
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
31 août 2008 à 23:58
la fin de ce "fragment" c'est la fin du fichier ?
Si non, y a-t-il un code en fin de ce fragment ?
Mais le code que je t'ai passer trouve bien le code ENU ???
et si oui, l'endroit où j'ai mis..
        'copier le texte depuis "ENU"...
        'j'ai pas compris.

Tu devrais ajouter du code pour faire ce que tu veux.
0

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

Posez votre question
mya1 Messages postés 334 Date d'inscription samedi 5 juillet 2008 Statut Membre Dernière intervention 28 janvier 2013 42
1 sept. 2008 à 00:09
yeap j'ai ajouté le code pr copier le reste du fichier à la place du texto que tu m'as écrit à moins qu'apparement le code ne marche pas, y'a un débogage.
pr te clarifier pus le fragment je voulais juste te dire la partie du fichier à copier.
0
mya1 Messages postés 334 Date d'inscription samedi 5 juillet 2008 Statut Membre Dernière intervention 28 janvier 2013 42
1 sept. 2008 à 00:19
en fait j'ai un autre problème, c'est que quand je copie le texte sur un fichier excel, le copiage ne marche pas comme je l'espérais! il copie le 1èr mot dans la 1ère cellule du fichier excel, le second aussi sans problème, mais dès qu'il arrive au 3ème mot,4ème il commence à copier le reste du fichier dans la mm cellule et ne fait plus de sorte qu'il doit copier chaque mot dans une cellule... à vrai dire ca me tourmente à fond ce genre de truc vu que c'est la 1ère fois que je codifie av le VB....
bon bah je sais que j'abuse de ta gentillesse mais si t'as une solution à me filer bah je te serai très reconnaissante.. merci pr tt et dsl pr le dérangement!

cordialement
0
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
1 sept. 2008 à 02:17
J'aprécierais que tu écrive en français si possible.
Montre les lignes de code que tu a intercallé.
0
mya1 Messages postés 334 Date d'inscription samedi 5 juillet 2008 Statut Membre Dernière intervention 28 janvier 2013 42
1 sept. 2008 à 12:02
bah en fait j'écris en français, ce que tu as constaté marqué en anglais c'est en fait un exemple du fichier resultat que je dois traiter!! dsl:(
repardon si j'abuse de ta gentillesse!!
remerci
0
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
1 sept. 2008 à 14:26
Montre les lignes de code que tu a intercallé.
0
mya1 Messages postés 334 Date d'inscription samedi 5 juillet 2008 Statut Membre Dernière intervention 28 janvier 2013 42
1 sept. 2008 à 14:36
Private Sub cmdTextEXCEL_Click()
Dim appli As New Application
Dim ligne As String
Dim ligneExcel As Integer
Dim PointVirgule1, PointVirgule2, pointvirgule3, return1, return2 As Integer
Dim Long1, Long2, Long3, long4 As Integer
Dim i As Integer

Dim Data1, Data2, Data3, data4, data5 As String
Dim stFichier As String
Dim sContenu As String
Dim sStringSearch As String
Dim ff As Integer
Dim lPlacement As Long
Dim lFin As Long
Dim lIndex As Long
Dim sValues() As String
Dim vara As Long, varb

ff = FreeFile: lIndex = -1
sStringSearch = "ENU"

Open "G:\stage\TextversEXCEL\rabat2.txt" For Input As #ff
sContenu = Input$(LOF(ff), #ff)
Close #ff
vara = 1
varb = 2


Do
lPlacement = InStr(lPlacement + 1, sContenu, sStringSearch)
If lPlacement > 0 Then
lFin = InStr(lPlacement + 1, sContenu, " ")
lIndex = lIndex + 1
ReDim Preserve sValues(lIndex)
'sValues(lIndex) = Mid$(sContenu, lPlacement + Len(sStringSearch), lFin - lPlacement + Len(sStringSearch))
sValues(lIndex) = sStringSearch
Else
Exit Do
End If
Loop

For lIndex = LBound(sValues) To UBound(sValues)
MsgBox sValues(lIndex)

' ActiveSheet.Cells(varb, 1) = sValues(lIndex)
' varb = varb + 1
' ActiveSheet.Columns.AutoFit

Next lIndex

Erase sValues
'Rendre visible EXCEL
appli.Visible = True

'Créer un nouveau classeur EXCEL initialisé à la ligne 1
appli.Workbooks.Add.Activate
ligneExcel = 1
'Rechercher la position des espaces
PointVirgule1 = InStr(2, ligne, " ")
PointVirgule2 = InStr(PointVirgule1 + 1, ligne, " ")

'Affecter les données à la Data1 et à la Data2

Data1 = Mid(ligne, 1, PointVirgule1 - 1)
Data2 = Mid(ligne, PointVirgule1 + 1, (PointVirgule2 - PointVirgule1 - 1))

'Calculer la longueur de la Data3
Long1 = Len(Data1)
Long2 = Len(Data2)
Long3 = Len(ligne) - (Long1 + Long2 + 2)

'Affecter les données à la Data3
Data3 = Mid(ligne, PointVirgule2 + 1, Long3)




'Affecter Data1, Data2 et Data3 dans les cellules de la feuille 1
With ActiveWorkbook.Worksheets("Feuil1")

.Cells(ligneExcel, 1) = Data1
.Cells(ligneExcel, 2) = Data2
.Cells(ligneExcel, 3) = Data3



ligneExcel = ligneExcel + 1



End With
'Loop


Close
end sub


voilà tt le code de la fonction! mtn le pb est dans la copie des données apparaissant sur le fichier texte vers excel...
0
mya1 Messages postés 334 Date d'inscription samedi 5 juillet 2008 Statut Membre Dernière intervention 28 janvier 2013 42
1 sept. 2008 à 16:07
bon bah ce que je vx mtn: une fonction qui permet de copier ce qu'il ya dans le fichier texte vers un fichier excel!
le code que j'ai mis ne marche plus, auaparavant (c a d avant que je ne le réctifie en ajoutant le code qui permet de trouver l'occurence "ENU") il me copiait ce qui était sur le fichier texte tt en gardant qq pbs de debogage. là il ne fonctionne plus il ne fait qu'ouvrir le fichier excel sans rien mettre dedans....
si tu px encore m'aider dans ça je te serai en pleine gratitude

NB: ce code ne fait qu'une petite partie d'un grand tout(une petite partie de se que je dois effectuer en periode de mon stage) là je ss très anéantie et stressée psq je dois rendre l'application demain matin (enfin cette partie) STP si tu px m'aider mtn :s???

MERCI
0
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
2 sept. 2008 à 06:54
Si c'est pas trop tard...
Ca met la fin du fichier dans un classeur Excel, seul inconnue, ton fichier.
Mais j'ai testé et fonctionne impec en créant un fichier avec les données que tu donne plus haut.
Je suppose que tu a déjà ajouter la référence Excel ?
sinon, ajoute Microsoft Excel X.X object library.

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 String
Dim Trouve As Boolean

    ff = FreeFile
    Open "G:\stage\TextversEXCEL\rabat2.txt" For Input As #ff
    Contenu = Input$(LOF(ff), #ff)
    Close #ff
'initV
'Contenu = Transfert
    d = "ENU"
    For i = 1 To Len(Contenu) - 2
        If Mid(Contenu, i, 3) = d Then
            Trouve = True
            Exit For
        End If
    Next i
    If Trouve Then
        s = Mid(Contenu, i)
        TB = Split(s, " ")
        P = UBound(TB)
    End If
    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(TB)
        .Cells(1, i + 1) = TB(i)
    Next i
    End With
End Sub


tu dit...
0
mya1 Messages postés 334 Date d'inscription samedi 5 juillet 2008 Statut Membre Dernière intervention 28 janvier 2013 42
2 sept. 2008 à 12:15
bah je dis que je sais plus comment te remercier pr ton aide!!!
tu m'as tellement aidé que je ne puis me priver de te redire merci merci merci mille nan des billiards merci pr ton aide..
je n'oublierai jamais ton grand coup de main..

vraiment un grand chapeau pr toi t le meilleur
0
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
2 sept. 2008 à 12:26
de rien, c'était avec plaisir, te reste plus qu'a étudier le code pour le comprendre.
A++
PS. Je met le poste en résolu. Prochaine fois oublie pas de le faire.
0
mya1 Messages postés 334 Date d'inscription samedi 5 juillet 2008 Statut Membre Dernière intervention 28 janvier 2013 42
2 sept. 2008 à 12:58
mettre le poste en resolution??? euuuh je paraitrai idiote quand je te dirai ks q tu voulais dire par ça??
0
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
2 sept. 2008 à 13:08
Quand tu est satisfait(e) de la réponse (qu'elle te convient) tu a en haut du topic 2 optionboutons tu clic sur le bouton 'Résolu'
A+
0
mya1 Messages postés 334 Date d'inscription samedi 5 juillet 2008 Statut Membre Dernière intervention 28 janvier 2013 42
2 sept. 2008 à 13:33
en fait passant vers un autre pb:
là j'ai codifié une fonction qui permet d'ouvrir un fichier qq soit son extension à l'aide d'une boite de dialogue, g réussi à ouvrir la boite de dialogue et laisser le choix à l'utilisateur de choisir le fichier qu'il veut, mtn le pb est dans l'ouverture du fichier lui il ne s'ouvre pas quand tu clique sur le bouton ouvrir, un coup de main§?
voici le code

Private Sub ouvrir_Click()

CommonDialog1.CancelError = True
On Error GoTo ErrHandler

CommonDialog1.Flags = cdlOFNHideReadOnly

CommonDialog1.Filter = "All Files (*.*)|*.*|Text Files" & "(*.txt)|*.txt|Batch Files (*.bat)|*.bat|classeur microsoft office excel Files(*.xls)|*.xls"

CommonDialog1.FilterIndex = 2
' ouvrir la boite de dialogue
CommonDialog1.ShowOpen

Open CommonDialog1.FileName For Output As #1

'Exit Sub
'Fonction ouvrirunfichier()
Dim strFichier As String
Dim objExcel As New EXCEL.Application

strFichier = "E:\LSMaps_andconfigFiles\Maroc_100m_Ext\dtm"

objText.Documents.Open strFichier
' rendre Word visible
Open stFichier + " " For Input As #1
objText.Visible = True
' fermer le document
'objText.Documents(1).Close
' quitter l'application Word
'objText.Quit
'End Function
ErrHandler:
'appuyer sur le bouton annuler
Exit Sub

End Sub
0
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
2 sept. 2008 à 14:02
Re..
Open CommonDialog1.FileName For Output As #1 ? = entrer des données
Tu doit mettre

Open CommonDialog1.FileName For input As #1

Mais fonctionnera pas avec tout les fichiers.

0
mya1 Messages postés 334 Date d'inscription samedi 5 juillet 2008 Statut Membre Dernière intervention 28 janvier 2013 42
2 sept. 2008 à 14:06
j'ai déja essayé av cette commande mais ca n'a pas marché!!
autre idée?
0
mya1 Messages postés 334 Date d'inscription samedi 5 juillet 2008 Statut Membre Dernière intervention 28 janvier 2013 42
2 sept. 2008 à 14:14
en fait entre autre j'ai essayé d'integrer cette commande dans le code que tu m'a filé mais ça donne un débogage
le code copie très bien à moins qu'il le fait dans une seule ligne chose que je vx po à vrai dire je vx qu'il me copie chaque mot dans une cellule. j'ai pensé en 1èr lieu de lire tte la ligne et la copier dans la 1ère ligne du fichier excel et quand il trouve la fin de la 1ère ligne il passe à la suivante ainsi de suite mais ca na po marché: px tu m'aider encore§?

voilà le code
do while EOF(ff)=false
While Not atendofline
For i = 0 To UBound(TB)

.Cells(1, i + 1) = TB(i)

Next i
Wend
loop

cela donne un débogage sur .cells(1,i+1)=TB(i) ainsi qu'il ne connait pas le num du fichier!!
:s :(
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
2 sept. 2008 à 14:15
Bonjour,

Dsl de m'incruster. Juste une petite précision. Mya quand tu dis : "ouvrir un fichier" c'est pour lancer l'application pour visualiser le fichier (ex: le Bloc-Note pour les fichier .txt) ou pour écrire/lire dans un fichier ?

;o)
0