Cherche macro plus simple

Bonjour forum,

Je cherche une macro plus efficace qu'avec l'enregistreur de macro car elle me pose souci.

voici la macro

Sub split()
Sheets("Temp").Select
    Range("B1").Select
    Selection.TextToColumns Destination:=Range("B1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
        Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _
        :="-", FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1)), _
        TrailingMinusNumbers:=True

End Sub

Merci de votre aide

Et savoir si existe une commande ou quoi pour remettre par défaut le convertisseur de colonne (tabulation).

Bonjour,

Pouvez-vous expliquer ce que vous cherchez à faire, ce sera plus simple je pense.

Bonne journée.

Je cherche a couper une cellule (B1) en 3 ou 4 avec le séparateur "-". Seulement ensuite avec la macro de l'enregistreur quand je vais pour coller du texte il me garde le séparateur avec le "-" alors je suis obligé a chaque fois de redémarrer excel pour qu'il revienne comme avant

Quelque chose comme ça ?

Dim a&, x

With ActiveSheet
    x = split(.cells(1,2),"-")
        For a = 0 to ubound(x)
            .cells(a,3) = x(a)
        Next a
End with

Ça découpe le contenu à chaque "-" et puis je boucle sur la variable x pour lister en colonne C chaque information séparément.

Je n'ai pas testé, mais je pense que ça doit être ça. A reprendre pour faire ce que vous voulez avec par contre.

J'obtiens une erreur sur la ligne split

erreur d'execution 13

incompatibilité de type

Ha, et avec ça:

Dim a&, x, b$

With ActiveSheet
b = .cells(1,2)
If b <> "" then
    x = split(b,"-")
        If ubound(x) > 0 then
        For a = 0 to ubound(x)
            .cells(a,3) = x(a)
        Next a
        End if
End if
End with

erreur de compilation

nombre d'argument incorrect ou affectation de propriété incorrect

Étrange... comment s'appelle votre macro ? (Pas Sub split() par hasard ?)

Vous pouvez essayer VBA.Split pour voir

Je suis sur un bâteau et ne peut pas tester pour le moment. Et visuellement je ne vois pas ce qui cloche dans ce code.

si j'avais une macro qui s'appelais split du coup j'ai une erreur 1004 sur la ligne

.Cells(a, 3) = x(a)

En effet, la cellule (0,3) n'existe pas... erreur de ma part.

Vous pouvez essayer ceci :

.Cells(a+1, 3) = x(a)

Cela fonctionne mieux par contre en B1 j'ai 1-2-3-4, j'aimerais en B1 1 en B2 2 B3 3 et B4 car la il me le colle en c1,c2,c3 ,c4

Il suffit de changer les coordonnées des cellules.

1 = A ; 2 = B ; 3 = C ; etc.

Donc:

.Cells(a, 2) = x(a)

ça devrait apparaître en B, à partir de B1.

du coup ça me redonne l'erreur 1003

.Cells(a, 2) = x(a)

Même souci, j'ai encore oublié d'ajouté +1 à 0, la cellule B0 n'existe pas, donc ça renvois une erreur.

.Cells(a+1, 2) = x(a)

En faite c'est toujours pas bon, cela me split de haut en bas dans la même colonne , j'aimerais de gauche a droite sur la même ligne

Du coup j'ai eu une idée , j'ai demandé a chat GPT de me trouver une macro, voici la réponse.

Voici la macro VBA pour diviser la cellule B1 en 4 cellules (B1, C1, D1 et E1) en utilisant un tiret comme séparateur:

Sub DiviserCellule()
    Dim str As String
    Dim arr() As String

    'Récupère le texte de la cellule B1 dans la feuille "Temp"
    str = Worksheets("Temp").Range("B1").Value

    'Divise le texte en utilisant un tiret comme séparateur
    arr = split(str, "-")

    'Place les résultats dans les cellules B1, C1, D1 et E1 de la feuille "Temp"
    Worksheets("Temp").Range("B1").Value = arr(0)
    Worksheets("Temp").Range("C1").Value = arr(1)
    Worksheets("Temp").Range("D1").Value = arr(2)
    Worksheets("Temp").Range("E1").Value = arr(3)

End Sub

Bonjour,

Tout dépend de ce que vous voulez.

Pour faire la séparation sur plusieurs colonnes au lieu de plusieurs lignes, il faut modifier la manière dont est lancée la boucle.
Et j'utilise +2 pour la faire démarrer à la colonne B... B1... C1... D1, etc.

Dim a&, x, b$

With ActiveSheet
b = .cells(1,2)
If b <> "" then
    x = split(b,"-")
        If ubound(x) > 0 then
        For a = 0 to ubound(x)
            .cells(1,a+2) = x(a)
        Next a
        End if
End if
End with

Bah merci beaucoup cette macro fonctionne parfaitement , par contre le chat GPT m'a bluffé je lui est demandé une macro pour importer du texte depuis un site avec chrome driver pour mettre dans mon fichier.

Rechercher des sujets similaires à "cherche macro simple"