Séparer un code (nombre) entre parenthèses au début d’un texte

Doaf

XLDnaute Nouveau
Bonjour !

Merci d’avance pour votre aide...:)

Dans la colonne « B » j’ai différents cas de texte, comme par exemple :

Embout carré Kapsto GPN 260 Q40403
Pince support D45
Rouleau PVC havane 100X50mm (le m)
(912) Châssis CD (métallerie)
(1433328) Tuyau évacuation eau (le m)

Ce qui m’intéresse c’est donc le code (un nombre de 3 jusqu'à 7 chiffres) entre les parenthèses au début de la ligne...
Donc dans mon exemple, j’aimerai qu’uniquement le 912 et le 1433328 soient copiées dans la colonne « A »... sans que le texte d’origine change, ou change de place.

Merci bcp !!:):):)

Doaf
 

Staple1600

XLDnaute Barbatruc
Re : Séparer un code (nombre) entre parenthèses au début d’un texte

Bonsoir et bonne nuit

edit:
Par formule
Saisir en A1 (puis recopie vers le bas)
=SI(GAUCHE(B1;1)="(";STXT(B1;2;TROUVE(")";B1)-2);"")

Solution par macro (après relecture du post)
Code:
sub test_2()
Application.ScreenUpdating = False
Dim i As Long: Dim c As Range
For Each c In Range("B1:B" & [B65536].End(xlUp).Row)
If c.Value Like "(#*)" Then
c.Offset(0, -1) = Replace(Left(c.Value, InStr(c, ")") - 1), "(", vbNullString)
End If
Next
Application.ScreenUpdating = True



Voici une solution par macro

Code:
Sub test()
Application.ScreenUpdating = False
Dim i As Long
For Each c In Range("B1:B" & [B65536].End(xlUp).Row)
If c.Value Like "(#*)" Then
i = i + 1
Range("A" & i) = Replace(Left(c.Value, InStr(c, ")") - 1), "(", vbNullString)
End If
Next
Application.ScreenUpdating = True
End Sub
 
Dernière édition:

Jocelyn

XLDnaute Barbatruc
Re : Séparer un code (nombre) entre parenthèses au début d’un texte

Bonjour le Forum,
Bonjour Doaf, Staple1600,

Aprés la solution macro une solution formule :

pour une donnée en A1 :

=SUBSTITUE(GAUCHE(A1;TROUVE(")";A1)-1);"(";"")*1

Jocelyn
 

kiki29

XLDnaute Barbatruc
Re : Séparer un code (nombre) entre parenthèses au début d’un texte

Soir Bon
et une autre plus classique
Code:
Option Explicit

Sub Tst()
Dim iLastRow As Long, i As Long
Dim Pos1 As Long, Pos2 As Long
Dim Chaine As String
    Application.ScreenUpdating = False
    Columns("A:A").Clear
    iLastRow = Range("B65536").End(xlUp).Row
    For i = 1 To iLastRow
        Pos1 = InStr(Cells(i, 2), "("): Pos2 = InStr(Cells(i, 2), ")")
        If Pos1 > 0 And Pos2 > 0 Then
            Chaine = Mid(Cells(i, 2), Pos1 + 1, Pos2 - Pos1 - 1)
            If IsNumeric(Chaine) Then Cells(i, 1) = CLng(Chaine)
        End If
    Next i
    Range("C1").Select
    Application.ScreenUpdating = True
End Sub
 
Dernière édition:

Doaf

XLDnaute Nouveau
Re : Séparer un code (nombre) entre parenthèses au début d’un texte

Je suis RAVI !!!! :):):)

Staple1600, Jocelyn et kiki29,

Merci a vous, parce que j’en perdais mon sommeil !
A vrai dire, je bricole un peu, je veux dire, je me ‘débrouille’ en enregistrant les macros quand je fais en même temps les manipulations, facile donc. Et j’enlève et je rajoute des trucs, des codes que je trouve par si par la et je regarde si ca fonctionne. Rien d’extraordinaire.

Mais vous : trop fort !

Merci encore pour votre aide et votre partage du savoir faire !

:)

Doaf
 

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16