[RÉSOLU] Macro retour à la ligne après chaque majuscule

Arnaudgo

XLDnaute Nouveau
Bonjour à tous et merci pour ce super forum qui m'a souvent bien dépanné.
Je créé un nouveau sujet car je suis dans l'impasse et je n'arrive pas à trouver de solution.
Voilà, j'ai une BDD produits et plusieurs colonnes dont une intitulée désignation article. Cette colonne C contient des cellules avec les caractéristiques des produits.

Une cellule donne par exemple :
PRODUIT XXX Dimension 300 x 200 cm Chanfreiné Découpe adhésive Garantie 5 ans

Ce que je voudrais, c’est qu'Excel revienne à la ligne à l'intérieur de la cellule après chaque espace suivi d’une majuscule dans la colonne C pour en gros avoir une cellule comme ça :
PRODUIT
XXX
Dimension 300 x 200 cm
Chanfreiné
Découpe adhésive
Garantie 5 ans

J’ai environ 2000 lignes dans ma BDD, je préfère avoir à enlever quelques sauts de lignes en trop plutôt que d’en ajouter énormément car là je passe mon après-midi à appuyer sur Alt+Entrée…

Cette BDD est un export d’un logiciel et est destinée à être importée dans un autre logiciel donc je n'ai pas le choix. Existe-t-il une macro qui pourrait m'aider ?

Merci d’avance !
 
Dernière édition:
G

Guest

Guest
Re : Macro retour à la ligne après chaque majuscule

Bonjour et bienvenue sur le forum,

si tu as parcouru le forum, tu auras remarqué que nous aimons bien les fichiers exemples comme base de travail.
Question: ne serait-il pas plus judicieux de séparer les différents élément en différentes colonnes?
Question: ne serait-il pas plus judicieux de traiter les données AVANT de les importer dans excel? Par l'assistant d'importation peut-être.

Bref il nous faut plus d'explication et de choses concrètes.

A+
 

Grand Chaman Excel

XLDnaute Impliqué
Re : Macro retour à la ligne après chaque majuscule

Bonjour,

Voici une proposition, utilisant les expressions régulières.
Sélectionner les cellules à modifier et exécuter la macro.

VB:
Sub SplitCell()
   Dim c As Range
   
   Application.ScreenUpdating = False

   With CreateObject("vbscript.regexp")
      .Pattern = "( )([A-Z])"
      .IgnoreCase = False
      .Global = True
      For Each c In Selection
         c.Value = .Replace(c.Value, "$1" & Chr(10) & "$2")
      Next c
   End With
   
   Application.ScreenUpdating = True
End Sub
 

sousou

XLDnaute Barbatruc
Re : Macro retour à la ligne après chaque majuscule

Bonjour à tous
ma contribution à développer
Sub transformecolonnec()
Set i = ActiveCell
ndeb = 1
ndeb2 = 1

'For Each i In ActiveSheet.Columns(3).Rows
Do
nfin = InStr(ndeb2, i, " ")
If nfin = 0 Then
nfin = Len(i)
ndeb = ndeb - 1
End If
lettre = Mid(i, ndeb2 + nfin - ndeb2 + 1, 1)
If UCase(lettre) = lettre And IsNumeric(lettre) = False Then flag = 1 Else flag = 0
If flag = 1 Then
phrase = phrase & Mid(i, ndeb, nfin - ndeb) & Chr(10)
If ndeb <> nfin Then ndeb = nfin + 1
ndeb2 = ndeb
Else
ndeb2 = nfin + 1
End If

Loop While nfin <> ndeb

i.Offset(0, 1) = phrase
'Next
End Sub
 

Arnaudgo

XLDnaute Nouveau
Re : Macro retour à la ligne après chaque majuscule

Pardon pour ma réponse tardive, j'ai laissé tombé vendredi soir et j'attendais ce matin pour pouvoir tester ça.
Un grand merci Grand Chaman Excel, ça fonctionne à merveille et ça va me faire économiser un temps fou !

Sousou, j'ai testé aussi votre macro aussi mais ça ne fonctionne pas. Merci quand même pour votre contribution.
 

Statistiques des forums

Discussions
312 215
Messages
2 086 330
Membres
103 188
dernier inscrit
evebar