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

Macros et VBA Excel Discussion :

[E-07] Tableaux de nombres à partir d'une chaine de caractères ?


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 8
    Points : 11
    Points
    11
    Par défaut [E-07] Tableaux de nombres à partir d'une chaine de caractères ?
    Décidément vous êtes très forts, j'ai réponse à tout ! (Je tente de répondre aux questions des autres, mais en vain... je pourrai sûrement le faire plus tard quand je m'y connaitrai mieux :-) )

    Dernière question pour ce soir :

    Soit la chaîne de caractère suivante : (c'est bien une chaîne de caractère et non des nombres)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim a as string
    a ="3 45 2 67 98"
    Je voudrais à partir de ça créer le tableau à une dimension suivant : (qui reprend la chaîne)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim t(1 to 5) as integer
    t(1)=3
    t(2)=45
    t(3)=2
    t(4)=67
    t(5)=98
    J'essaie un tas de truc avec des boucles For, des len(), des mid(), des boucles While...mais je ne m'en sors pas !!
    C'est bien sur un exemple pour illustrer ma question, car je voudrais pouvoir le faire de façon générale.
    Ce qui est pénible, c'est que les nombres ne font pas tous la même taille. Certains sont de taille 1, d'autres 2.


    Ed

  2. #2
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    Bonsoir,

    Intéresse-toi tout simplement à la fonction Split (la voir dans ton aide en ligne) qui te fais ce tableau toute seule, comme une grande.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 48
    Points : 61
    Points
    61
    Par défaut
    Bonjour


    Pour rejoindre l'avis de ucfoutu

    et au cas ou l'aide VBA ne serait pas installé sur ton poste.


    Split, fonction
    Description
    Renvoie un tableau de base zéro à une dimension contenant le nombre spécifié de sous-chaînes.
    Syntaxe
    Split(expression[, delimiter[, limit[, compare]]])


    J.L

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 8
    Points : 11
    Points
    11
    Par défaut
    Effectivement, la fonction Split a l'air d'être ce que je cherche, mais j'arrive pas à l'utiliser !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim w As String
    Dim g() As Integer
     
    w = "5 34 21 3"
     
    Split (w)
    Et après ??



    Ed

  5. #5
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    oui...

    Et si, par contre, tu veux t'amuser à réinventer la roue , voilà :

    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
    Dim a As String, sep As String
      sep = " "
      a = "3 45 2 67 98"
      a = a & sep
      Dim g() As String, i As Integer
      Do While InStr(a, sep)
        ReDim Preserve g(i)
        g(i) = Left(a, InStr(a, sep) - 1)
        a = Mid(a, InStr(a, sep) + 1)
        i = i + 1
      Loop
     
      'juste pour voir
      For i = 0 To UBound(g)
        MsgBox g(i)
      Next

  6. #6
    Membre éprouvé
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Points : 1 191
    Points
    1 191
    Par défaut
    pas besoin de ré-inventer la roue , c'est déjà dans la faq :

    http://access.developpez.com/sources...onctionSplit97

    mais c'est pour Access 97 pas Excel 07


  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 48
    Points : 61
    Points
    61
    Par défaut
    Rebonsoir


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub testSPLIT()
    w = "5 34 21 3"
    t=Split(w," ")
    MsgBox t(0)
    End Sub


    J.L

  8. #8
    Membre éprouvé
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Points : 1 191
    Points
    1 191
    Par défaut
    et tu peu même ommettre l'espace, il est utilisé par défaut pas split :


    tu dis quoi..

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 48
    Points : 61
    Points
    61
    Par défaut
    Re bonsoir


    Je dis ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub testSPLIT()
    Dim w$
    Dim i as Byte, j As Byte
    w = "5 34 21 3"
    t = Split(w)
    For i = LBound(t) To UBound(t)
    MsgBox t(i) & "* 2 = " & t(i) * 2
    Next
    End Sub
    Puis je dis merci Jacques.



    J.L

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 05/06/2013, 23h57
  2. Réponses: 1
    Dernier message: 12/04/2007, 17h54
  3. Réponses: 2
    Dernier message: 29/03/2007, 15h08
  4. le nombre d’occurrences dans une chaine de caractére
    Par adilo dans le forum Débuter avec Java
    Réponses: 7
    Dernier message: 28/06/2006, 13h24
  5. Entrée a partir d'une chaine de caractère
    Par Spartan03 dans le forum C
    Réponses: 5
    Dernier message: 18/03/2006, 20h48

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