Comment comparer certaines infos par ligne

cs_Miss1 Messages postés 221 Date d'inscription vendredi 21 octobre 2005 Statut Membre Dernière intervention 22 décembre 2010 - 11 mai 2006 à 08:50
cs_Miss1 Messages postés 221 Date d'inscription vendredi 21 octobre 2005 Statut Membre Dernière intervention 22 décembre 2010 - 11 mai 2006 à 16:03
Miss1
salut j'ai fais un code en vb6 le pb c'est qui bugg et que je ne vois pas comment remédier a cette solution.
1) le code doit ouvrir un fichier "toto.txt"
2) il doit lire la premiere ligne
3) retirer les infos que je souhaite (split)
4) merttre ses infos ds des varibles et les conserver
5) fermer le fichier
6) ouvrir a nouveau "toto.txt"
7) comparer si les variable sont identique a chaque ligne.(lie ligne par ligne et comparer sur chaque ligne)
8) si c'est identique modifier copier la ligne et la modifier sinon passer ligne suivante.
9)fermer fichier

voici le code le pb c'est qui ne reconnait pas les valeurs ds le split et le teste ne fonctionne pas:
' variable
ligne = ("C:\toto.txt")
fichier = FreeFile
Open ligne For Output As #fichier
Line Input #fichier, ligne

a = Split(st, ";")(0)
d = Split(st1, ";")(0) ' demande 1er mot

b = Split(st, ";")(3)
e = Split(st1, ";")(3)

c = Split(st, ";")(4)
f = Split(st1, ";")(4)

i = Split(st, ";")(5)
j = Split(st1, ";")(5)


Close #fichier

ligne1 = ("C:\toto.txt")
fichier1 = FreeFile
Open ligne1 For Output As #fichier1
Line Input #fichier1, ligne1
If InStr(a, d) Then
a = d
MsgBox "c identique"
If InStr(b, e) Then
b = e
MsgBox "c identique"
If InStr(c, f) Then
c = f
MsgBox "c identique"
If InStr(i, j) Then
i = j
MsgBox "c identique"
Else: MsgBox "on modifie"
End If
End If
Else: 'ligne suivante
End If

End If
Close #fichier1
End Function
merci de bien vouloire m'aider

11 réponses

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
11 mai 2006 à 10:45
salut,
je t'ai posé une question la dernière fois. j'attend la réponse pour essayer de t'aider.....
voir ton précédent topic (le même)
@+
0
cs_Miss1 Messages postés 221 Date d'inscription vendredi 21 octobre 2005 Statut Membre Dernière intervention 22 décembre 2010
11 mai 2006 à 11:08
désoler ya des jours comme ca .
pour répondre a ta question
j'ai un fichier texte dedans ya plusieur ligne
a,b,c,d,e,f,g,h
m,n,o,p.....
q,r,s,t......
i,j,k,d,,y,i,p
ce que je veut s'est comparer prendre les donner qui m'interesse ici c "d" dou split et
de les affecter a une variable puis comparer si cette variable est ds chaque ligne
cad si il y a d ds mon texte on supprime i,j,k,d,,y,i,p et on remplace d par 0
et sela devient
a,b,c,0,e,f,g,h
m,n,o,p.....
q,r,s,t......
j'espere avoir répondu a ta question
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
11 mai 2006 à 11:32
çà ne répond qu'à moitié....
"0" ok, mais est-ce qui çà veut dire que tu supprimes toutes les occurences de "d" ? donc nombre d'occurences-1?
est-ce que tu cherches "d" dans la chaîne ou juste en 4e position?
0
cs_Miss1 Messages postés 221 Date d'inscription vendredi 21 octobre 2005 Statut Membre Dernière intervention 22 décembre 2010
11 mai 2006 à 11:47
ce que je veut dire c que a chaque fois qui a une ligne avec d dedans je la copie, remplace par 0 et supprime la ligne original
0

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

Posez votre question
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
11 mai 2006 à 12:13
désolé d'être aussi pointilleux (oud'avoir tant de mal à comprendre...) mais dans ton exemple, tu laisses cette ligne originale, c'est les autres que tu supprimes....

bon, à supposer l'exemple...
dans ce goût là çà devrait aller


Option Explicit
Private Const sFile As String = "C:\test.txt"
'
'
Private Sub Form_Load()
'a , b, c, d, e, f, g, h
'm , n, o, p
'q , r, s, t
'i , j, k, d, , y, i, p

Const sStringToFind As String = "d"

Dim FF As Integer, sBuffer As String, aLines() As String
Dim bFound As Boolean, i As Long

