Retour à la ligne suite à un mot

Bonjour,

J'ai un chier Excel avec 10.000 lignes. Je souhaite mettre en forme la feuille pour pouvoir l'exploiter.

Voici un exemple:

mini 190415095601727343

Je souhaite qu'il y ait juste sur une ligne le format suivant: "IT PROD XXX" et renvoyer à la ligne.

Est-ce que quelqu'un pourrait m'aider?

Merci d'avance

Bonjour,

Un classeur contenant quelques données pour les essais serait le bien venu!

A+

Bonjour,

hello AlgoPlus,

Pour moi c'est très simple, il faut juste que tu adaptes la largeur de ta colonne à ce qu'excel envoie à la ligne après ton "IT PROD XXX "

Je peux déjà te dire que ton mot fait 10.5 mm (89 pixels).

N'oublies pas de sélectionner ta colonne puis cocher l'option envoyer automatiquement à la ligne.

Mes salutations.

Bonjour, merci pour la piste à travailler.

Je vais me pencher sur cette solution. Je reviens dès que j'ai réussi à le faire .

re et bonjour Mus54,

Je serais plutôt parti sur une macro qui mettrait un IT PROD XXX par ligne. Plus facile à exploiter par la suite.

En attente de quelques données représentatives.

Re,

Après utilisation de la commande "Renvoyer à la ligne automatiquement", voici ce que j'obtiens:

190415043250640224

Maintenant je souhaiterais avec ma ref "IT PROD XXX" sur 1 seule ligne et 1 seule cellule.

Actuellement j'ai 2 Refs dans une cellule.

J'ai mis le fichier en pièce jointe AlgoPlus.

Merci pour l'aide.

6td-13.xlsx (8.90 Ko)

à tester:

Sub macrOrel()
 Dim i As Long, j As Integer, x As Long, T, Ttemp, TFinal()
 T = Range("A1:A" & Range("A" & Rows.Count).End(xlUp).Row)

 For i = LBound(T) To UBound(T)
    Ttemp = Split(T(i, 1), " IT")
    For j = LBound(Ttemp) To UBound(Ttemp)
        x = x + 1
        ReDim Preserve TFinal(1 To x)
        TFinal(x) = Ttemp(j)
    Next
 Next

 Range("B1").Resize(UBound(TFinal), 1) = Application.Transpose(TFinal)  ' <= à adapter
End Sub

le résultat est "copié" en colonne B.

Pour venir "écraser" les données de la colonne A, remplacer Range("B1").Resize... par Range("A1").Resize...

A+

Bonjour AlgoPlus, merci beaucoup pour ta réponse.

J'ai testé, cela s'apparente à ce que je veux faire et c'est génial.

Cependant lorsque le retour à la ligne se fait, il me supprime le "IT" qui est renvoyé à la ligne.

Comment puis-je résoudre cela?

190416104232947938

Merci beaucoup

4td-13.xlsm (14.35 Ko)

La correction:

Sub macrOrel()
 Dim i As Long, j As Integer, x As Long, T, Ttemp, TFinal(), Temp As String
 T = Range("A1:A" & Range("A" & Rows.Count).End(xlUp).Row)

 For i = LBound(T) To UBound(T)
    Temp = Replace(T(i, 1), " IT", ",IT")
    Ttemp = Split(Temp, ",")
    For j = LBound(Ttemp) To UBound(Ttemp)
        'MsgBox Ttemp(j)
        x = x + 1
        ReDim Preserve TFinal(1 To x)
        TFinal(x) = Ttemp(j)
    Next
 Next

 Range("B1").Resize(UBound(TFinal), 1) = Application.Transpose(TFinal)  ' <= à adapter
End Sub

Une autre version qui fait la même chose sans doublon :

Sub macrOrel2()
 Dim i As Long, j As Integer, x As Long, T, Ttemp, Temp As String
 Dim Dico
 Set Dico = CreateObject("Scripting.Dictionary")
 T = Range("A1:A" & Range("A" & Rows.Count).End(xlUp).Row)

 For i = LBound(T) To UBound(T)
    Temp = Replace(T(i, 1), " IT", ",IT")
    Ttemp = Split(Temp, ",")
    For j = LBound(Ttemp) To UBound(Ttemp)
        Dico(Ttemp(j)) = ""
    Next
 Next

 Range("C1").Resize(Dico.Count, 1) = Application.Transpose(Dico.keys)  ' <= à adapter
End Sub

A+

Au TOOOOP AlgoPlus =) ,

Ta macro est P A R F A I T E <3 .

Merci beaucoup !

Sub macrOrel2()

Dim i As Long, j As Integer, x As Long, T, Ttemp, Temp As String

Dim Dico

Set Dico = CreateObject("Scripting.Dictionary")

T = Range("A1:A" & Range("A" & Rows.Count).End(xlUp).Row)

For i = LBound(T) To UBound(T)

Temp = Replace(T(i, 1), " IT", ",IT")

Ttemp = Split(Temp, ",")

For j = LBound(Ttemp) To UBound(Ttemp)

Dico(Ttemp(j)) = ""

Next

Next

Range("C1").Resize(Dico.Count, 1) = Application.Transpose(Dico.keys) ' <= à adapter

End Sub

RE, sans vouloir user de votre gentillesse, pouvez-vous s'il vous plaît me traduire chaque ligne de la macro pour comprendre chaque étape/fonction?

Ou pourrais-je sinon avoir accès à une bibliothèque me permettant de comprendre les mots de la macro?

Merci <3

Il y a l'aide incorporée à excel et, ce qui revient au même mais plus confortable, la touche F1.

Par exemple, dans le code sélectionner "Split" puis touche F1 et l'aideExcel s'ouvre pour cette fonction.

Set Dico = CreateObject("Scripting.Dictionary") ' création d'un dictionary, "sorte de tableau" qui présente l'avantage de ne pas "stocker" plusieurs valeurs identiques
T = Range("A1:A" & Range("A" & Rows.Count).End(xlUp).Row) 'on met la colonne A dans un tableau

For i = LBound(T) To UBound(T) ' du premier au dernier indice du tableau T
Temp = Replace(T(i, 1), " IT", ",IT") ' remplace " IT" par ",IT" dans l'élément du tableau et stocke dans variable Temp
Ttemp = Split(Temp, ",") ' stocke dans un tableau les élément de la variable , séparéspar une ","
For j = LBound(Ttemp) To UBound(Ttemp) ' du premier au dernier indice du tableau Ttemp
Dico(Ttemp(j)) = ""  ' stocke un élément du  tableau dans le dictionary
Next
Next

Range("C1").Resize(Dico.Count, 1) = Application.Transpose(Dico.keys) ' copie la partie clé du dictionary

c'est assez succint , notamment sur la partie dictionary où il existe plusieurs façons de l'alimenter. voir sur le net

A+

Bonjour AlgoPlus, merci beaucoup pour tes explications, ces pépites me seront précieuses à l'avenir

Rechercher des sujets similaires à "retour ligne suite mot"