Supprimé de façon automatisé du texte

Bonjour,

Je viens vers vous parce que j'ai effectué toutes les recherches nécessaire et ceux sur plusieurs jours, j'ai lu un maximum de macro (que je ne maitrise pas).

Mon problème, pour faire simple :

Dans la cellule L2 :

DID

Section

Texte

Dans la cellule L3 :

DID

Section

Texte

Dans la cellule L4 :

DID

Section

Texte

Et ceux jusqu'à la cellule L150.

Je cherche à supprimer le "DID" + "Section" et ne garder que le "texte".

Sauf que si j'utilise la fonction remplacer (sachant que DID et Section sont toujours identiques), rien n'est détecté parce que le saut de ligne fou la merde. Si je remplace que le DID, la cellule devient :

Cellule L2 :

(rien)

Section

Texte

Du coup visuellement sur mon ficher la cellule n'affiche rien mais si je clique dessus il y a bien le reste du texte (en gros le saut de ligne cache le reste).

Ce qui serait parfait c'est une macro qui supprime les 2 premiers lignes de chaque cellule de la colonne.

Bon déjà là je galère violent !!! Mais le pire reste à venir : C'est que ce fameux fichier est édité tous les jours par des copier coller de cette même colonne avec de nouvelles informations. Aujourd'hui je suis à L150 avec mes cellules, et demain je serai à L170 et après demain L200 etc etc.

Il faudrait une macro ou un système, qui permet de supprimer les 2 premières lignes de chaque cellule de la colonne L dès le copier coller enfaite. Que la personne copie son document avec les cellules composées de

DID

Section

Texte

Et que ça le colle en faisant apparaitre uniquement la dernière ligne, soit :

Texte

Sachant également que celui qui copie ne peux pas choisir de copier que le "texte" parce qu'il fait une copie général d'une 20ene de ligne en méme temps sur pas mal de colonne.

Ma vie pour une solution, je désespère. (Je vous joindrai bien le fichier en question mais pour une question de secret d'entreprise je ne peux malheureusement pas)

Cordialement,

Bonjour,

Une piste avec Split() sur la colonne L de la feuille active :

Sub Test()

    Dim Plage As Range
    Dim Cel As Range

    With ActiveSheet: Set Plage = .Range(.Cells(2, 12), .Cells(.Rows.Count, 12).End(xlUp)): End With

    For Each Cel In Plage: Cel.Value = Split(Cel.Value, Chr(10))(2): Next Cel

End Sub

bonjour,

une proposition pour les données en colonne L

Sub aargh()
    With ActiveSheet
        dl = .Cells(Rows.Count, "L").End(xlUp).Row
        .Range("L1:L" & dl).Replace "DID" & vbLf & "Section" & vbLf, ""
    End With
End Sub

Bonjour tout le monde,

et une autre pour le fun...

Private Sub Worksheet_Change(ByVal Target As Range)
'
If Target.Count > 1 Then
    Application.EnableEvents = False
    Application.ScreenUpdating = False
    iRow = Range("L" & Rows.Count).End(xlUp).Row
    For x = 1 To iRow
        sData = Cells(x, 12)
        If Left(sData, 3) = "DID" Then Cells(x, 12) = Right(sData, Len(sData) - 12)
    Next
    Application.ScreenUpdating = True
    Application.EnableEvents = True
End If
'
End Sub

A+

Vous étes sérieux lol... ça fait genre 2 jours que je cherche.

Je vois bien toutes les lignes de codes (je me demande d'ailleurs comment et d'où vous sortez tous ça) mais je ne sais pas comment exploiter ce que vous m'avez fourni...

Salut Alice,

ben... en testant ce qui te convient le mieux...

Bon amusement!

A+

Quand je parle de pas savoir exploiter les données que vous m'avez fourni je parle que j'ignore totalement si vous me parler de Macro, de split, de format de cellule, de où je dois mettre ce que vous m'avez envoyé pour m'aider.

Je ne sais pas comment utiliser les codes que vous m'avez fourni

Bonjour à tous,

J'ai l'impression qu' Alice a besoin que quelqu'un lui explique dans quel module doit être copié une macro évènementielle ...

Je cherche sur google en parallèle pour essayer de me débrouiller, mais je navigue à vue dans un milieu où je n'ai aucune connaissance...

bonjour,

il s'agit de solution via des macros.

sur le forum, cliquer sur tout selectionner puis CTRl-C

dans excel, faire alt-F11 (lance l'éditeur VBA)

dans editeur vba, choisir insérer module (double clic sur la feuille qui va bien pour la solution de Curulis)

faire CTRl-V pour coller le code

faire ALT-F11 pour revenir à excel

lancer la macro, faire ALT-F8 et choisir la macro à éxécuter

Alice,

voilà le fichier.

Le code se trouve dans le module de la Feuil1 et réagit si plusieurs cellules changent (Target.Count>1 = Nombre de cellules>1).

Copie les 2 cellules-exemples et colle-les dans "L1".

A+

3did.xlsm (15.30 Ko)

J'ai essayé ça avec les raccourcies comme expliqué.

h2so4 a écrit :

bonjour,

il s'agit de solution via des macros.

sur le forum, cliquer sur tout selectionner puis CTRl-C

dans excel, faire alt-F11 (lance l'éditeur VBA)

dans editeur vba, choisir insérer module (double clic sur la feuille qui va bien pour la solution de Curulis)

faire CTRl-V pour coller le code

faire ALT-F11 pour revenir à excel

lancer la macro, faire ALT-F8 et choisir la macro à éxécuter

Voilà ma cellule L50 (sachant que tous les autres cellules ont la même forme

--GID--

<DEC>

decontrole aiguille 4148a

presence balaste dans le controleur droit

Du coup dans la macro j'ai mis :

Sub aargh()

With ActiveSheet

dl = .Cells(Rows.Count, "L").End(xlUp).Row

.Range("L1:L" & dl).Replace "--GID--" & vbLf & "<DEC>" & vbLf, ""

End With

End Sub

Mais rien ne c'est passé apres avoir fait alt+F8.

bonjour,

mets-nous ton fichier ou un extrait de ton fichier

Oui, mais, hé, Alice, t'es sérieuse, là?

Entre DID Section Texte

et

--GID--

<DEC>

il y a comme une différence! Y a-t-il d'autres libellés?

H2SO4 a raison : un fichier, please!

A+

Bah des caractères c'est des caractères non ? Fin je pensais pas que ça changé quelques choses... Excusez moi..

Je vous envoie le fichier, effectivement, ça sera plus simple.

Bonjour,

si tu préfères par formule :

=SUBSTITUE(A2;"DID"&CAR(10)&"Section"&CAR(10);"")

à tirer vers le bas.

Ensuite sélectionner la plage, copier puis collage spécial valeur.

Tu peux supprimer l'ancienne colonne.

eric

adaptation de la macro sur base du contenu de ton fichier

Sub aargh()
    With ActiveSheet
        dl = .Cells(Rows.Count, "L").End(xlUp).Row
        .Range("L1:L" & dl).Replace "--GID--" & vbLf & "<DEC>", ""
    End With
End Sub

évolution de la formule si les 2 premières lignes peuvent changer :

=STXT(A2;CHERCHE("µ";SUBSTITUE(A2;CAR(10);"µ";2))+1;999)

J'ai donc suivit tout le procédé et ça m'a donné comme résultat :

Ça a fonctionné sur plusieurs lignes mais pas toutes.

Salut Alice,

remplacer le code dans mon fichier par celui-ci.

Private Sub Worksheet_Change(ByVal Target As Range)
'
If Target.Count > 1 Then
    Application.EnableEvents = False
    Application.ScreenUpdating = False
    iRow = Range("L" & Rows.Count).End(xlUp).Row
    For x = 2 To iRow
        If Len(Cells(x, 12)) > 1 Then
            sData = Cells(x, 12)
            iCar = IIf(Mid(sData, 9, 5) = "<DEC>", 14, 8)
            Cells(x, 12) = Right(sData, Len(sData) - iCar)
        End If
    Next
    Application.ScreenUpdating = True
    Application.EnableEvents = True
End If
'
End Sub

Je constate la présence de --RI-- après traitement : à éliminer?

Encore une fois, le code repose sur la certitude de ne rencontrer que des --GID-- et des <DEC>...

A+

Rechercher des sujets similaires à "supprime facon automatise texte"