FF = FreeFile
Open sFile For Input As #FF
sBuffer = Input (LOF(FF), #FF)
Close #FF

aLines = Split(sBuffer, vbCrLf)
bFound = False

For i = 0 To UBound (aLines)
If Not bFound Then
' on a pas encore trouvé la ligne
If InStr(1, aLines(i), sStringToFind) > 0 Then
' on le trouve, c'est donc la première fois. on remplace. sinon rien
aLines(i) = Replace(aLines(i), sStringToFind, "0")
bFound = True
End If
Else
' on a trouvé avant, on vire la ligne
If InStr (1, aLines(i), sStringToFind) > 0 Then
aLines(i) = vbNullString
bFound = True
End If
End If
Next i

' on concatène
sBuffer = vbNullString
For i = 0 To UBound (aLines)
If Len(aLines(i)) > 0 Then
sBuffer = sBuffer & aLines(i) & vbCrLf
End If
Next i

' on sauve
FF = FreeFile
Open sFile For Output As #FF
Print #FF, Left$(sBuffer, Len (sBuffer) - 2)
Close #FF

' vide var
sBuffer = vbNullString
Erase aLines

MsgBox "voir fichier '" & sFile & "'"
Unload Me
End Sub

<small> Coloration
syntaxique automatique [AFCK]</small>


PCPT [AFCK]
0
cs_Miss1 Messages postés 221 Date d'inscription vendredi 21 octobre 2005 Statut Membre Dernière intervention 22 décembre 2010
11 mai 2006 à 14:02
c gentil de m'aider mais ya pas plus simple. car la j'ai du mal
d'apres ce que je dois faire
1) le code doit ouvrir un fichier "toto.txt"
2) il doit lire la premiere ligne
3) retirer les infos que je souhaite (split)
4) merttre ses infos ds des varibles et les conserver
5) fermer le fichier
6) ouvrir a nouveau "toto.txt"
7) comparer si les variable sont identique a chaque ligne.(lie ligne par ligne et comparer sur chaque ligne)
8) si c'est identique modifier copier la ligne et la modifier sinon passer ligne suivante.
9)fermer fichier
moi je penser a - un open fichier"c:\toto.txt"
ensuite je récupere les chaines qui ont les numéros 2,8 ,13 ds la premiere ligne



b = Split(st, ";")(3)
e = Split(st1, ";")(3)
c = Split(st, ";")(4)
f = Split(st1, ";")(4)
i = Split(st, ";")(5)
j = Split(st1, ";")(5)
puis on compare a partir de la ligne 2 d'ou
If InStr(a, d) Then
a = d
MsgBox "c identique
et si c identique on remplace sinon suiv
0
cs_Miss1 Messages postés 221 Date d'inscription vendredi 21 octobre 2005 Statut Membre Dernière intervention 22 décembre 2010
11 mai 2006 à 14:17
maintenant j'arrive a ouvrir mon fichier et a lui demander de retirer les valeur snum 0,2,4,5 de la ligne et de les mettre ds une variables. maintenant je cherche a faire je cherche comment comparer les variable a,b,c,i ds les ligne suivante et si c variable (cad se qui a dedans )st identique il faut modifier sinon continuer
fic = "C:\tti.txt "
Dim uiop As Integer
uiop = FreeFile
Open fic For Input As #uiop
Line Input #uiop, st

a = Split(st, ";")(0)
b = Split(st, ";")(2)
c = Split(st, ";")(4)
i = Split(st, ";")(5)

close #uiop
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
11 mai 2006 à 14:50
2 8 13 ?
0 2 4 5 ?
pfff.... on est pas rendu !

ps : split fait déjà la découpe complète. utiliser split(string, carac)(n), ok si tu n'as besoin que d'une valeur (celle de n).
pour plusieurs comme c'est le cas, il ne faut pas faire 5 split ; trop gourmand!!

dim aTableau() as string
aTableau = split(st, "; ")
a=aTableau(0)
b=aTableau(2)
c=aTableau(4)
i=aTableau(5)
0
cs_Miss1 Messages postés 221 Date d'inscription vendredi 21 octobre 2005 Statut Membre Dernière intervention 22 décembre 2010
11 mai 2006 à 15:06
.c vrai que mes explication ne sont pas tres claire et que'on est pas rendu. sorry!!!!!
merci c vrai que cette méthodes et moin embéttante.
mais apres comment faire pour comparer chaqun des caractere pour chaque ligne c la que je bugg maintenant cad que je veut verifier si la variablea,b,c,i est bien ds la 2 emme ligne puis ds la 3eme ect.
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
11 mai 2006 à 15:48
l'intérêt du support forum (écrit), c'est qu'il suffit de lire/relire (pas besoin de se faire répéter)...
s'il y a toujours un problème au bout de la 3e ou 4e fois que tu demandes de l'aide pour ce problème, c'est peut-être qu'il faut reformuler, non?

là ce que j'en comprend :

a,b,c,d,e,f,g,h
m,n,o,p.....
q,r,s,t......
i,j,k,d,,y,i,p

uniquement si une ligne (pour chaque ligne) contient LES mêmes valeurs que celle en rouge de la première ligne (aux emplacements correspondants), tu supprimes cette ligne et tu remplaces la valeur en bleu de la première ligne par zéro (donc plus aucun rapport avec "remplacer d si d trouvé ailleurs", et comme tu n'as toujours pas répondu à ma question "1 2 3" etc... de l'autre jour, tu ne sais pas pour autant si tu as supprimé une ou plusieurs lignes...)

j'en connais un qui est sur le point de déclarer forfait
0
cs_Miss1 Messages postés 221 Date d'inscription vendredi 21 octobre 2005 Statut Membre Dernière intervention 22 décembre 2010
11 mai 2006 à 16:03
merci qd mm mais je m'acharne a verifier que les variables que j'ai définit avant n'apparaissent pas ds chaqune des lignes. et comme je n'y arrive pas et vu que mes explications ne st pas claire je laisse tomber j'arriverai bien a trouver par moi mm.
et pour la question de l'autre :
cf": ensuite disons que tu relis plus tard le fichier, tu vas rechercher (pour l'exemple)...
un doublon de a,b,c,d ou de a,b,c,d,2" je cherche un doublon de a,b,c,d,2. je veut supprimer la ligne qui a une des varibles définit avant.
Et pour le laisser tomber c pas la peine de déclarer forfait j'arrête tout . Mais ce n'est pas un forfait définitif.

ps:se que je demander cette fois si c'est comment vérifier si toto et titi n'est pas ecrit dans les autres lignes.
t'avais compris se que je voulais dire.
0
Rejoignez-nous