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 :

mieux que la fonction split


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Août 2008
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 141
    Par défaut mieux que la fonction split
    pour l'instant j'ai un colonne du type

    "premiere partie qui varie" xv "seconde partie qui varie"
    donc j'utilise une fonction split avec un code dela forme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    For i = 1 To 39
    TB = Split(Cells(i, 2), "SM")
    Cells(i, 6) = TB
    Next i
    mais les choses se compliiquent parce que desormais le separateur n'est pas toujours xv mais wz, dune part.
    et d'auter part je voudrait aussi recuperer la seconde partie .
    est ce que qqun connaiit une fonction plus a meme de remplir cette tache?

  2. #2
    Membre éclairé
    Profil pro
    chomeur
    Inscrit en
    Août 2006
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Août 2006
    Messages : 343
    Par défaut
    juste une qestion comme ça : dans tes parties de quelle type de données s'agit elle? des caracteres ou des chiffres?

    Si ce n'est que des chiffres et le séparateurs des lettres, alors tu peux faire un parcour de la chaine de caractere, et tu regardes si c'est un numeric. Si non alors tu stockes la lettre et tu passes au caractere voisin.

    Une fois que tu as la chaine de caractere qui sépare, bien tu fait un split.
    Si tu veux le début et la fin tu fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    For i = 1 To 39
    TB = Split(Cells(i, 2), "SM")
    Cells(i, 6) = TB(0)
    Cells(i, 7) = TB(1)
    Next i

  3. #3
    Membre confirmé
    Inscrit en
    Août 2008
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 141
    Par défaut interesse
    malheuressement ce sont ce sont que des lettres.

    mais ton code pour les chiffres et lettres m interesse aussi , je saurais en faire usage ailleurs

  4. #4
    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
    Par défaut
    Bonjour,

    je ne suis pas sûr d'avoir tout bien compris ...
    Une question, donc :
    Lorsque ta chaîne comporte le séparateur xv, peut-elle également contenir le séparateur wz (et vice-versa) ?
    En d'autres termes : ta chaîne ne peut-elle contenir, de manière certaine, qu'un seul de ces deux types de séparateur (l'un excluant systématiquement l'autre) ?
    Si oui : la solution sera fort simple ...

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2007
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 491
    Par défaut
    et d'auter part je voudrait aussi recuperer la seconde partie .
    si çà peut t ' aider

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Sub g()
    Dim A, TB
    Dim Sval_cel As String
     
    Sval_cel = "452SM6696"
    TB = Split(Sval_cel,"SM") 'ce décompose en un variant type tableau
     
    For Each A In TB
        MsgBox A
    Next A
    MsgBox TB(UBound(TB))
    End Sub

  6. #6
    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
    Je reprends le code de Patbou pour répartir les données de ta cellule dans les colonnes de la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub Appel()
    Dim Separateur as string, Plage as range, Cell as range
    Dim DerLig as long, Tablo as variant, i as integer
        Separateur = "Cequetuveux"
        DerLig = Split(Worksheets("Feuil1").UsedRange.address, "$")(4)
        Set Plage = Range("A1:A" & DerLig)
        For Each Cell In Plage
            Tablo = Tableau(Cell, Separateur)
            For i = 0 to Ubbound(Tablo)
                 Cell.Offset(0, i).value = Tablo(i)
            Next
        Next
    End Sub

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Function Tableau(Cell as range, Separateur as string) as variant
    Tableau = Split(Cell, Separateur) 'décompose en un variant type tableau
    End function
    Tu peux même créer un tableau des séparateurs et ajouter une boucle sur ce tableau

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim separateur as variant
        Separateur = array("sep0", "Sep1", "Sep2", "Sep3")
        for j = 0 to Ubound(Separateur)
            For Each Cell In Plage
                Tablo = Tableau(Cell, Separateur(j))
                'etc.
    Bon après-midi

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 13/10/2005, 12h46
  2. procedure stockée et fonction "split"
    Par wehtam dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 18/07/2005, 16h21
  3. [Fortran 90] Fonction Split()
    Par gchazelle dans le forum Fortran
    Réponses: 2
    Dernier message: 02/03/2005, 10h16
  4. D7P mieux que D6P ?
    Par David dans le forum EDI
    Réponses: 5
    Dernier message: 16/06/2004, 21h15
  5. [dBase]il y a mieux que la commande sql UPDATE ?
    Par sana72 dans le forum Autres SGBD
    Réponses: 4
    Dernier message: 12/12/2002, 11h59

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