besoin d 'aide sur un traitement de texte en code VBA

sniper2002

XLDnaute Occasionnel
Bonjour à toute et à tous
j'ai un problème que je n'arrive pas à résoudre sur le traitement du texte d'une cellule

1ér problème :

dans la colonne A : je souhaite que toutes les chaînes de caractères qui viennent se coller dans cette colonne soit sans :
Le, La, Les; L'; Un; D';Une; Des
exemple: La poste ==> poste; L'abricot==> abricot

2ème Problème :
Lorsque on saisie ou (Copier/coller) le Prénom+Nom dans la colonne F je veux qu'il distingue le prénom dans une colonne (colonne G) et le nom dans une autre (colonne H)
par défaut je considère que le Prénom précède le nom et qu'il y a un espace entre les 2

Sera t'il possible que le code porte sur la saisie et le copier/coller aussi ?

Merci beaucoup pour vos réponses
 

Pièces jointes

  • Classeur1.xls
    21 KB · Affichages: 116
  • Classeur1.xls
    21 KB · Affichages: 126
  • Classeur1.xls
    21 KB · Affichages: 114

Cousinhub

XLDnaute Barbatruc
Re : besoin d 'aide sur un traitement de texte en code VBA

Bonsoir,

essaie avec ce code :

Code:
Option Compare Text
Sub mef()
Dim Cel As Range
Articles = Array("Le ", "La ", "Les ", "L'", "Un ", "D'", "Une ", "Des ")
For Each art In Articles
    Columns("A:A").Replace What:=art, Replacement:="", LookAt:=xlPart
Next art
For Each Cel In Range("F1:F" & [F65000].End(xlUp).Row)
    pos = InStr(1, Cel.Value, " ")
    Cel.Offset(0, 1).Value = Left(Cel.Value, pos - 1)
    Cel.Offset(0, 2).Value = Right(Cel.Value, Len(Cel) - pos)
Next Cel
End Sub

Bonne soirée
 

vbacrumble

XLDnaute Accro
Re : besoin d 'aide sur un traitement de texte en code VBA

Bonsoir



Regardes ci cette solution te convient

EDITION
Houps: pardon bhbh BING AIE (et merci d'avoir réussi ou j'avais échoué )
 

Pièces jointes

  • sniper2002.zip
    16.2 KB · Affichages: 38

sniper2002

XLDnaute Occasionnel
Re : besoin d 'aide sur un traitement de texte en code VBA

tout d'abord merci pour vos réponses
juste une annomalie que j'ai constaté : sur le code de VBACRUMBLE, que je n'arrive pas à réctifier c'est que le code, supprime tout ce qui commence par : La,Le,Des.....
exemple : destinataire ==>tinataire.
mon besoin porte uniquement sur les articles : La, le, les, des; un ; une... en début de la phrase
exemple : la maison d'emilie ==> maison d'emilie
le code de BHBH supprime les articles dans toute la phrase,
exemple : la maison d'émilie ==> maison emilie
VBA j'ai essayé de modifier ton code mais je ne pige que dalle :) à ce que tu as construit
merci d'avance pour ton aide
 

sniper2002

XLDnaute Occasionnel
Re : besoin d 'aide sur un traitement de texte en code VBA

re
toujours le même probleme : exemple : destinataire==> tinataire
je n'arrive pas à limiter la seletion du champ à supprimer iniquement sur les artivles : le, la; des; .... normalement ça devrai se faire uniquement là ou il y a un espace après l'article
 

mromain

XLDnaute Barbatruc
Re : besoin d 'aide sur un traitement de texte en code VBA

bonjour sniper2002, bhbh, vbacrumble

voici une solution pour enlever les articles.

a+
 

Pièces jointes

  • Classeur1.xls
    32 KB · Affichages: 63
  • Classeur1.xls
    32 KB · Affichages: 75
  • Classeur1.xls
    32 KB · Affichages: 68

sniper2002

XLDnaute Occasionnel
Re : besoin d 'aide sur un traitement de texte en code VBA

bonjour mromain

ton exemple supprime les articles qui se situent aussi au milieu de la phrase!
exemple: une maison dans la compagne ==> maison dans compagne
mon besoin se focalise sur la suppression des articles uniquement au début des titres

en te remerciant d'avance
 

mromain

XLDnaute Barbatruc
Re : besoin d 'aide sur un traitement de texte en code VBA

re,

voici le code modifié :
Code:
Public Function Nettoyer(cellule As Range) As String
Dim tabStr, i As Integer, aEffacer As Variant, dejaEffacer As Boolean

'ajouter/enlever si nécessaire
aEffacer = Array("Le", "La", "Les", "L'", "Un", "D'", "Une", "Des")

dejaEffacer = False
tabStr = Split(Replace(cellule.Cells(1, 1), "'", " "), " ")
For i = LBound(tabStr) To UBound(tabStr)
    Nettoyer = Nettoyer & IIf(i = LBound(tabStr), vbNullString, " ") & IIf(dejaEffacer = False And Contient(CStr(tabStr(i)), aEffacer), vbNullString, tabStr(i))
    If Contient(CStr(tabStr(i)), aEffacer) Then dejaEffacer = True
Next i
End Function



Private Function Contient(mot As String, aEffacer As Variant) As Boolean
Dim i As Integer
Contient = False
For i = LBound(aEffacer) To UBound(aEffacer)
    If UCase(Replace(aEffacer(i), "'", vbNullString)) = UCase(mot) Then Contient = True
Next i
End Function

a+
 

Discussions similaires

Réponses
22
Affichages
764

Statistiques des forums

Discussions
312 199
Messages
2 086 161
Membres
103 148
dernier inscrit
lulu56