changer l'ordre des mots dans une cellule

  • Initiateur de la discussion Initiateur de la discussion timmi88
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

T

timmi88

Guest
Bonjour, bonjour

voila, je travaille actuellement sur une base de donnée de 1000 lignes, et souhaiterai effectuer l'action suivante:

sur chacune de mes lignes se trouve une suite d'opération, séparées par un ;

exemple:

ligne 1: protection, perçage, peinture, marquage,contrôle
ligne 2: peinture, marquage contrôle, protection,perçage
ligne 3: peinture, marquage, équipement, contrôle, protection, ajustage
ligne 4:.....


note1:le nombre d'opération d'une ligne à l'autre peut être différent
note2:les noms d'opérations ne sont pas exhaustifs

je souhaiterai, de façon à pouvoir les classer (grâce à un filtre par exemple, mais je me suis pas encore décidé) changer l'ordre des mots:

je m'explique:
je souhaiterai avoir par exemple, a la fin de chaque ligne, si elle contient les opérations bien sur 😀, la suite d'opération suivante: peinture, contrôle, protection

ce qui me permettrait d'obtenir
ligne1: perçage, marquage,peinture, contrôle, protection
ligne2:marquage,perçage,peinture, contrôle, protection
ligne 3:marquage, équipement, ajustage,peinture, contrôle, protection


je ne suis pas sur d'avoir été bien clair...... j'espère que c'est compréhensible
et que vous pourrez me donner un coup de main


merci par avance

timmi
 
Re : changer l'ordre des mots dans une cellule

Bonjour timmi88,

Voyez le fichier joint avec cette macro (Alt+F11) :

Code:
Sub Classer()
Dim cel As Range, s, ub As Integer, tablo(), i As Integer, txt$
Application.ScreenUpdating = False
For Each cel In Range("A1", Range("A65536").End(xlUp))
  s = Split(Replace(cel, " ", ""), ",")  'séparateur la virgule
  ub = UBound(s)
  ReDim tablo(ub + 3)
  For i = 0 To UBound(s)
    Select Case s(i)
      Case "peinture": tablo(ub + 1) = s(i)
      Case "contrôle": tablo(ub + 2) = s(i)
      Case "protection": tablo(ub + 3) = s(i)
      Case Else: tablo(i) = s(i)
    End Select
  Next
  txt = ""
  For i = 0 To ub + 3
    If tablo(i) <> "" Then txt = txt & IIf(txt = "", "", ", ") & tablo(i)
  Next
  cel.Offset(, 2) = txt 'restitution en colonne C
Next
End Sub

Tous les mots doivent être séparés par une virgule.

S'il y a des mots composés, mettre un trait d'union plutôt qu'un espace.

Edit : déclaré ub As Integer (en cas de cellule vide).

A+
 

Pièces jointes

Dernière édition:
Re : changer l'ordre des mots dans une cellule

Bonjour timmi88, le forum,

Si en outre on veut que l'espace soit, comme la virgule, considéré comme un séparateur, écrire au début :

Code:
s = Split(Replace(Replace([COLOR="Red"]LCase[/COLOR](cel), " ", "[COLOR="Red"][SIZE="3"],[/SIZE][/COLOR]"), "controle", "contr[COLOR="red"]ô[/COLOR]le"), ",") 'séparateur la virgule ou l'espace

Ce code traite les oublis de virgules, l'accent circonflexe, [Edit] et les majuscules...

A+
 

Pièces jointes

Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

A
Réponses
1
Affichages
892
Retour