Excel: extraction de caracteres

Résolu/Fermé
mathraxe Messages postés 26 Date d'inscription mardi 10 août 2010 Statut Membre Dernière intervention 23 mai 2012 - 20 oct. 2010 à 08:47
mathraxe Messages postés 26 Date d'inscription mardi 10 août 2010 Statut Membre Dernière intervention 23 mai 2012 - 20 oct. 2010 à 16:32
Bonjour à tous,

Je viens a vous car j'ai 2 petit soucis

j'ai un listing de 8000 lignes avec des denominations social tel que "SPRL diapason, ASBL yatra, BVBA philips" et je dois les extraires dans une autre colone sans effacer. Les dénominations ce trouve dans la colone B et je dois mettre les (SPRL,SCRL,ASBL,BVBA,SCRL, SA, SC) dans la colone A.

Dans ce listing ce trouve aussi certaine dénomination tel que
"Ombre de la Lumière (A la)"
et j aurai voulu savoir si il existai une macro pour prendre ce qu'il ya dans la paranthese la mettre au début et supprimer les parentheses avec le contenu

j'espere qu'il existe une solution a mon probleme et que vous voudrez bien me la partager

je vous remercie d'avance

cordialement
A voir également:

5 réponses

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
20 oct. 2010 à 09:07
Bonjour,
J'avoue ne pas tout piger. D'un côté tu dis avoir des dénominations SPRL diapason, ASBL yatra, BVBA philips que tu dois extraire, ensuite tu dois mettre en col A des abréviations : et je dois mettre les (SPRL,SCRL,ASBL,BVBA,SCRL, SA, SC) dans la colone A.
Et pour finir tu parles de choses à extraire entre parenthèses... On s'y perds un peu je crois.
1- repose mieux ta question,
2- joinds un fichier exemple (en utilisant cjoint.fr par exemple) sans données confidentielles, avec ce que tu as et ce que tu veux...
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
20 oct. 2010 à 09:55
Bonjour le fofo


Non il n'existe pas de "macro" prête à l'emploi.

Voilà un exemple à adapter :

'Procédure principale
Sub Main()
Dim ws As Worksheet
Dim derlig As Long
Dim i As Long

    Set ws = Worksheets(1)
    derlig = ws.Range("B65536").End(xlUp).Row
    
    For i = 1 To derlig
        If InStr(1, ws.Range("B" & i).Value, "(") = 0 Then
            ws.Range("A" & i).Value = returnPrefixe(ws.Range("B" & i).Value)
        Else
            ws.Range("B" & i).Value = returnModif(ws.Range("B" & i).Value)
        End If
    Next i
    
End Sub

'Fonction qui retourne le préfixe 
Private Function returnPrefixe(ByVal str As String) As String
Dim mTab

    mTab = Split(str, " ")
    
    returnPrefixe = mTab(0)
    
End Function

'Fonction qui retourne le texte modifié
Private Function returnModif(ByVal str As String) As String
Dim char As String

    If InStr(str, ")") = 0 Or Right(str, 1) = "(" Then
        returnModif = ""
        Exit Function
    End If
    
    char = Mid(str, InStrRev(str, "(") + 1)
    
    char = Mid(char, 1, Len(char) - 1)
    
    returnModif = char & " " & Mid(str, 1, Len(char) + 3)

End Function


;o)
0
mathraxe Messages postés 26 Date d'inscription mardi 10 août 2010 Statut Membre Dernière intervention 23 mai 2012
20 oct. 2010 à 09:59
je reformule j ai un listing de prospects (Nom de la societé, adresse, N°,code postal,ville, etc..)

dans le Nom de la societé (colonne B) j ai des "SPRL diapason, ASBL yatra, BVBA philips" on m'a demandé de faire une colonne A et de mettre en évidence le statut de la société.

Et on m'a demandé aussi de retirer ce qui été entre parenthese dans la colonne B et de le mettre devant la dénomination pour etre plus conforme ex: auberge (l') = l'auberge

