Formule excel assez bizzard et compliquée :p

Résolu
Oceathys -  
 Utilisateur anonyme -
Bonjour, voilà mon problème :
Admettons une case A1, contenant tout ce bordel là :

"0.93"3192"2601.0"2831.4"72.9"0.00"583.1"958.8"1801.8"0.0"0.46"298"69.7"69.7"67.8"

Existe t'il une formule permettant d'afficher en B1 C1 etc ... les données comprises entre les guillemets ? Je m'explique, on aura donc :
En B1 : 0.93
En C1 : 3192
En D1 : 2601.0
Etc ....

Il faut en fait que ça reconnaisse les données entre les guillemets :(
Nota bene : La formule Mid qui sert a compter les caractère et en afficher le nombre que le veux ne marche pas, enfin si, mais non , je m'explique :
La colonne A1 en fait :
"0.93"3192"2601.0"2831.4"72.9"0.00"583.1"958.8"1801.8"0.0"0.46"2982"69.7"69.7"67.8
Mais du coup cette formule devra s'appliquer a A2 A3 A4 etc ...
Le seul bémol de la formule Mid, c'est que le nombre de caractère ne sera pas toujours le même, car des fois en B2 par exemple, j'aurai 0,931, ce qui fait donc 5 caractères et non pas 4 comme B1 .... Donc pour mid, c'est mort, il faut vraiment une formule capable d'afficher les données entre les "" ..

Si qqun comprend mon charabia là, merci de m'aider , vraiment :p
PS ( C'est pour la reprogramation des calculateurs de voitures)

Merci d'avance, Jonathan

7 réponses

  1. Utilisateur anonyme
     
    heu ....... pourquoi pas faire simplement données ->convertir-> délimité ->mettre " dans autre -> fin et tout est séparé
    1
    1. lermite222 Messages postés 9042 Statut Contributeur 1 199
       
      Bonjour,
      Heuuu... pourquoi faire simple quand ont peu faire compliquer (rire).
      A+
      0
    2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      re,re

      OK, hombourgeois. Ce qui m'avait emmener sur la macro est le guillemet au départ qui crée une case vide... bien que ca soit pas trop gênant car on peut s'en contenter ou supprimer la colonne
      à oceathys de choisir

      Bonne soirée à tous
      :-)
      0
  2. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Re, Finalement j'ai une solution..
    Sub Separe2()
    Dim i As Integer, Deb As Integer, Fin As Integer, V As Double, L As Integer
    Dim Lig As Long, Col As Integer
    Dim R As Range
        Lig = 3: Col = 1
        Set R = Range("A1")
        L = Len(R)
        For i = 1 To L
            If Mid(R, i, 1) = Chr(34) Or i = L Then
                If Deb = 0 Then
                    Deb = i + 1
                Else
                    Fin = i - IIf(i < L, 1, 0)
                    V = CDbl(Replace(Mid(R, Deb, Fin - Deb + 1), ".", ","))
                    Cells(Lig, Col) = V
                    Lig = Lig + 1
                    Deb = Fin + 2
                End If
            End If
        Next i
    End Sub


    A+
    0
  3. oceathys Messages postés 3 Statut Membre
     
    Merci beaucoup, c'est c'est super sympa, mais comment je l'intègre ? :p
    0
    1. lermite222 Messages postés 9042 Statut Contributeur 1 199
       
      Tu as beaucoup de données à séparer ?
      Si oui, donne la plage à traiter et la colonne et ligne où commnencer la transcription.
      S'il n'y en a qu'une tu adapte la cellule A1 et Lig à la première ligne des résultat et idem pour Col.
      Ensuite soit tu lie la sub à un bouton soit tu met le curseur dans la sub et tu tape F5
      A+
      0
  4. ccm81 Messages postés 11033 Statut Membre 2 434
     
    une autre solution a voir sur ce lien

    http://www.cijoint.fr/cjlink.php?file=cj201011/cijtGogUEs.xls

    la plage B1:B20 a été nommée Tab elle peut etre modifiée

    cordialement
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour,

    peut-^tre + simple:

    Sub separer_guillemet() 
    Dim tablo() As String 
    tablo = Split(Right(Range("A1"), Len(Range("A1")) - 1), Chr(34)) 
    Range("B1").Resize(1, UBound(tablo) + 1) = tablo 
    End Sub

    Michel

    re,
    et si tu en as toute une série dans la colonne A (sinon, c'est pas drôle)

    Sub separer_guillemet(source, cible)
    Dim tablo() As String
    tablo = Split(Right(source, Len(source) - 1), Chr(34))
    cible.Resize(1, UBound(tablo) + 1) = tablo
    End Sub
    
    Sub test()
    Dim derlig As Long, lig As Long
    derlig = Cells(Cells.Rows.Count, 1).End(xlUp).Row
    Application.ScreenUpdating = False
    For lig = 1 To derlig
    separer_guillemet Cells(lig, 1), Cells(lig, 2)
    Next
    End Sub
    0
    1. lermite222 Messages postés 9042 Statut Contributeur 1 199
       
      Salut michel... Bien vu.
      0
  7. oceathys Messages postés 3 Statut Membre
     
    HA wééééé c'est ce qu'on me dit aussi sur msn, mais j'ai excel sur mac, et je n'ai pas : donnée convertir (en plsu je l'ai en anglais :( )

    http://cjoint.com/data3/3lbqAQunOVl.htm en B1 voila ce que ej veux que ca fasse
    0
    1. Utilisateur anonyme
       
      pas données convertir en version anglaise ??? curieux cela !!
      je l'ai eu dans toutes les version depuis v.97 (windows)
      0
  8. oceathys Messages postés 3 Statut Membre
     
    c'est bon les gars, ca amrche !! merci beaucoup !! en fait c'est donc : data, text to collums ;) merci encore gg
    0
    1. Utilisateur anonyme
       
      OUF, me voila rassuré sur Excel (LOL)
      0