IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Excel Discussion :

[VBA-E] conversion de format


Sujet :

Excel

  1. #1
    Expert confirmé

    Avatar de snake264
    Homme Profil pro
    Datascientist chez Leboncoin
    Inscrit en
    Novembre 2006
    Messages
    2 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Datascientist chez Leboncoin
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 914
    Par défaut [VBA-E] conversion de format
    Bonjour, voila mon problème est que pour un projet je dois réaliser une conversion de format à partir d'un fichier texte et de façon automatique sans que je sois obligé de tout changer manuellement, je m'explique j'ai dans un fichier texte des temps et des nombres de tours au format suivant:
    "minute.seconde.millième";"n° du tour"
    et je voudrai le convertir au format suivant dans excel:
    "minute";"seconde,millième";"n° du tour"
    exemple plus précis:
    "54.59.043";"4" => "54";"59,043";"4"

    Est-il possible de faire sa ?
    merci de vos reponse

  2. #2
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Janvier 2006
    Messages : 103
    Par défaut
    http://msdn2.microsoft.com/en-us/library/bt3szac5.aspx
    ben la fonction replace,
    là-dedans, tu précises ton "count" à 1 une fois

  3. #3
    Expert confirmé

    Avatar de snake264
    Homme Profil pro
    Datascientist chez Leboncoin
    Inscrit en
    Novembre 2006
    Messages
    2 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Datascientist chez Leboncoin
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 914
    Par défaut
    merci bien de ta réponse mais je n'ai strictement rien compris à ce qu'il y a marqué car l'anglais et moi sa fait deux lol et sachant que je n'ai jamais fais de vb de ma vie je suis complètement perdu dans les explications de ton lien

    svp quelqu'un pourrait-il m'aider

  4. #4
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    tiens un peu de lecture ... :

    http://silkyroad.developpez.com/VBA/...nesCaracteres/

    - Voir la fonction split.. puis l'opérateur de concaténation des chaînes de carcatéres : & ...


  5. #5
    Expert confirmé

    Avatar de snake264
    Homme Profil pro
    Datascientist chez Leboncoin
    Inscrit en
    Novembre 2006
    Messages
    2 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Datascientist chez Leboncoin
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 914
    Par défaut
    Merci sa fait plaisir de se sentir aider^^ je vais voir sa et je vous dirai ensuite comment sa se déroule

  6. #6
    Expert confirmé

    Avatar de snake264
    Homme Profil pro
    Datascientist chez Leboncoin
    Inscrit en
    Novembre 2006
    Messages
    2 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Datascientist chez Leboncoin
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 914
    Par défaut
    Je n'arrive pas à utiliser la fonction split pour sépare les minutes du reste, exemple:
    "43.12.713" => "43";"12.713"
    Vous n'auriez pas un exemple svp
    J'ai essayer de trouver un code à l'aide du tuto proposer précédemment qui est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim Tablo() As String
    Monstring = "43.12.592"
    Tablo = Split(Monstring, ".")
    For i = LBound(Tablo) To UBound(Tablo)
    Tablo(i) = Trim(Tablo(i))
    MsgBox Tablo(i)
    Next
    Mais cela m'affiche des textbox avec marquer 43 puis 12 et 592 après avoir cliquer sur ok de chacun d'eux et 43.12.713 reste toujours dans la meme cellule

  7. #7
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    tiens le dernier exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    Sub MonTest()
    Dim Tablo() As String
    Dim MonString As String
    Dim MaNouvelleString As String
    '"43.12.713" => "43";"12.713"
     
    MonString = "43.12.713"
    Tablo = Split(MonString, ".")
    If UBound(Tablo) = 2 Then
     MaNouvelleString = Tablo(0) & ";" & Tablo(1) & "." & Tablo(2)
     MsgBox MonString & " ==>> " & MaNouvelleString
    Else
     MsgBox "Chaine " & MonString & " Incorrecte"
    End If
    End Sub
    s'il sagit de modifier la valeur d'une cellule .. il faut penser ensuite à écrire dans celle-ci .....

  8. #8
    Expert confirmé

    Avatar de snake264
    Homme Profil pro
    Datascientist chez Leboncoin
    Inscrit en
    Novembre 2006
    Messages
    2 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Datascientist chez Leboncoin
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 914
    Par défaut
    Alors merci beaucoup j'avance déjà beaucoup avec ce code qui marche voici ce que j'ai marquer dans ma macro:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    Dim Tablo() As String
    Dim Cell As Variant
    Dim MonString As String
    Dim MaNouvelleString As String
    '"43.12.713" => "43";"12.713"
     
    MonString = "43.12.713"
    Tablo = Split(MonString, ".")
    If UBound(Tablo) = 2 Then
     MaNouvelleString = Tablo(0) & ";" & Tablo(1) & "." & Tablo(2)
     MsgBox MonString & " ==>> " & MaNouvelleString
    For Each Cell In Selection
            Cell.Value = Tablo(0) & ";" & Tablo(1) & "." & Tablo(2)
     Next Cell
    Else
     MsgBox "Chaine " & MonString & " Incorrecte"
     
    End If
    Mais le problème c'est que si je rentre une autre valeur que "43.12.713" cela m'affiche quand même "43";"12.713" et je voudrais que sa m'affiche pour n'importe quelle valeur du même c'est à dir:
    "mm.ss.dcm" => "mm";"ss.dcm"
    Comment puis-je faire pour faire cela ?

  9. #9
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    et tu la rentre ou ta valeur ... ? il faut modifier cette ligne..:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    MonString = "43.12.713"

  10. #10
    Expert confirmé

    Avatar de snake264
    Homme Profil pro
    Datascientist chez Leboncoin
    Inscrit en
    Novembre 2006
    Messages
    2 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Datascientist chez Leboncoin
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 914
    Par défaut
    Il me semblait bien que sa devais venir de la, merci de me l'avoir confirmer , mais comment je fais pour que MonString prenne n'importe quelle valeur que l'on marque dans une cellule au hasard et non défini?

  11. #11
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Citation Envoyé par snake264
    Il me semblait bien que sa devais venir de la, merci de me l'avoir confirmer , mais comment je fais pour que MonString prenne n'importe quelle valeur que l'on marque dans une cellule au hasard et non défini?
    ? et comment tu le lit ce fichier texte ...?

  12. #12
    Expert confirmé

    Avatar de snake264
    Homme Profil pro
    Datascientist chez Leboncoin
    Inscrit en
    Novembre 2006
    Messages
    2 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Datascientist chez Leboncoin
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 914
    Par défaut
    Et bien je le l'importe à partir d'exel et il me fait une liste sur deux cellule une pour le temps et une pour le nombre de tour:
    cel 1 cel 2
    "mm.ss.dcm" "n° du tour"
    "mm.ss.dcm" "n° du tour"
    etc... et il y aura autant de ligne qu'il y aura de valeur dans le fichier texte.

  13. #13
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    alors ... il doit faire quoi ton code ?

    peu-être : une fois le fichier texte chargé .. parcourir la colonne 1 .. et modifier le format ..?


  14. #14
    Expert confirmé

    Avatar de snake264
    Homme Profil pro
    Datascientist chez Leboncoin
    Inscrit en
    Novembre 2006
    Messages
    2 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Datascientist chez Leboncoin
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 914
    Par défaut
    Oui voila c'est exactement sa je voudrais que au final cela devienne comme ceci:
    col1 col2 col3
    "mm" "ss,dcm" "n° du tour"

  15. #15
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    j'avais pas vu ta boucle for... ....

    elle n'est pas au bon endroit ...!! ..... ta fonction de traitement de chaîne doit se situer dans cette boucle pour traiter chacune de tes cellules...

  16. #16
    Expert confirmé

    Avatar de snake264
    Homme Profil pro
    Datascientist chez Leboncoin
    Inscrit en
    Novembre 2006
    Messages
    2 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Datascientist chez Leboncoin
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 914
    Par défaut
    Mais si je la met ailleurs MaNouvelleString ne pourra pas afficher ce qui a été decider plus haut non ? (dsl si mes questions sont parfois assez bête c'est la toute première fois que je code en vb^^)

  17. #17
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    tiens j'ai pas le temps de tester mais en gros cela doit être mieux:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
     
    Dim Tablo() As String
    Dim C As range
     
    '"43.12.713" => "43";"12.713"
    For Each C In Selection
     
    Tablo = Split(C, ".")
      If UBound(Tablo) = 2 Then
            C.Value = Tablo(0) & ";" & Tablo(1) & "." & Tablo(2)
      Else
         MsgBox "Chaine " & c & " Incorrecte"
      End If
    Next Cell

  18. #18
    Expert confirmé

    Avatar de snake264
    Homme Profil pro
    Datascientist chez Leboncoin
    Inscrit en
    Novembre 2006
    Messages
    2 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Datascientist chez Leboncoin
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 914
    Par défaut
    Parfait sa marche^^ merci beaucoup, maintenant est-il possible de mettre les minutes dans une colonne différentes ?

  19. #19
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Tu veux donc placer tes tours en colonne 4
    Alors c'est plus simple. Je reprends le code de bbil pour te placer les minutes, secondes et millièmes dans trois colonnes différentes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Dim Tablo() As String
    Dim C As range
    '                 A    B    C
    '"43.12.713" => "43" "12" "713"
    For Each C In Selection
     
        Tablo = Split(C, ".")
        If UBound(Tablo) = 2 Then
            C.Value = Tablo(0)
            C.Offset(0,1).value = Tablo(1)
            C.Offset(0,2).value = Tablo(2)
         Else
            MsgBox "Chaine " & c & " Incorrecte"
      End If
    Next Cell

  20. #20
    Expert confirmé

    Avatar de snake264
    Homme Profil pro
    Datascientist chez Leboncoin
    Inscrit en
    Novembre 2006
    Messages
    2 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Datascientist chez Leboncoin
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 914
    Par défaut
    Merci de me proposer ce code mais ce n'est pas exactement cela ce que j'aimerai c'est cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ' A           B
    "mm"    "ss,dcm"
    par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    '  A           B
    "43"     "12,713"

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Conversion seconde format y+m+d+h+m+s
    Par Mysti¢ dans le forum Général Python
    Réponses: 13
    Dernier message: 22/07/2016, 20h01
  2. [VBA-E07] Pb de conversion de Format
    Par lucarno dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/03/2009, 15h44
  3. [VBA][EXCEL]Conversion d'une chaine en single
    Par Ania dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 29/11/2005, 18h28
  4. Conversion de format de date
    Par decour dans le forum Access
    Réponses: 2
    Dernier message: 03/10/2005, 11h39
  5. Réponses: 11
    Dernier message: 02/09/2003, 15h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo