Ordonner ses données une fois qu'elles ont été concaténées

Bonjour à tous,

Je cherche une fonction sur Excel, sans savoir si elle existe...

Dans mon tableur, j'ai des centaines de cellules. Dans mes cellules, j'ai des informations concaténées, que j'aimerais organiser.

Par exemple, dans une cellule j'ai : choux; tomate; courgette; autre. Dans une autre j'ai : tomate; choux; autre; courgette.
Ce sont les mêmes informations, mais elle créent des variables différentes.

Ma question est donc : comment pourrais-je harmoniser ces cellules, pour n'avoir qu'une seule variable avec ces mêmes informations ? par exemple, partout j'aurais : tomate; courgette; choux; autre.

Si quelqu'un a une solution, ce serait vraiment top !

Merci d'avance,

L.

Bonjour,

mets un bout de fichier cela permettre d'explorer certaines voies

  • on peut éclater, trier et reconcaténer
  • on peut éclater et faire une base de données (plus intéressant)
  • etc.

merci

8exemple1.xlsx (13.85 Ko)

Merci encore d'avance !

Mais à l'origine c'est un fichier csv ?

Tu peux

  1. sélectionner colonne A
  2. faire Données
  3. convertir
  4. délimité et suivant
  5. point virgule

mais après ? quel résultat souhaites-tu ?

6exemple1.xlsx (16.35 Ko)
capture d ecran 92

Merci Steelson pour ta réponse et ton aide !

Oui, à la base c'est un fichier csv, que j'aimerai formater pour ensuite réaliser une étude statistique (avec R).

Pour le résultat, j'aimerai garder le format que j'ai sur l'exemple (466 lignes, 2 colonnes : l'information clé en colonne 2). C'est cette colonne 2 que je veux réorganiser.

Dans mon exemple, on voit qu'il y a (par exemple) : "civil society; none". et ailleurs : "none ; civil society".

Quand je ferais un traitement statistique de ces données, ca ne va pas être possible. Car il s'agit de deux variables. Alors qu'à mon sens il n'y en a qu'une.

Ce que j'aimerais, c'est que toute les cellules ou il y a "civil society; none" et "none ; civil society" soient identifiques.
Donc pour l'ensemble des cellules ou il y a ces deux occurences, j'aimerai une harmonisation. Tout en gardant le format actuel.

Je pourrais le faire à la main, mais cela me prendrai des semaines...

Je ne sais pas si c'est plus clair dit comme ca ?

Bonsoir à tous,

Comme le suggère Steelson :

on peut éclater, trier et reconcaténer

et le faire via un Arraylist

klin89

Est-ce ceci que tu souhaites ? j'ai repris chacun des termes, mis dans un tableau que j'ai trié, et ensuite réinséré dans le même format.

Sub trierliste()
For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
    tbl = Split(Cells(i, 1) & ";", ";")
    QuickSort tbl
    txt = Join(tbl, ";")
    Cells(i, 2) = Mid(txt, 2, Len(txt))
Next
End Sub

Public Sub QuickSort(vArray As Variant, _
  Optional ByVal inLow As Long = -1, _
  Optional ByVal inHi As Long = -1)
  Dim pivot   As Variant
  Dim tmpSwap As Variant
  Dim tmpLow  As Long
  Dim tmpHi   As Long
  inLow = IIf(inLow = -1, LBound(vArray), inLow)
  inHi = IIf(inHi = -1, UBound(vArray), inHi)
  tmpLow = inLow
  tmpHi = inHi
  pivot = vArray((inLow + inHi) \ 2)
  While (tmpLow <= tmpHi)
     While (vArray(tmpLow) < pivot And tmpLow < inHi)
        tmpLow = tmpLow + 1
     Wend
     While (pivot < vArray(tmpHi) And tmpHi > inLow)
        tmpHi = tmpHi - 1
     Wend
     If (tmpLow <= tmpHi) Then
        tmpSwap = vArray(tmpLow)
        vArray(tmpLow) = vArray(tmpHi)
        vArray(tmpHi) = tmpSwap
        tmpLow = tmpLow + 1
        tmpHi = tmpHi - 1
     End If
  Wend
  If (inLow < tmpHi) Then QuickSort vArray, inLow, tmpHi
  If (tmpLow < inHi) Then QuickSort vArray, tmpLow, inHi
End Sub
13exemple1-1.xlsm (23.43 Ko)

Un grand merci Steelson !
C'est exactement ce que je souhaitais faire. Merci pour le temps passé : les explications, la formule et les résultats.
Cela m'aide énormément !

Bonne journée à toi :D

Rechercher des sujets similaires à "ordonner donnees fois ont ete concatenees"