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
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.

Bobot (l’IA à votre service)
  1. 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
    1. Contributeur
      J'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+
      1. 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
        1. Contributeur
          et ces 3 là aussi

          'Open "E:\rabat3.txt" For Input As #ff

          Debug.Print Contenu
          Debug.Print Asc(Mid(Contenu, e, 1))
          1. wooooooooooooooooooooooow toi t le meilleur!! permet moi de te dire chapeau!!!! je sais pas comment te remercier
            vraiment chapeau!! les mots m'echappent
            1. Contributeur
              Je comprend que tu soit impatiente mais faut laisser le temps au temps...
              Ca se fait pas en un coup de cuill§re à pot.
              1. Contributeur
                bon.. Pas trop long ?
                Tu remplace toute la sub par
                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 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+
                1. 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
                  1. ok capitain...; je te laisse le ts qu'il faudra!! je t'assure que je sais plus comment te remercier!!
                    1. Contributeur
                      OK compris le problème, j'arrange ça et je revient, tu me laisse quelque minutes quand même !!? :-D
                      1. mais ça me donne pas ces trucs là att je change de poste et je reprend
                        1. Contributeur
                          Bon, 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 ?
                          • 1
                          • 2
                          • 3
                          • 4