Convertir des données en VBA vers Excel

Convertir des données en VBA vers Excel - VB/VBA/VBS - Programmation

Marsh Posté le 08-06-2004 à 09:06:39    

Hello TLM. J'aimerais copier une zone de texte d'une appli VBA et coller le tout dans excel et convertir le tout pour qu'il me mette ce qu'il y a entre les apostrophes dans des colonnes distinctes (cf en dessous)
 
ce que je dois copier : '250'0.35896'0.5478'1523
 
Je dois donc envoyer cette trame vers excel et séparer les chiffres entres les "'". G essayé avec une fonction "texttocolumns" mais ca veut pas.
Si quelqu'un veut bien m'aider je lui en serais vraiment reconnaissant :-)
 
@ + sur le forum.

Reply

Marsh Posté le 08-06-2004 à 09:06:39   

Reply

Marsh Posté le 08-06-2004 à 10:34:53    

je pense qu'il te faut regarder du côté de Split() pour transformer ta chaine en tableau d'éléments
Il te restera à boucler sur ce tableau pour remplir les cellules des colonnes

Reply

Marsh Posté le 08-06-2004 à 10:57:37    

Vite fait, à la bourrin...

Code :
  1. Sub Extract_Nb()
  2. Dim strChaine As String, strProv As String
  3. Dim iPos As Integer
  4.    
  5.     strChaine = "'250'0.35896'0.5478'1523"
  6.     ' On vire la 1ere quote
  7.     strChaine = Mid(strChaine, 2, Len(strChaine) - 1)
  8.     ' On cherche la quote suivante
  9.     iPos = InStr(1, strChaine, "'", vbTextCompare)
  10.    
  11.     Do While iPos > 0
  12.         ' On extrait le nombre
  13.         strProv = Mid(strChaine, 1, iPos - 1)
  14.         Debug.Print strProv
  15.         ' On cherche la quote suivante
  16.         iPos = InStr(1, strChaine, "'", vbTextCompare)
  17.         If iPos > 0 Then
  18.             ' On supprime le nb trouvé de dans la chaine
  19.             strChaine = Mid(strChaine, iPos + 1, Len(strChaine) - iPos)
  20.             iPos = InStr(1, strChaine, "'", vbTextCompare)
  21.         End If
  22.     Loop
  23.    
  24.     strProv = strChaine
  25.     Debug.Print strProv
  26. End Sub

Reply

Marsh Posté le 08-06-2004 à 11:26:28    

Salut =)
je viens de tester la fonction Split(), et sérieux c'est gavé + simple!!!

Code :
  1. Sub Extract()
  2.    dim n as string
  3.    dim valeurs
  4.    n='250'0.35896'0.5478'1523
  5.    valeurs=Split(n,"'" )
  6. 'valeurs(0)="" car il ne prend pas entre les "'" mais à chaque fois
  7.    cells(x,y).value = valeurs(1)
  8. '...
  9. End Sub


 
Merci tegu pour cette fonction =)

Reply

Marsh Posté le 08-06-2004 à 11:37:12    

Oui, c'est une chouette fonction mais je ne suis pas sûr qu'elle existe en VB Excel

Reply

Marsh Posté le 08-06-2004 à 11:43:49    

si si carrément, je suis sur Excel. de ttes façons je n'utilise jms le VB pr les appli. vive le C++! ;)

Reply

Marsh Posté le 08-06-2004 à 11:51:30    

destynov@ a écrit :

si si carrément, je suis sur Excel. de ttes façons je n'utilise jms le VB pr les appli. vive le C++! ;)

Ben mrd alors, ça marche pas chez moi :(  
Faut que je vois ça !!

Reply

Marsh Posté le 08-06-2004 à 12:18:06    

JihemAir a écrit :

Ben mrd alors, ça marche pas chez moi :(  
Faut que je vois ça !!


 
si tu tapes le nom de la fonction puis tu fais "F1", il ne la trouve pas? et en + je travaille sur Office 2000, qui inclut moins de fonctions et fonctionnalités (évidemment =)) que les dernières.

Reply

Marsh Posté le 08-06-2004 à 13:55:34    

Je l'ai sous VB6, pas sous Office 97. J'ai un Split, mais c'est pour diviser la fenêtre.

Reply

Marsh Posté le 08-06-2004 à 14:01:44    

c chiant ça! le pire, c'est quand tu développes en VBA sur un office, puis tu mets le document sur une autre version d'office qui n'a pas les fonctions! ça m'était arrivé pour la protection des feuilles où des paramètres n'existait pas sous 97. obligé de passer par une autre méthode. bref c'était pas le but du topic, je pense qu'on quand même répondu à la question =)

Reply

Marsh Posté le 08-06-2004 à 14:01:44   

Reply

Marsh Posté le 08-06-2004 à 14:05:08    

Affirmatif.

Reply

Marsh Posté le 09-06-2004 à 10:12:29    

Split() a été introduit avec VB6 et n'est pas disponible sous Office97.
 
Voici une fonction pour reproduire Split() sous Excel97
Je l'ai retrouvé dans mes archives, elle est vieille et peut sans doute être améliorée.
 


Function sSplit(ByVal expression As String, find As String) As Variant
    Dim i As Variant, j As Integer, k As Integer
    Dim result() As Variant
    j = 1
    i = InStr(j, expression, find)
    If i = 0 Then
        ReDim result(0)
        result(0) = expression
        sSplit = result
        Exit Function
    End If
    While i <> 0
        ReDim Preserve result(0 To k + 1)
        result(k) = Mid(expression, j, i - j)
        k = k + 1
        j = i + Len(find)
        i = InStr(j, expression, find)
    Wend
    If k > 0 Then   'le dernier
        ReDim Preserve result(0 To k)
        result(k) = Mid(expression, j, Len(expression) - (j - Len(find)))
    End If
    sSplit = result
End Function

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed