VB

Résolu
mya1 Messages postés 352 Statut Membre -  
mya1 Messages postés 352 Statut Membre -
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
Configuration: Windows XP
Firefox 2.0.0.6

78 réponses

  • 1
  • 2
  • 3
  • 4
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.

Généré automatiquement par IA
sur la base des meilleures réponses
  1. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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
  2. mya1 Messages postés 352 Statut Membre 42
     
    ok merci pr ton aide je vais tester mtn!! c très gentil de ta part
    0
  3. mya1 Messages postés 352 Statut Membre 42
     
    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
  4. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. mya1 Messages postés 352 Statut Membre 42
     
    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
  7. mya1 Messages postés 352 Statut Membre 42
     
    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
  8. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    J'aprécierais que tu écrive en français si possible.
    Montre les lignes de code que tu a intercallé.
    0
  9. mya1 Messages postés 352 Statut Membre 42
     
    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
  10. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Montre les lignes de code que tu a intercallé.
    0
  11. mya1 Messages postés 352 Statut Membre 42
     
    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
  12. mya1 Messages postés 352 Statut Membre 42
     
    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
  13. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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
  14. mya1 Messages postés 352 Statut Membre 42
     
    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
  15. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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
  16. mya1 Messages postés 352 Statut Membre 42
     
    mettre le poste en resolution??? euuuh je paraitrai idiote quand je te dirai ks q tu voulais dire par ça??
    0
    1. lermite222 Messages postés 9042 Statut Contributeur 1 199
       
      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
  17. mya1 Messages postés 352 Statut Membre 42
     
    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
  18. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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
  19. mya1 Messages postés 352 Statut Membre 42
     
    j'ai déja essayé av cette commande mais ca n'a pas marché!!
    autre idée?
    0
  20. mya1 Messages postés 352 Statut Membre 42
     
    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
  21. Polux31 Messages postés 7219 Statut Membre 1 204
     
    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
  • 1
  • 2
  • 3
  • 4