Partage
  • Partager sur Facebook
  • Partager sur Twitter

Spliter cellules VBA

    8 mars 2019 à 10:48:02

    Bonjour,

    Pour un projet, j'ai dans un tableau excel, les cellules de C46 à C107 sous cette forme :

    texte1 [texte2]

    J'ai besoin de mettre le texte2 dans la colonne D (ligne respective) et de juste laisser le texte1 dans la cellule C.

    J'ai commencé à faire ça :

    Sub Test()
    Dim Tableau
    Dim i As Integer
        For i = 46 To 107
            Tableau = Split(Range("C" & i).Value, "[")
            Tableau = Split(Tableau(1).Value, "]")
            Range("C" & i) = Tableau(0).Value
        Next i
    End Sub
    

    Mais ça ne fonctionne pas "L'indice n'appartient pas à la sélection".

    Pourtant je pense que ce que je veux faire est vraiment simple...

    Si vous pouviez m'aider, merci beaucoup !

    -
    Edité par Yelia 8 mars 2019 à 10:48:13

    • Partager sur Facebook
    • Partager sur Twitter

    Croyez en vos rêves pour qu'ils se réalisent ;)

      8 mars 2019 à 13:40:56

      Salut,

      J'imagine que l'erreur est à la ligne 7 ? Par défaut, les tableaux commencent à 1 en VBA donc Tableau(0) n'existe pas.

      Mais même en corrigeant ça je pense que ça ne fera pas le résultat attendu.

      Est-ce que texte1 et texte2 peuvent contenir des espaces ? Sinon tu fais un split sur le caractère espace " " et tu vires le premier et dernier caractère de la variable qui contient texte2 pour enlever les crochets.

      Si il y a des espaces, c'est une bonne idée le split sur le crochet ouvrant, par contre le deuxième split écrase tout ce qu'il y a dans le tableau (donc texte1 va être perdu). Tu n'as pas besoin d'un deuxième split, enlève simplement le dernier carctère de la variable qui contient texte2.

      EDIT : et il ne faut pas mettre de .Value pour les tabelaux.

      -
      Edité par Stormweaker 8 mars 2019 à 13:41:35

      • Partager sur Facebook
      • Partager sur Twitter
        9 mars 2019 à 19:02:52

        salut,

        et comme ceci :

        sub test()

        dim ligne as integer, colonne as integer

        ligne = 47

        colonnne = 4

        while Not IsEmpty(Cells(ligne,3))

          Cells(46,colonne) = Cells(ligne,3)

          Cells(ligne,3).Clear

          ligne = ligne +1

          colonne = colonne +1

        Wend

        End Sub

        • Partager sur Facebook
        • Partager sur Twitter

        Spliter cellules VBA

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown