pas

Laurent_C

XLDnaute Nouveau
Bonjour à tous,
J ai un tableau avec plein de mots clefs séparés par des virgules.
Comment puis-je faire pour convertir les virgules en nouvelles lignes et ainsi avoir une colonne avec un mot clef par ligne ?
Je vous joins un fichier xlsx pour vous presenter la situation sur laquelle je suis coincé

Merci beaucoup à vous
 

Pièces jointes

  • Liste-de-termes.xlsx
    25 KB · Affichages: 43

chris

XLDnaute Barbatruc
Bonjour

Si c'est ponctuel, utiliser Données convertir en précisant la virgule comme séparateur, trier la seconde colonne obtenue pour regrouper les données puis les copier coller à la fin de la 1ère colonne.

Si c'est à refaire régulièrement il faut passer par VBA.
 

ROGER2327

XLDnaute Barbatruc
Bonjour Laurent_C.

Code possible :
VB:
Sub éclater()
Dim x, j&, k&, v$(), w$(), cel As Range
  With Selection
    If .Columns.Count = 1 Then
      For Each cel In .Cells
        x = Split(CStr(cel.Value), ",")
        For j = 0 To UBound(x)
          If Trim(x(j)) <> "" Then k = k + 1: ReDim Preserve v(1 To k): v(k) = Trim(x(j))
        Next j
      Next cel
      If k > 0 Then
        ReDim w(1 To k, 0)
        For j = 1 To k: w(j, 0) = v(j): Next j
        With .Resize(k, 1)
          .Value = w
          .RemoveDuplicates Columns:=1, Header:=xlNo

'=====   Pour traduire en français lisible :   ====='

          .CheckSpelling SpellLang:=1036
          .RemoveDuplicates Columns:=1, Header:=xlNo

'==================================================='

          .Cells(1).Select
        End With
      End If
    End If
  End With
End Sub
Variante :
VB:
Sub éclater2() 'Plus rapide. Conseillé si les données sont nombreuses.
Dim x, i&, j&, k&, u(), v$(), w$()
  With Selection
    If .Columns.Count = 1 Then
      u = .Resize(.Rows.Count, 2).Value
      ReDim Preserve u(1 To UBound(u), 1 To 1)
      For i = 1 To UBound(u)
        x = Split(u(i, 1), ",")
        For j = 0 To UBound(x)
          If Trim(x(j)) <> "" Then k = k + 1: ReDim Preserve v(1 To k): v(k) = Trim(x(j))
        Next j
      Next i
      If k > 0 Then
        ReDim w(1 To k, 0)
        For j = 1 To k: w(j, 0) = v(j): Next j
        With .Resize(k, 1)
          .Value = w
          .RemoveDuplicates Columns:=1, Header:=xlNo

'=====   Pour traduire en français lisible :   ====='

          .CheckSpelling SpellLang:=1036
          .RemoveDuplicates Columns:=1, Header:=xlNo

'==================================================='

          .Cells(1).Select
        End With
      End If
    End If
  End With
End Sub

Bonne journée.

ℝOGER2327
#8407


Mercredi 18 As 144 (Saint Chambernac, pauvriseur - fête Suprême Quarte)
30 Brumaire An CCXXV, 4,6668h - rouleau
2016-W46-7T11:12:01Z
 

Pièces jointes

  • Éclater des données.xlsm
    18.5 KB · Affichages: 44

ROGER2327

XLDnaute Barbatruc
Re...

Bonjour et merci, je vais regarder cela en profondeur
Ce sera le premier fois
Je suis sur mac cela pose t il un problème, car le raccourci ctrl+m ou cmd+m ne fonctionne pas

Merci
Au temps pour moi. Je n'ai pas remarqué que cette discussion est ouverte dans la section «MAC» du forum.
Sur les machines maliques, il doit bien exister un moyen d'afficher la liste des procédures associées à un classeur et de faire exécuter l'une d'entre elles. Si oui, sélectionnez et exécutez l'une des procédures éclater ou éclater2. Sinon, je ne sais pas ...


ℝOGER2327
#8408


Mercredi 18 As 144 (Saint Chambernac, pauvriseur - fête Suprême Quarte)
30 Brumaire An CCXXV, 5,4717h - rouleau
2016-W46-7T13:07:56Z

 

ROGER2327

XLDnaute Barbatruc
Re...

Pour ROGER2327 :

Bonjour,

J'ai essayé les deux versions même en lançant par F5 dans le code ; aucune n'a donné de résultat. Pourtant, je suis sous EXCEL 2010 PC...

Cordialement
Bizarre. Je viens de rouvrir le classeur que j'ai déposé. J'ai :
  1. sélectionné F3:F9 ;
  2. pressé Ctrl C ;
  3. sélectionné I3 ;
  4. pressé Entrée ;
  5. pressé Ctrl m ;
  6. accepté les propositions du correcteur d'orthographe ;
  7. obtenu :



ℝOGER2327

#8409


Mercredi 18 As 144 (Saint Chambernac, pauvriseur - fête Suprême Quarte)
30 Brumaire An CCXXV, 5,6245h - rouleau
2016-W46-7T13:29:55Z
 

Pièces jointes

  • Capture2.PNG
    Capture2.PNG
    17.3 KB · Affichages: 137

mécano41

XLDnaute Accro
Bonjour,

Juste pour être à jour, j'ai repris mon fichier du message #6 en corrigeant quelques erreurs et oublis et en utilisant également SPLIT qui simplifie le code.

(je ne sais pas si ça fonctionne sur Mac)

Cordialement
 

Pièces jointes

  • Dégrouper2.xlsm
    21 KB · Affichages: 34

Discussions similaires

Réponses
30
Affichages
1 K
Réponses
5
Affichages
246
Réponses
5
Affichages
377
Compte Supprimé 979
C

Statistiques des forums

Discussions
312 472
Messages
2 088 712
Membres
103 930
dernier inscrit
Jibo