Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1477 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Besoin d'une formule de math

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Besoin d'une formule de math

n°1089963
NullDragon
Posté le 19-05-2005 à 20:55:06  profilanswer
 

While Not EOF(iFreeFile)  
 
  startPos = 1  
 
  Line Input #1, sTmp 'Lire une ligne complète et la mettre dans sTmp.  
 
  For x = 0 To 5  
     
    iLen = InStr(startPos, sTmp, sPipe) - startPos    
         
    List1.AddItem Mid(sTmp, startPos, iLen)  
     
    startPos = startPos + iLen + 1  
   
  Next  
   
  List1.AddItem Mid(sTmp, startPos, Len(sTmp))  
  'Je voudrais supprimer cette ligne et mettre for x = 0 to 6 et mettre startpos = startpos + ilen + 1 au début et faire en sorte que ilen retourne soit la longueur de la chaine stmp ou soit il retourne la valeur de Instr si c pas 0, donc qu'il renvoit soit la position de la string sPipe ou soit la longueur de la chaine sTmp si c 0, donc jamais 0  
 
Wend  
 
Donc une formule de math qui doit renvoyer la valeur de sTmp ou la valeur de InStr() si elle égale pas 0

mood
Publicité
Posté le 19-05-2005 à 20:55:06  profilanswer
 

n°1090161
AlainTech
Pas trouvé? Cherche encore!
Posté le 19-05-2005 à 23:49:46  profilanswer
 

D'après ce que je comprends du résultat recherché, j'ai pondu un petit quelque chose.
Bon, d'accord c'est plus long que ce que tu avais fait mais c'est nettement plus souple et plus universel.
 
Dans le userform, je mets le code suivant:

Private Sub cmdGo_Click()
 
  Dim iInputFile As Integer
  Dim sTextFile As String
  Dim sTmp As String
  Dim vArray As Variant
  Dim vI As Variant
   
  sTextFile = "D:\My Documents\Excel\Forum\TestPourExcel.txt"
   
  lst1.Clear
  iInputFile = FreeFile()
  Open sTextFile For Input As iInputFile
  While Not EOF(iInputFile)
    Line Input #iInputFile, sTmp
    vArray = Split(sTmp, "|" )
    For Each vI In vArray
      lst1.AddItem (vI)
    Next vI
  Wend
  Close iInputFile
 
End Sub


J'ai pris la liberté de définir le séparateur "|" en voyant que tu l'avais nommé sPipe.
 
Au cas où tu travaillerais encore sous Office 97, j'ai recréé la fonction (ou méthode) Split de VBS (ou JScript).

Function Split(sLine As String, sSep As String) As Variant
   
  Dim aRet() As String
  Dim iI As Integer
  Dim iLen As Integer
  Dim sBuff As String
  Dim sChar As String
   
  ReDim aRet(0)
  iLen = Len(sLine)
  sBuff = ""
   
  For iI = 1 To iLen
    sChar = Mid$(sLine, iI, 1)
    If sChar = sSep Then
      aRet(UBound(aRet)) = sBuff
      sBuff = ""
      ReDim Preserve aRet(UBound(aRet) + 1)
    ElseIf iI = iLen Then
      sBuff = sBuff & sChar
      aRet(UBound(aRet)) = sBuff
    Else
      sBuff = sBuff & sChar
    End If
  Next iI
  Split = aRet
End Function


J'espère que ça fait ce que tu veux.
 
Edit --> Remplacement de SplitText par Split et commentaire pour les utilisateurs de Office 97.


Message édité par AlainTech le 20-05-2005 à 00:39:55

---------------
Si on vous donne une info qui marche, DITES-LE!!!! ------ Si vous trouvez seul, AUSSI, votre solution peut servir à d'autres! ------ Je dois la majorité de mes connaissances à mes erreurs!
n°1090166
NullDragon
Posté le 19-05-2005 à 23:56:37  profilanswer
 

Merci, je vais regarder tout cela  :jap:

n°1090182
AlainTech
Pas trouvé? Cherche encore!
Posté le 20-05-2005 à 00:35:25  profilanswer
 

Comme je travaille presqu'exclusivement sur Excel 97, la fonction Split n'y est pas présente.
Par contre, elle l'est dans des versions plus récentes.
 
Il suffit donc de remplacer SplitText par Split dans la ligne suivante

vArray = SplitText(sTmp, "|" )


et ignorer le code que j'ai dit de mettre dans un module.
 
Dommage, j'étais pourtant fier de moi... :cry:


---------------
Si on vous donne une info qui marche, DITES-LE!!!! ------ Si vous trouvez seul, AUSSI, votre solution peut servir à d'autres! ------ Je dois la majorité de mes connaissances à mes erreurs!
n°1184865
gdoudy
Posté le 26-08-2005 à 09:44:32  profilanswer
 

:) Très bien pour le remplacement de SPLIT.
Cela m'a bien servi.
Cela n'aura pas été inutile.
Tu peux être fier de toi.
 :bounce:  
 
 

AlainTech a écrit :

Comme je travaille presqu'exclusivement sur Excel 97, la fonction Split n'y est pas présente.
Par contre, elle l'est dans des versions plus récentes.
 
Il suffit donc de remplacer SplitText par Split dans la ligne suivante

vArray = SplitText(sTmp, "|" )


et ignorer le code que j'ai dit de mettre dans un module.
 
Dommage, j'étais pourtant fier de moi... :cry:



Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Besoin d'une formule de math

 

Sujets relatifs
Besoin d'une formule de math.Besoin d'aide sur méthode contains de la class Collection
[XML/XSL] Template, besoin d'aide ...besoin d'aide pour faire une page dynamique
Macro formule cellule #NOM?...besoin d'aide sur vba pour une condition
Besoin d'aide pour balise a hrefBesoin d'aide pour lancer un flash sur le disque, à partir d'une page
Plus de sujets relatifs à : Besoin d'une formule de math


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR