Supprimer des caractères et réorganiser en colonne

Bonjour,

J'ai pas mal de tableaux avec une succession de caractères (chiffre, lettres) et j'ai besoin d'en extraire que 2 parties... J'aimerais si possible éliminer les parties non d'intérêt et copier les 2 segments iportant pour moi dans 2 colonnes. Quelqu'un peut-il me conseiller sur la marche à suivre ???

Voici mon fichier en pj, avec quelques exemples du résultat que je souhaiterais obtenir en Feuil2.

Merci beaucoup,

Amicalement

24forum-v002.zip (7.38 Ko)

Bonsoir,

Une solution par formules.

Amicalement

30pour-walden.zip (9.62 Ko)

Bonsoir haonv,

merci beaucoup, par contre contre je m'aperçois qu'à nouveau je n'ai pas été claire dans mon explication... Désolée, en fait, ce sont les caractère en rouge que j'aimerais supprimer et j'aimerais conserver ceux en noir. Encore toutes mes excuses pour ce manque de clarté...

Bonne soirée,

Amicalement

re,

Désolé.

Mais c'est moi qui ait lu trop vite ta question.

Je regarde de nouveau

A+


Re,

Peut-être comme ceci .

Amicalement

20pour-walden-bis.zip (11.32 Ko)

Bonsoir à tous,

En VBA, avec un Split

résultat en colonnes G:H

Sub Separe()
Dim Lg%, i%, x
    Application.ScreenUpdating = False
    Lg = Range("a" & Rows.Count).End(xlUp).Row

    For i = 1 To Lg
        If Not IsEmpty(Cells(i, "a")) Then
            x = Split(Cells(i, "a"), ",")
            Cells(i, "g") = x(UBound(x) - 3) & "." & x(UBound(x) - 2)
            Cells(i, "h") = x(UBound(x))
        End If
    Next i
        Range("g1:g" & Lg).NumberFormat = "0.000"
End Sub

Amicalement

Claude

édit: mettre les variables Lg et i en As Long, comme ceci

Sub Separe()
Dim Lg&, i&, x
22walden-split.zip (17.84 Ko)

Bonsoir à vous 2,

un immense merci à tous les 2, les 2 méthodes fonctionnent parfaitement !!

Pourrais-je abuser et vous demander quelques explications sur le code (@dubois), les formules (@ haonv) ??

Merci encore,

Bonne soirée,

Amicalement

re,

Une formule décortiquée.

Amicalement

19pour-walden-bis.zip (23.23 Ko)

re,

Tentative d'explication du "Split"

on sépare la chaine de caractères par: (ici, les virgules)

x = Split(Cells(i, "a"),",")

x(0) => est la première chaine

x(1) => est la deuxième chaine, x(3) etc...

x(UBound(x)) => est la dernière chaine

dans notre cas, les 1ères ne nous intéressent pas

l'avant-dernière ne nous intéresse pas non plus (pas demandée x(UBound(x) - 1))

x(UBound(x) - 2) => est celle d'avant

x(UBound(x) - 3) => est celle encore d'avant

pour avoir le chiffre avec sa virgule, on concatène x(UBound(x) - 3) et virgule et x(UBound(x) - 2)

en colonne G

Cells(i, "g") = x(UBound(x) - 3) & "." & x(UBound(x) - 2)

et en colonne H

Cells(i, "h") = x(UBound(x))

J'ai fait une petite macro "Démo" pour illustrer mes propos

Claude

19walden-split-2.zip (23.25 Ko)

MERCI beaucoup à vous 2, haonv et dubois !

J'abuse à nouveau, je pensais trouver facilement mais non...

J'ai une chaine de lettres sans espace (DILLINSTGNLIAPRGYFKIRSGKSSIMRSDAPIGKCNSECITPNGSIPNDKPFQNVNRITYGACPRYVKQNTLKLATGMRNVPEKQTRGIFGAIAGFIENGWEGMVDGWYGFRHQNSEG), j'aimerais pouvoir la découper en segments de 10, segments séparés par un espace. J'ai essayé avec stxt, mais je ne parviens pas à l'appliquer sur l'ensemble de ma chaine.

Qui peut m'aider ?

Merci,

Bonne journée,

Bonjour,

çà a l'air d'être un autre sujet,

ouvre un nouveau poste, afin de ne pas embrouiller celui-ci.

Amicalement

Claude

Bonsoir dubois,

Dernière question et je clos le sujet, j'aurais aimé séparer les chaines "SSIMR(1*Oxidation(M))" en "SSIMR" et 1*Oxidation(M)" (voir fichier en pj). J'ai donc essayé de m'inspirer de ton code...:

 For i = 7 To Lg
        If Not IsEmpty(Cells(i, "h")) Then
            y = Split(Cells(i, "h"), "(")
            Cells(i, "k") = y(UBound(x) - 1)
            Cells(i, "l") = y(UBound(x))
        End If
    Next i

Mais ce n'est pas brillant...

Bonne soirée

15walden-split.zip (24.19 Ko)

Bonsoir,

Tu t'es pas trop mal débrouiller,

dans ce cas j'écrirais

        If Not IsEmpty(Cells(i, "h")) Then
            y = Split(Cells(i, "h"), "(")

            Cells(i, "k") = y(0)        '1er bout de chaine
                On Error Resume Next    'si chaine unique, déclenche erreur à y(1)
            Cells(i, "L") = y(1)
            Cells(i, "m") = y(2)        'facultatif
                On Error GoTo 0         'remet le contrôle des erreurs
        End If

tu n'est pas obligé de faire une 2ème boucle

Bonne soirée

Claude

17walden-split-3.zip (19.06 Ko)

Bonjour dubois,

Merci beaucoup d'avoir corrigé mes erreurs ! C'est parfait !

Bonne journée,

Amicalement

Bonjour à tous,

Je me vois forcé de ré-ouvrir ce post... Le fichier fonctionne parfaitement mais j'ai une contrainte supplémentaire... Tout est expliqué dans le fichier joint !

Dans certains cas, j'ai:

,,79,[222-227],794.390,0,MCNILK(1*Carbamidomethyl(C),1*Oxidation(M))

et j'aimerais obtenir dans les colonnes a, b, et c:

794.390 MCNILK 1*Carbamidomethyl(C),1*Oxidation(M)

Quelqu'un a-t-il une idée de comment je pourrais faire ?

Merci,

Bonne journée,

Amicalement

17forum-v001xls.zip (25.67 Ko)

Bonjour,

Envoie un fichier avec le VBA déprotégé,

et quelques lignes avec résultats attendus.

Amicalement

Claude

Bonjour dubois,

Désolé... Voici le fichier mis à jour !

Encore merci,

Amicalement

14forum-v001xls.zip (26.18 Ko)

Bonjour,

Vraiment tiré par les cheveux,

tu peux suivre en pas à pas, à partir de la feuille 2

à tester , en attendant mieux !

édit: fichier modifié (manquait 1 ligne de code)

Claude

15walden-split5.zip (22.58 Ko)

Bonjour dubois et MERCI !

Puis-je abuser et te demander comment faire pour que ces données soient encadrées afin d'améliorer la lisibilité ?

Merci,

Bonne journée,

Amicalement

Bonjour,

Tu rajoute à la fin

        With .Range("a1:c" & Lg)
            .Borders(xlEdgeLeft).Weight = xlMedium
            .Borders(xlEdgeTop).Weight = xlMedium
            .Borders(xlEdgeBottom).Weight = xlMedium
            .Borders(xlEdgeRight).Weight = xlMedium
            .Borders(xlInsideVertical).Weight = xlThin
            .Borders(xlInsideHorizontal).Weight = xlThin
        End With
           .Activate

PS: tu supprime tes messages en triple

Claude

Bonjour dubois, le forum,

Désolé du délai de ma réponse mais j'avais besoin de temps pour tester le fichier avant de répondre. Je suis confronté à un nouveau problème... comme tu l'as indiqué dans la macro, ce n'est pas toujours "1*", mais ça peut être "2*", "3*"... Je ne sais absolument pas comment faire pour rendre ce chiffre variable...

Est-ce possible ??

Désolé de vous ennuyer encore avec cette demande...

Bonne journée,

Amicalement

14forum-v001xls.zip (23.22 Ko)
Rechercher des sujets similaires à "supprimer caracteres reorganiser colonne"