Modification de l'ordre du contenu d'une cellule

Bonjour,

Question simple, réponse compliquée

Comment passer de ça :

polymère polysulfide¤68611-50-7¤50-65%

à :

68611-50-7 | | polymère polysulfide |65%

Sachant que :

  • ce contenu est dans une même cellule.
  • j'ai une centaine de cellule au contenu différent mais formée de la même façon.
  • le nombre de caractère varie.

Si vous avez une idée, je suis preneur

Par avance merci !

Bonjour,

Je pense qu'il serait mieux de mettre soit le contenu de ce que tu désires entre balise

ou

fournir un classeur test

pour résoudre

Bonjour jeremymacapuche

Une solution "détaillée" pour l'aspect pédagogique

capture

Re,

Comme dirait une certaine personne du forum (je ne me souviens plus de son nom)

ICI c'est un forum EXCEL et non Photoshop

Bonjour,

Si la présence du caractère 164 [ ¤ ] est régulière, il peut constituer un séparateur.

Il y aurait donc interversion des 2 premiers éléments (pas de difficulté).

Par contre le 3e serait tronqué (point à préciser et critère de troncature...)

Par contre aussi le séparateur initial serait remplacé par des séparateurs distincts (on les introduirait alors autrement, mais cela est à préciser de même que les espacements introduits ou conservés ou non).

Un échantillon de ce qui peut se présenter est nécessaire pour travailler sur pièces.

Le type de traitement souhaité est aussi à préciser : modifications directes dans les cellules, fonction personnalisée...

Bonjour à tous,

avec une fonction personnalisée.

eric

14classeur1.xlsm (15.45 Ko)

Bonjour le fil,

à eriiic

Belle fonction perso/

Il faut vraiment que je m'oblige à utiliser cette fonction "magique" Split

Salut tous...

Il faut vraiment que je m'oblige à utiliser cette fonction "magique" Split

Bah ! Ça fait partie des choses essayées une fois... et tu ne t'en passes plus !

(re)

à MFerrand

je sais mais on ne change pas les vieilles habitudes... du temps où nous n'avions que left, right, mid et pos à notre dispotion c'est promis demain je m'y colle !

L'effet "prestidigitateur" que cela procure s'harmonisera spontanément fort bien avec ton style... tu verras !

(re)

MFerrand

MFerrand a écrit :

L'effet "prestidigitateur" que cela procure s'harmonisera spontanément fort bien avec ton style... tu verras !

Merci M(aître)Ferrand donc tu aimes mon style alors

Promis dans le prochain fil où il est question de "torturage" de chaine je Split !

Merci pour tous vos apports les amis !

Eriiic, la formule est parfaite et va répondre à mon besoin, je te remercie !!

C'est compliqué à réaliser ? (a)

Non, c'est le coup de s'y mettre comme disait la girafe

Andrea73

Merci M(aître)Ferrand donc tu aimes mon style alors

En matière de style chacun a le sien, et il est légitime de penser que la préférence de chacun ira d'abord à son propre style. Si l'on fait abstraction des quelques éléments pour lesquels un choix objectif devrait s'imposer... pour l'essentiel une telle appréciation sera éminemment subjective.

Sans entrer dans les constituants d'un style qui peuvent se révéler fort divers et fort nombreux, en restant au niveau de l'impression ressentie lorsqu'on aborde un code, je peux dire qu'en effet je trouve souvent ton code agréable à lire ! Il est rare de ne pas y trouver quelque ingrédient qui sans se distinguer apporte une petite touche que je traduirais par une impression de "fleuri"...

Mais je dois tout de même ajouter que ce n'est pas le seul code que je lis volontiers parmi ceux qui me passent sous les yeux...

Bonne journée à tous.

Re à vous !

On m'en demande plus ...

Je vous joint une extraction d'un exemple de fichier sur lequel je dois travailler.

L'idée est donc de réaliser la même opération, mais sur une colonne entière de données.

La difficulté est qu'à l'intérieur d'une cellule, il y a plusieurs lignes de données ...

Mes compétences en vba ne m'ont pas permis à trouver la solution ...

Si vous pouvez m'aider, je vous en serai reconnaissant !

Jérémy

Bonjour,

même principe avec un étage de plus, plus quelques ajouts pour traiter les nouveaux cas :

Function decoupe(c As String) As String
    Dim tmp, tmp1, tmp3, tmp2 As String, i As Long
    tmp1 = Split(c, vbLf)
    For i = 0 To UBound(tmp1)
        tmp = Split(tmp1(i), "¤")
        tmp2 = tmp(0)
        tmp(0) = tmp(1) & " |"
        tmp(1) = tmp2
        If tmp(2) <> "" Then
            tmp3 = Split(Replace(Replace(tmp(2), "<", "-"), "=", "-"), "-")
            tmp(2) = tmp3(UBound(tmp3))
        End If
        decoupe = decoupe & vbLf & Join(tmp, " | ")
    Next i
    decoupe = Mid(decoupe, 2)
End Function

eric

Merci infiniment Eric !

Rechercher des sujets similaires à "modification ordre contenu"