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 :

Comment utiliser "split" avec textbox [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Invité
    Invité(e)
    Par défaut Comment utiliser "split" avec textbox
    Bonsoir,

    Je voudrais parvenir à faire à peu près la même chose pour traiter des données séparées par des tirets mais en utilisant des textboxs.

    En effet, le code ci-dessous traite des données sur des feuilles. Soit en feuille "Source" les données à traiter, en colonne A des intitulées et en colonne B des données séparées par des tirets (-). Après exécution de la macro "SeparationEnLignes", en feuille "Cible" l'intitulé est repris en colonne A autant de fois qu’il y de valeurs séparées par des tirets et en colonne B les valeurs séparées sur chaque ligne de l'intitulé.

    ex:sur la feuille Source en A1: Voiture et en B1: Peugeot-Renault-BMW
    résultat sur la feuille Cible en A1:Voiture---->en B1: Peugeot, en A2:Voiture---->en B2: Renault, en A3:Voiture---->en B3:BMW, c'est ce que j'obtiens avec ce code
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    Option Explicit
     
    Sub SeparationEnLignes()
        Dim feuilleSource As Worksheet
        Dim feuilleCible As Worksheet
        Dim iSource, iCible, i As Integer
        Dim currentA, currentB As String
        Dim currentSplit() As String
     
        Set feuilleSource = Worksheets("Source") 'A modifier, la feuille contenant les données originales
        Set feuilleCible = Worksheets("Cible") 'A modifier, la feuille où l'on veut le résultat
     
        'Initialisation des compteurs de lignes
        iSource = 1
        iCible = 1
     
        Do While feuilleSource.Cells(iSource, "A").Value <> "" 'Tant qu'il y a qq chose en colonne A
            currentA = feuilleSource.Cells(iSource, "A").Value
            currentB = feuilleSource.Cells(iSource, "B").Value
     
            'On décompose la chaine par les virgules
            currentSplit = Split(currentB, "-")
     
            'Pour chaque élément, on l'écrit dans la feuille cible
            For i = 0 To UBound(currentSplit)
                feuilleCible.Cells(iCible, "A").Value = currentA
                feuilleCible.Cells(iCible, "B").Value = LTrim(currentSplit(i)) 'En enlevant les espaces à gauche
                iCible = iCible + 1
            Next i
     
            iSource = iSource + 1
        Loop
    End Sub
    Je voudrais donc obtenir la même chose avec un userform, les données de la feuille Cible seront remplacées par TextBox1(colonne A=intitulé) et TetxBox2(colonne B=valeurs séparées par des tirets).

    En vous remerciant par avance.
    Dernière modification par cathodique ; 23/01/2015 à 00h28.

  2. #2
    Expert éminent sénior


    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
    Points : 20 038
    Points
    20 038
    Par défaut
    Bonsoir,

    et alors quel est ton problème ? qu'attends tu pour te lancer dans l'écriture du code ?

  3. #3
    Invité
    Invité(e)
    Par défaut
    Merci pour l'encouragement

  4. #4
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Tu ne sais pas encore des choses aussi élémentaires ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Textbox1.value = cells(ligne,colonne).value
    texte = textbox1.value
    tableau() = split(texte)
    for i = 1 to tableau.count
         unligne(i) =tableau(i)
    next
    Pour la suite, voir là


    P.S. tu peux te compter chanceux qu'il y ait encore du monde pour te répondre.
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    With Sheets("Cible")
            LastLig = .Columns(1).Find("").Row
            .Cells(LastLig, "A") = Me.TextBox1
            .Cells(LastLig, "B") = Split(Me.TextBox2, "-")
            LastLig = LastLig + 1
     
        End With
    C'est plutôt ceci que je voulais obtenir.

    @ clementmarcotte: merci beaucoup pour le retour et pour le lien.
    tu peux te compter chanceux qu'il y ait encore du monde pour te répondre
    La chance sourit à ceux qui n'ont n'en pas besoin. Pour les choses élémentaires, tout est relatif, je n'aspire pas à devenir un développeur chevronné. Même si je le voulais, pour le temps qui me reste je sais que je n'y parviendrai pas.

    Je me permets de partager un remède infaillible pour ceux qui pensent avoir les poumons plus oxygénés que les autres, c'est tout simplement de descendre de leur piédestal.
    Je sais pertinemment que vous êtes tous des bénévoles et tout est à votre honneur d'aider vos prochains. Mais ces derniers vous sont reconnaissants, n'est-ce pas suffisant?

    Bon, je ne vais pas m'étaler plus que ça. Je dois juste dire que j'ai connu des gens merveilleux pour leurs gentillesses, leurs compétences et surtout pour humilité et modestie. Comme Mercatog.

    J'ai parcouru pas mal de discussions et j'ai pu constater la grande différences dans les interventions de Mercatog et de Bbil et ce, malgré la fonction de ce dernier.

    Ces interventions commencent pratiquement toutes par des questions. Mais bon chacun sa méthode.

    Maintenant, si c'est un forum qui n'est réservé qu'au professionnel, alors à mon grand regret et plus aucun soucis, je ne posterai plus de discussions.

    Qu'on m'inflige une mauvaise appréciation, sachez que ça m'est complétement EQUILATERAL.

    je vous souhaite une bonne continuation.

  6. #6
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Piédestal ou pas, les règles de ce forum sont très claires



    IV-N. Lycéen, collégien, étudiant, (bref un apprenti développeur)▲

    Vous êtes les bienvenus ici pour vous former.


    Vous former, cela veut dire lire les cours et tutoriels :
    http://www.developpez.com/cours/

    et éventuellement poser vos questions en français correct si vous avez besoin d'aide, dans un seul forum, et dans le respect des règles du forum.

    Nous ne sommes pas là pour faire vos exercices.
    Entendez par là que nous serons bien évidemment tout à fait d'accord pour vous aider à résoudre votre problème, pour autant que vous fassiez vous-même des efforts.
    Postez votre question, mais proposez également un début de solution, un bout de code, etc. En aucun cas, nous ne ferons le travail à votre place.

    Merci de votre compréhension.

    [/URL]
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

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

Discussions similaires

  1. comment utiliser de l'OpenGL avec du Java ?
    Par DjiZ dans le forum OpenGL
    Réponses: 3
    Dernier message: 14/01/2004, 15h21
  2. Comment utiliser les styles XP avec Dev-C++?
    Par abraxas dans le forum Dev-C++
    Réponses: 3
    Dernier message: 05/10/2003, 19h47

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