Enlever parenthèse et petit p

Danielle Odette

XLDnaute Occasionnel
Bonjour à tous ,

Voir pièce jointe

Comment faire si cela est possible d'enlever les petits p ainsi que les chiffres entre parenthèse ainsi que les parenthèse ex (18)ou (17)ou autres (parenthèse et le chiffre)
en automatique merci d'avance cordialement Danielle
 

Pièces jointes

  • Pour enlever en automatique.xlsx
    12.1 KB · Affichages: 9

job75

XLDnaute Barbatruc
Alors voyez le fichier joint et cette macro dans le code de la feuille (clic droit sur l'onglet et Visualiser le code) :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim ubmax%, tablo, i&, s, ub%, decal%, j%
Application.ScreenUpdating = False
Application.EnableEvents = False 'désactive les évènements
With [D5].CurrentRegion.Resize(, 13) '13 colonnes, à adapter
    ubmax = .Columns.Count - 2
    .Columns(2).Resize(, ubmax + 1).ClearContents 'RAZ
    tablo = .Value 'matrice, plus rapide
    For i = 1 To UBound(tablo)
        s = Split(tablo(i, 1))
        ub = UBound(s)
        decal = 2
        For j = 0 To IIf(ub > ubmax, ubmax, ub)
            tablo(i, j + decal) = Val(s(j))
            If Left(s(j), 1) = "(" Then tablo(i, j + decal) = "": decal = decal - 1
    Next j, i
    .Value = tablo 'restitution
End With
Application.EnableEvents = True 'réactive les évènements
End Sub
Elle se déclenche quand on valide ou modifie une cellule quelconque.

A+
 

Pièces jointes

  • Pour enlever en automatique(1).xlsm
    26.9 KB · Affichages: 3
Dernière édition:

Danielle Odette

XLDnaute Occasionnel
Alors voyez le fichier joint et cette macro dans le code de la feuille (clic droit sur l'onglet et Visualiser le code) :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim ubmax%, tablo, i&, s, ub%, decal%, j%
Application.ScreenUpdating = False
Application.EnableEvents = False 'désactive les évènements
With [D5].CurrentRegion.Resize(, 13) '13 colonnes, à adapter
    ubmax = .Columns.Count - 2
    .Columns(2).Resize(, ubmax + 1).ClearContents 'RAZ
    tablo = .Value 'matrice, plus rapide
    For i = 1 To UBound(tablo)
        s = Split(tablo(i, 1))
        ub = UBound(s)
        decal = 2
        For j = 0 To IIf(ub > ubmax, ubmax, ub)
            tablo(i, j + decal) = Val(s(j))
            If tablo(i, j + decal) = 0 And Left(s(j), 1) = "(" Then tablo(i, j + decal) = "": decal = decal - 1
    Next j, i
    .Value = tablo 'restitution
End With
Application.EnableEvents = True 'réactive les évènements
End Sub
Elle se déclenche quand on valide ou modifie une cellule quelconque.

A+

Re Bonjour Job75,

Je suis nul en excel , je ne sais pas ou mettre ce code ?

Pourriez vous me le faire

Merci pour votre le temps que vous me consacrer

Cordialement

Danielle
 

job75

XLDnaute Barbatruc
Je suis nul en excel , je ne sais pas ou mettre ce code ?
J'ai pourtant été clair :
(clic droit sur l'onglet et Visualiser le code)
Bon maintenant prenez ce fichier (2), la macro est beaucoup mieux car le tableau s'adapte exactement aux résultats :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim tablo, i&, s, ub%, ubmax%, resu(), decal%, j%
Application.ScreenUpdating = False
Application.EnableEvents = False 'désactive les évènements
With [D5].CurrentRegion 'à adapter
    .Columns(2).Resize(, Columns.Count - .Column).Delete xlToLeft 'RAZ
    tablo = .Resize(, 2) 'matrice, plus rapide,au moins 2 éléments
    For i = 1 To UBound(tablo)
        s = Split(Application.Trim(tablo(i, 1))) 'Application.Trim => SUPPRESPACE
        ub = UBound(s)
        If ub > ubmax Then ubmax = ub: ReDim Preserve resu(1 To UBound(tablo), 0 To ubmax)
        decal = 0
        For j = 0 To ub
            resu(i, j + decal) = Val(s(j))
            If Left(s(j), 1) = "(" Then resu(i, j + decal) = "": decal = decal - 1
    Next j, i
    '---restitution---
    .Columns(2).Resize(, ubmax + 1) = resu
    .Columns(2).Resize(, [D5].CurrentRegion.Columns.Count - 1).Borders.Weight = xlThin 'bordures
End With
Application.EnableEvents = True 'réactive les évènements
End Sub
 

Pièces jointes

  • Pour enlever en automatique(2).xlsm
    27.1 KB · Affichages: 6
Dernière édition:

Danielle Odette

XLDnaute Occasionnel
J'ai pourtant été clair :

Bon maintenant prenez ce fichier (2), la macro est beaucoup mieux car le tableau s'adapte exactement aux résultats :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim tablo, i&, s, ub%, ubmax%, resu(), decal%, j%
Application.ScreenUpdating = False
Application.EnableEvents = False 'désactive les évènements
With [D5].CurrentRegion 'à adapter
    .Columns(2).Resize(, Columns.Count - .Column).Delete xlToLeft 'RAZ
    tablo = .Resize(, 2) 'matrice, plus rapide,au moins 2 éléments
    For i = 1 To UBound(tablo)
        s = Split(Application.Trim(tablo(i, 1))) 'Application.Trim => SUPPRESPACE
        ub = UBound(s)
        If ub > ubmax Then ubmax = ub: ReDim Preserve resu(1 To UBound(tablo), 0 To ubmax)
        decal = 0
        For j = 0 To ub
            resu(i, j + decal) = Val(s(j))
            If resu(i, j + decal) = 0 And Left(s(j), 1) = "(" Then resu(i, j + decal) = "": decal = decal - 1
    Next j, i
    '---restitution---
    .Columns(2).Resize(, ubmax + 1) = resu
    .Columns(2).Resize(, [D5].CurrentRegion.Columns.Count - 1).Borders.Weight = xlThin 'bordures
End With
Application.EnableEvents = True 'réactive les évènements
End Sub


Re bonjour job75,

Désolé mais si vous pouviez me faire le fichier pret à l'emploi car nul en excel et le code je ne sais pas quoi faire ?


merci cordialement

Danielle
 

Danielle Odette

XLDnaute Occasionnel
Panne neuronique Danielle ? Les 2 fichiers que j'ai joints sont prêts à l'emploi !!! Validez une cellule ....................

Re ,

Cela ne fonctionne pas , je sais pas comment faire "que je suis nul" ? si il y avais un bouton que je clique dessus et hop ça fonctionne cela m'arrangerais car la non

je suis désolé du désolé du dérangement

Merci de votre temps et de votre travail

cordialement Danielle
 

Discussions similaires

Statistiques des forums

Discussions
312 160
Messages
2 085 841
Membres
103 002
dernier inscrit
LERUS