Suppresion ligne

Résolu
cs_Enyx Messages postés 16 Date d'inscription dimanche 25 juin 2006 Statut Membre Dernière intervention 19 juin 2007 - 14 juin 2007 à 15:16
cs_Enyx Messages postés 16 Date d'inscription dimanche 25 juin 2006 Statut Membre Dernière intervention 19 juin 2007 - 14 juin 2007 à 16:30
Bonjour !

Voila jai un petit probléme, je veut supprimer une ligne dans un fichier texte
J'ouvre le fichier en Input
Je stock le contenu du fichier moin la ligne, dans une variable
Je ferme le fichier
Je l'ouvre en output

Mais la il me dit que le fichier est deja ouvert alors que je l'es fermer avec close#1

Si quelqu'un a la solution a mon probléme ?Merci
Tchao

17 réponses

mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 17
14 juin 2007 à 16:05
Oups, oui, bien vu merci

Dim ff1 As Integer
Dim ff2 As Integer

ff1 = FreeFile

Open "C:\blabla\fichier.txt" For Input As #ff1
    ff2 = FreeFile
    Open "C\blabla\un_autre_fichier.txt" As #ff2
       'code de lecture et écriture sumultanée
    Close #ff2
Close #ff1

@++

<hr size ="2" width="100%" />( Nouveau forum : Exclusivement Office & VBA
3
jrivet Messages postés 7393 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
14 juin 2007 à 15:20
Salut,
Donne le code utilisé, ca aidera.

@+: Ju£i?n
Pensez: Réponse acceptée
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
14 juin 2007 à 15:20
fais voir ton code

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
14 juin 2007 à 15:21
si les centiemes (voir moins)  de secondes s'y mettent aussi....
on va pas s'en sortir mon p'tit Julien ^^

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0

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

Posez votre question
drikce06 Messages postés 2237 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 11
14 juin 2007 à 15:21
Trop bien les gars, du jamais vu! Egalité parfaite!

Vous méritez la médaille sur ce qoup là

 Drikce 06 (Nouveau !!! Forum Exclusivement Office Et VBA By Mortalino)
0
jrivet Messages postés 7393 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
14 juin 2007 à 15:23
Re,

Quand les grands esprits se rencontrent.... pour une fois je suis devant yahou!!! et même pas besoin de chwoual..

@+: Ju£i?n
Pensez: Réponse acceptée
0
cs_Enyx Messages postés 16 Date d'inscription dimanche 25 juin 2006 Statut Membre Dernière intervention 19 juin 2007
14 juin 2007 à 15:24
If Second(Time) = 0 Then
        Open (addbase & "" & Nombase) For Binary As #1
        Do
        Line Input #1, textebase
        parabase = Split(textebase, "|")
        finheure = parabase(2)
        findate = parabase(3)
        temp = Split(finheure, ".")
        tempminute = (Val(temp(0)) * 60) + Val(temp(1))
        temp = Split(Format(Time, "hh.mm"), ".")
        tempminutepc = (Val(temp(0)) * 60) + Val(temp(1))
        datepc = Val(Format(Date, "dd")) + Val(Format(Date, "mm")) * 100
        datetab = Split(findate, ".")
        datefinpc = Val(datetab(0)) + Val(datetab(1)) * 100
        If datefinpc > datepc Then
            'on garde
            If textefichier = "" Then
                textefichier = textebase
                Else
                textefichier = textefichier & vbCrLf & textebase
            End If
        Else
           
            If datefinpc = datepc Then
                    If tempminute > tempminutepc Then
                    'on suprime
                    Else
                        If textefichier = "" Then
                        textefichier = textebase
                        Else
                        textefichier = textefichier & vbCrLf & textebase
                        End If
                    End If
            End If
        End If
        Loop While Not EOF(1)
        Close #1
        Open (addbase & "" & Nombase) For Output As #2
        Print #2, textefichier
        Close #2
    End If
   
Voila !
Tchao
0
cs_Enyx Messages postés 16 Date d'inscription dimanche 25 juin 2006 Statut Membre Dernière intervention 19 juin 2007
14 juin 2007 à 15:25
Arf rectification 2ieme ligne
Open (addbase & "" & Nombase) For input As #1

Tchao
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
14 juin 2007 à 15:27
étrange, en effet, je pense qu'il n'a pas finit de jouer avec le fichier....

c'est problématique

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
jrivet Messages postés 7393 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
14 juin 2007 à 15:28
Salut
Dans le code donné, lors de la seconde ouverture c'est #2 qui doit être déjà ouvert.

D'ou l'utilité d'utiliser FreeFile.

Que cherches tu as faire exactement

@+: Ju£i?n
Pensez: Réponse acceptée
0
cs_Enyx Messages postés 16 Date d'inscription dimanche 25 juin 2006 Statut Membre Dernière intervention 19 juin 2007
14 juin 2007 à 15:33
je cherche a lire une ligne d'un fichier et si l'heure et la date est passé je supprime la ligne
 Voici un exemple de ligne :
toto|tousleréseaux|23.30|16.06

toto=varible pour mon prog
tousleréseaux = idem
23.30=heure
16.06=date

Et #2 n'est pas utilisé

Tchao
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 17
14 juin 2007 à 15:46
Salut,

Nop, utilise FreeFile comme précédemment dit ^^

Pour ton second problème, utilise la fonction Split :
TableauDeVariables = Split(TaLigne, "|")

Dim i As Long
For i = LBound(TableauDeVariables) To UBound(TableauDeVariables)
    Msgbox TableauDeVariables(i)
Next i

Julien, Renfield :
Bravo
Mais le privilège du nom placé alphabétiquement à parlé..
J Rivet
Renfield

Tiens, JR, John Ross  (Daaaalllaaaaaaaaas)
Ok, je suis fou, je sors

@++

<hr size ="2" width="100%" />( Nouveau forum : Exclusivement Office & VBA
0
cs_Enyx Messages postés 16 Date d'inscription dimanche 25 juin 2006 Statut Membre Dernière intervention 19 juin 2007
14 juin 2007 à 15:51
Merci de ton aide peut tu me dire comment fonctionne la fonction FreeFile

Tchao
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 17
14 juin 2007 à 15:58
Oui,

Dim ff1 As Integer
Dim ff2 As Integer

ff1 = FreeFile
ff2 = FreeFile

Open "C:\blabla\fichier.txt" For Input As #ff1
    Open "C\blabla\un_autre_fichier.txt" As #ff2
       'code de lecture et écriture sumultanée
    Close #ff2
Close #ff1

@++

<hr size="2" width="100%" />( Nouveau forum : Exclusivement Office & VBA
0
jrivet Messages postés 7393 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
14 juin 2007 à 15:59
Salut,
Sûrement pas le plus simple mais cela semble fonctionner

Private Sub Form_Load()
Dim NumFile As Integer
Dim Fichier As String
Dim Contenu As String
Dim i As Integer
Dim Lignes() As String
Dim LDate As Date
Dim LHeure As Date
Dim Temoin As Date
Dim LParam() As String
   NumFile = FreeFile
   'Récupère le contenu entier du fichier deflist
   Fichier = "C:\Test.txt"
   Open Fichier For Binary As NumFile
   Contenu = String(LOF(NumFile), 0)
   Get #NumFile, , Contenu
   Close #NumFile
   
   'on recupère les lignes
   Lignes = Split(Contenu, vbCrLf)
   'on efface le contenu
   Contenu = vbNullString
   
   'Temoin de date et heure du debut de boucle
   Temoin = Format(Now, "dd/mm/yyyy hh:mm")
   'pour chaque lignes
   For i = LBound(Lignes) To UBound(Lignes)
       'on récupère les <> eleme
       LParam = Split(Lignes(i), "|")
       'petite sécurité
       If UBound(LParam) = 3 Then
           'on construit la date et l'heure
           LDate = Replace(LParam(3), ".", "/") & "/" & Year(Date)
           LHeure = Format(Replace(LParam(2), ".", ":"), "hh:mm")
           'si le témoin est plus petit => pas encore passe donc on garde
           If Temoin < (LDate & " " & LHeure) Then Contenu = Contenu & Lignes(i) & vbCrLf
       End If
   Next
   
   Open Fichier For Binary As NumFile
         Put #NumFile, , Contenu
   Close #NumFile
End Sub<hr />, ----
[code.aspx?ID=41455 By Renfield]

@+: Ju£i?n
Pensez: Réponse acceptée
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
14 juin 2007 à 16:02
ff1 = FreeFile
ff2 = FreeFile

ouh, mortalino, c'est inexact

en sortie, tu auras ff1  = ff2

Enyx, je vois aps de soucis ajeur dans ton code
ferme VB et relance ton projet

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
cs_Enyx Messages postés 16 Date d'inscription dimanche 25 juin 2006 Statut Membre Dernière intervention 19 juin 2007
14 juin 2007 à 16:30
Merci beaucoup de votre aide et de votre rapiditée !!!!

Ca fonctionne corectement pour l'ouverture des fichiers (a part ma fonction de comparaison que je doit affiner ^^)

Merci et Tchao !!!!
0