Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

inserer virgule

  • Initiateur de la discussion Initiateur de la discussion pattie1505
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

pattie1505

XLDnaute Junior
Bonjour à tous,

J'ai dans une colonne environ 2000 adresses comme ceci:

127 RUE DU MARECHAL LECLERC (d'autres avec un ou deux numéros ex: 1 RUE OU 45 RUE etc..)

Je souhaite insérer une virgule après les numéros et en même temps passer tout au minuscule sauf la première lettre après les numéros et celles des noms propres (MARECHAL LECLERC => 127, rue Marechal Leclerc)

Pouvez-vous m'aider svp.
Ca fait 2 jours que je cherche et je ne suis pas parvenu.

Merci par avance.
 
Re : inserer virgule

Bonjour à tous,

Laissons le week end passer pour que mexcellent nous dise ce qu'il pense de la solution de job.

Sinon, Staple, ce n'est pas la réponse ou la non réponse qui doit nous motiver (sinon je crois que j'aurais quitté depuis longtemps le Forum). Je place au premier plan l'intérêt de la question et le fait de laisser sur l'énorme base que constitue le Forum une réponse qui pourra servir à d'autres.

Alors, fais-toi plaisir, fais-nous plaisir en concoctant l'application basée sur regexp (je n'ai aucune idée de ce que ça peut être).

A te (re)lire

@+
 
Re : inserer virgule

Bonsoir à tous

Tibo (bonsoir)
Une précision: je parlais simplement du fait que depuis que je fréquente XLD, j'ai vu peu de membres expérimentés du forum s'intéresser à regexp (sans vraiment comprendre le pourquoi de la chose)

Et comme il est vrai que c'est assez ardu à utiliser, j'aurais plaisir à "co-développer" avec ceux-ci des codes VBA utilisant regexp (car je ne maitrise pas la "bête" suffisamment encore pour le faire seul en un temps raisonnable)

C'est simplement ici que la baisse de motivation se situe.

Mais je vais essayer de commencer quelque chose.

job 75
Le lien en question est celui-ci
C'est d'ailleurs un fil auquel Tibo participa 😉
 
Dernière édition:
Re : inserer virgule

Bonjour à tous


Comme promis plus bas, une première esquisse imparfaite
(Help needed pour trouver le bon pattern 😉 )

Code:
Function INSVIRGULE(txt$)
Dim numero&, nv$
With CreateObject("VBScript.RegExp")
    .Pattern = "(\d+)?(rue|avenue|boulevard)?"
    numero = .Execute(txt)(0)
    nv = numero & ", "
    INSVIRGULE = nv & Application.Proper(Mid(txt, Len(nv), Len(txt)))
End With
End Function
Et comme je le disais, c'est ici qu'une aide d'un membre d'XLD serait la bienvenue car j'ai du mal à trouver le bon pattern.

En espérant que ce lien inspira des vocations à naitre 😉
Tutoriel Access © cafeine - Les Expressions Rationnelles appliquées en VBA Access - Club des décideurs et professionnels en Informatique

cafeine a d'ailleurs participé au fil que je citais dans Lien supprimé
EDITION 2 :
Un autre lien (où je me plonge régulièrement même s'il est en anglais)

PS: jusqu'ici ce ne fut pas le cas dans les autres fils où j'ai proposé des réponses utilisant regexp

EDITION
: version pour traiter la colonne A
Code:
Sub Inserer_Virgule_COLA()
Dim c As Range, numero&, nv$
With CreateObject("VBScript.RegExp")
    .Global = True
    .Pattern = "(\d+)((-|/|)\d+)?(rue|avenue|boulevard)?"
        For Each c In Range("A1", [A56536].End(xlUp))
            numero = .Execute(c.Text)(0)
            nv = numero & ", "
            [COLOR=Red]c.value = _
            nv & Application.Proper(Mid(c.Text, Len(nv),  Len(c.Text)))[/COLOR]
            [COLOR=Blue]'c.Offset(, 1) = _
            'nv & Application.Proper(Mid(c.Text, Len(nv), Len(c.Text)))[/COLOR]
[COLOR=Green]' ligne en bleue à décommenter si on veut mettre les données
'en colonne B[/COLOR], [COLOR=Green](commenter alors la ligne en rouge )[/COLOR]
        Next c
End With
End Sub
 
Dernière édition:
Re : inserer virgule

Bonjour Staple, le fil le forum,

On voit (à peu près) le principe, mais ton exemple n'est guère probant.

En effet en écrivant :

.Pattern = "(\d+)((-|/|)\d+)?(rue|avenue|boulevard)?"

on s'attend à ce que rue avenue boulevard ne soient pas des noms propres.

Ce n'est pas ce qui se passe 😉

Et puis .Execute(c.Text)(0) n'est pas du tout satisfaisant.

A+
 
Re : inserer virgule

Bonsoir à tous

Bonsoir Job75
C'est bien pour cela que je précisais plus bas

Et comme je le disais, c'est ici qu'une aide d'un membre d'XLD serait la bienvenue car j'ai du mal à trouver le bon pattern.
J'ai fait le test avec cette string "127 RUE DU MARECHAL LECLERC"
et INSVIRGULE(A1) renvoie 127 Rue Du Marechal Leclerc
Ce qui remplie cette condition 😉
Comme promis plus bas, une première esquisse imparfaite

Et comme tu peux le constater par toi-même , peu de monde (à part toi) pour se bousculer au portillon des expressions régulières 😉
 
Dernière édition:
Re : inserer virgule

Bonjour à tous,

Je n'ai pas bien compris quel était le résultat attendu, avec ce que j ai lu voici un petit truc pour débuter :
Code:
Function GENIALO(ByVal chaine2 As String)
chaine = UCase(Trim(chaine2))
Dim Reg As Object: Set Reg = CreateObject("Vbscript.RegExp")
'virgule
Reg.Pattern = "^[0-9]+[A-Z]*( BIS| TER)*"
Set Matches = Reg.Execute(chaine)
For Each Match In Matches
    numero = Match.Value
Next Match
chaine2 = Right(chaine, Len(chaine) - Len(numero))
'majuscule
chaine2 = StrConv(chaine2, vbProperCase)
If numero <> "" Then
    chaine = numero & "," & chaine2
Else
    chaine = chaine2
End If
GENIALO = chaine
End Function
 

Pièces jointes

Re : inserer virgule

Salut Staple1600,

Je ne sais pas quel est le résultat voulu, difficile de trouver un pattern 😀
J'ai utilisé un peu les Regexp sous php et SAS, y a pas mieux quand on taff sur des chaines de caracteres ! J'ai encore beaucoup a apprendre je ne les utilise pas assez souvent ....
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

T
  • Question Question
Réponses
125
Affichages
14 K
M
Réponses
12
Affichages
5 K
T
M
Réponses
3
Affichages
1 K
M
I
Réponses
10
Affichages
1 K
Ivan91
I
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…