j'ai fais un printscreen pour mieux comprendre
https://www.cjoint.com/?0kuj5hCbnLd

encore merci de votre aide
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
Modifié par Polux31 le 20/10/2010 à 10:15
le tableau n'est pas conforme à ton énoncé ... tu dis "SPRL diapason, ASBL yatra, BVBA philips" et le tableau dit : "diapason SPRL, vatra ASBL etc .."

Ça fait une grosse différence dans le traitement. Tu sais combien ça peut coûter ce genre d'erreur si tu devais payer un développeur ?
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
20 oct. 2010 à 10:31
Bonjour,
@Polux31 : tu prends la suite?

@mathraxe : peux tu lister les statuts de société : SPRL, ASBL etc...
0
mathraxe Messages postés 26 Date d'inscription mardi 10 août 2010 Statut Membre Dernière intervention 23 mai 2012
20 oct. 2010 à 10:43
excuse moi polux de ne pas savoir expliquer mon probleme avec les bon mots d'ou le printscreen pour mieux vous faire comprendre

Pijaku; il y a des SPRL, SCRL, SPRLU, ASBL, BVBA, SA, SC. voila

je vous remerci de pouvoir m'aider
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
20 oct. 2010 à 12:01
@pijaku : non, j'ai déjà donné ... au suivant.

@mathraxe : ce n'est pas d'avoir su ou pas employer les bons mots mais tout simplement une mauvaise analyse du besoin qui résulte à une perte de temps inutile pour tout le monde.

Bonne continuation
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
20 oct. 2010 à 12:47
re-
N'ayant pas son talent, je me suis permis de reprendre légèrement les codes donnés par Polux31 ci-dessus. Je les ai juste adaptés à la nouvelle situation décrite par mathraxe...

Sub Main()
Dim ws As Worksheet
Dim derlig As Long
Dim i As Long
Dim NomTableau As Variant
Dim val As Variant
   
    NomTableau = Array("SPRLU", "SPRL", "SCRL", "ASBL", "BVBA", "SA", "SC")
    
    Set ws = Worksheets(1)
    derlig = ws.Range("B65536").End(xlUp).Row
    
    For i = 2 To derlig
        For Each val In NomTableau
            If ws.Range("B" & i).Value Like "*" & val & "*" Then
                ws.Range("A" & i).Value = val
                ws.Range("B" & i).Value = Replace(ws.Range("B" & i).Value, val, "")
            End If
        Next
        If InStr(1, ws.Range("B" & i).Value, "(") <> 0 Then
            ws.Range("B" & i).Value = returnModif(ws.Range("B" & i).Value)
        End If
    Next i
    
End Sub

Private Function returnModif(ByVal str As String) As String
Dim char As String

    If InStr(str, ")") = 0 Or Right(str, 1) = "(" Then
        returnModif = ""
        Exit Function
    End If
    
    char = Mid(str, InStrRev(str, "(") + 1)
    If InStr(char, " ") <> 0 Then
        char = Replace(char, " ", "")
    End If
    char = Mid(char, 1, Len(char) - 1)
    char = char & " " & Replace(str, char, "")
    char = Replace(char, "(", "")
    char = Replace(char, ")", "")
    
    returnModif = char

End Function
--
Cordialement,
-- Il n'y a rien de tel qu'une question idiote, seulement une réponse idiote. A.Einstein --
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mathraxe Messages postés 26 Date d'inscription mardi 10 août 2010 Statut Membre Dernière intervention 23 mai 2012
20 oct. 2010 à 13:29
Pijaku je dois tous simplement te dire un grand grand merci!!!

ta macro est superbe :-)

encore merci pour l aide ça fait plaisir
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
20 oct. 2010 à 13:45
Remercie plutôt Polux31, il a fait tout le boulot, je n'ai fait qu'adapter son travail à ta situation...
0
mathraxe Messages postés 26 Date d'inscription mardi 10 août 2010 Statut Membre Dernière intervention 23 mai 2012
20 oct. 2010 à 16:32
Merci a vous deux c'est du trés bon boulot :-)
0