Décortiquage et manipulation

Le
rthompson
Bonjour à toutes et tous

Et voici un petit casse-tête pour vous

Dans ma colonne A j'ai une addresse de format irrégulier
Et je devrais pour eb extraire les parties pour en faire une liste plus
constante

Et comme un petit dessin faut mieux qu'un long discours
je vous ai mis une petite sélection en pièce jointe

Les questions sont (entre-autres)
y a-t-il une astuce pour trouver dans une cellule les chiffres
et les extraire puis les mettre dans une autre colonne?

Peut-on (et là je sais que c'est possible) retirer tout ce qui suit une
chaîne définie
Par exemple ce qui suit ZI doit aller ailleur

Et puis j'ai oublie comment faire pour que le premier charactère deviennent
une majescule
Mais cela je dois pouvoir le retrouver tout seul

J'ai une liste de plus de 10.000 lignes à ré-arranger pour demain ;-((((((

A bientôt

Rex

http://www.cijoint.fr/cjlink.php?file=cj200807/cijgKSw3lp.xls
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 3
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Daniel.C
Le #16400131
Bonjour.
En suppposant que les nombres soient toujours en tête.
En A1 : 100 aaa ZI www
Pour extraire le nombre :
=CNUM(GAUCHE(A1;TROUVE(" ";A1)-1))
pour extraire la partie centrale :
=STXT(A1;TROUVE(" ";A1)+1;TROUVE("ZI";A1)-TROUVE(" ";A1)-2)
Pour extraire la chaîne se trouvant après ZI :
=STXT(A1;TROUVE("ZI";A1)+3;9^9)
Cordialement.
Daniel
"rthompson" news:

Bonjour à toutes et tous

Et voici un petit casse-tête pour vous

Dans ma colonne A j'ai une addresse de format irrégulier
Et je devrais pour eb extraire les parties pour en faire une liste plus
constante

Et comme un petit dessin faut mieux qu'un long discours
je vous ai mis une petite sélection en pièce jointe

Les questions sont (entre-autres)
y a-t-il une astuce pour trouver dans une cellule les chiffres
et les extraire puis les mettre dans une autre colonne?

Peut-on (et là je sais que c'est possible) retirer tout ce qui suit une
chaîne définie
Par exemple ce qui suit ZI doit aller ailleur

Et puis j'ai oublie comment faire pour que le premier charactère
deviennent une majescule
Mais cela je dois pouvoir le retrouver tout seul

J'ai une liste de plus de 10.000 lignes à ré-arranger pour demain ;-((((((

A bientôt

Rex

http://www.cijoint.fr/cjlink.php?file=cj200807/cijgKSw3lp.xls



rthompson
Le #16400631
Bonjour et merci de t'intéresser à mon souci

Malheureusement ce n'est pas le cas

Si tu as le temps de jeter un coup d'oeil sur le fichier joint
tu verras que c'est une véritable mélasse

Il s'agit de fichiers récupérer de Filemaker par quelqu'un qui a quitter la
boîte

Le fichier Filemaker a depuis été détruit (virus)

Et on me demande de récupérer les morceaux
Pour la plupart des colonnes je suis arrivé à un résultat

Mais ici je bloque

A moins de procéder par étapes
Passer comme si les chiffres étaient devant
Puis repasser comme si ils étaient derrière

Et puis voire ce que cela donne

Merci et à bientôt

Rex




"Daniel.C"
Bonjour.
En suppposant que les nombres soient toujours en tête.
En A1 : 100 aaa ZI www
Pour extraire le nombre :
=CNUM(GAUCHE(A1;TROUVE(" ";A1)-1))
pour extraire la partie centrale :
=STXT(A1;TROUVE(" ";A1)+1;TROUVE("ZI";A1)-TROUVE(" ";A1)-2)
Pour extraire la chaîne se trouvant après ZI :
=STXT(A1;TROUVE("ZI";A1)+3;9^9)
Cordialement.
Daniel
"rthompson" news:

Bonjour à toutes et tous

Et voici un petit casse-tête pour vous

Dans ma colonne A j'ai une addresse de format irrégulier
Et je devrais pour eb extraire les parties pour en faire une liste plus
constante

Et comme un petit dessin faut mieux qu'un long discours
je vous ai mis une petite sélection en pièce jointe

Les questions sont (entre-autres)
y a-t-il une astuce pour trouver dans une cellule les chiffres
et les extraire puis les mettre dans une autre colonne?

Peut-on (et là je sais que c'est possible) retirer tout ce qui suit une
chaîne définie
Par exemple ce qui suit ZI doit aller ailleur

Et puis j'ai oublie comment faire pour que le premier charactère
deviennent une majescule
Mais cela je dois pouvoir le retrouver tout seul

J'ai une liste de plus de 10.000 lignes à ré-arranger pour demain
;-((((((

A bientôt

Rex

http://www.cijoint.fr/cjlink.php?file=cj200807/cijgKSw3lp.xls







Modeste
Le #16400621
Bonsour® Daniel.C avec ferveur ;o))) vous nous disiez :

En suppposant que les nombres soient toujours en tête.
En A1 : 100 aaa ZI www
Pour extraire le nombre :
=CNUM(GAUCHE(A1;TROUVE(" ";A1)-1))
pour extraire la partie centrale :
=STXT(A1;TROUVE(" ";A1)+1;TROUVE("ZI";A1)-TROUVE(" ";A1)-2)
Pour extraire la chaîne se trouvant après ZI :
=STXT(A1;TROUVE("ZI";A1)+3;9^9)



:-(
pas si simple que cela ...
selon l'exemple fourni par T.Rex !!!!

comment differencier /isoler :
ZI Rennes Sud-Est (ZI Rennes Sud-Est - 10 rue du Breil) (ZUP ZAC etc...)
BP 93035 (Rue de la Halte BP 93035) ( Cedex Cidex etc...)
CP 7289 (Pont Bessières, 3 CP 7289)
ces 2 derniers incorporent de plus un saut de ligne

les adresses dont le numéro de voie est à la fin (Rue Despourrins, 6-8) de celles ou il est au début (99, rue de l'Abbé Groult)
les adresses ou il n'y a pas de séparateur commun (89 av. Charles de Gaulle)
ou il n'y a pas de numero de voie (Mas de Grille)
ou les numéro de voie sont composites ( 17-21 , 22 ter)
les noms de voie numérique (rue du 11 novembre 1918)

une solution possible serait de faire un tri des toutes ces adresses
- les regrouper par type de libellé
- séparer dans des feuilles séparées chaque type pour y appliquer un données > convertir : adéquat
- un bonne petites dizaines de procs distinctes
- pas mal de manips à la main (inversions, remise en place de colonne)
- certainement pas mal de controle et correction aprés coup
- puis remettre tout en commun...
;o)))


:-(
mais je ne vois pas de procédure simple et universelle

Tu vois Rex, pour faire un parallele avec le suivi de commande (on avait oublié le conditionnement ;o))).
Ici c'est la collectage correct des adresses qui conditionne tout ce qui suit...
;o)))

--
@+
;o)))
Modeste
Le #16400741
Bonsour® rthompson avec ferveur ;o))) vous nous disiez :

Malheureusement ce n'est pas le cas
A moins de procéder par étapes
Passer comme si les chiffres étaient devant
Puis repasser comme si ils étaient derrière
Et puis voire ce que cela donne



c'est l'art de l'analyse : décomposer en taches élémentaires
puis synthétiser l'ensemble

l'amateur est en passe de devenir Maître !!!
;o)))


--
@+
;o)))
rthompson
Le #16400731
Oui

Mais le maître se plante cette fois-ci LAMENTABLEMENT

Et il prie, espère, supplie et tout le tointoin
qu'une âme charitable viennent à son secours

Je viens d'essayer les bouts de formules de Daniel sans trop de bonheur

Alors si le Maître veut bien...........

L'apprenti est impatient d'apprendre (ce qui est sa fonction première)

A bientôt

Rex


"Modeste"
Bonsour® rthompson avec ferveur ;o))) vous nous disiez :

Malheureusement ce n'est pas le cas
A moins de procéder par étapes
Passer comme si les chiffres étaient devant
Puis repasser comme si ils étaient derrière
Et puis voire ce que cela donne



c'est l'art de l'analyse : décomposer en taches élémentaires
puis synthétiser l'ensemble

l'amateur est en passe de devenir Maître !!!
;o)))


--
@+
;o)))
rthompson
Le #16400871
Encore une fois

Il s'agit d'un "Cadeau" d'une personne ayant quitté la société

Dans Filemaker, il n'avait rien de spécifique pour les addresse et chacun y
mettait ce qu'il voulait

Maintenant que je suis parvenu à les convaincre d'utilser Act (no pub
please)
et que nous mettons en place une structure et des formats spécifiques
cela devrait aller beaucoup mieux
En ce qui concerne les anciennes entrées, la réaction est simple

Oh, that's not a problem, just ask Rex to sort things out


Donc voilà l'apprenti dans la cadoue

Parce que je te signale, que cette colonne n'en est qu'une
J'en ai une "Floppée" d'autre à régler
Et j'avance pas mal

Mais ici, je coince totalement
Et je me vois mal en rectifier environ 10.000 à la main

A bientôt

Rex




"Modeste" %
Bonsour® Daniel.C avec ferveur ;o))) vous nous disiez :

En suppposant que les nombres soient toujours en tête.
En A1 : 100 aaa ZI www
Pour extraire le nombre :
=CNUM(GAUCHE(A1;TROUVE(" ";A1)-1))
pour extraire la partie centrale :
=STXT(A1;TROUVE(" ";A1)+1;TROUVE("ZI";A1)-TROUVE(" ";A1)-2)
Pour extraire la chaîne se trouvant après ZI :
=STXT(A1;TROUVE("ZI";A1)+3;9^9)



:-(
pas si simple que cela ...
selon l'exemple fourni par T.Rex !!!!

comment differencier /isoler :
ZI Rennes Sud-Est (ZI Rennes Sud-Est - 10 rue du Breil) (ZUP ZAC
etc...)
BP 93035 (Rue de la Halte BP 93035) ( Cedex Cidex etc...)
CP 7289 (Pont Bessières, 3 CP 7289)
ces 2 derniers incorporent de plus un saut de ligne

les adresses dont le numéro de voie est à la fin (Rue Despourrins, 6-8) de
celles ou il est au début (99, rue de l'Abbé Groult)
les adresses ou il n'y a pas de séparateur commun (89 av. Charles de Gaulle)
ou il n'y a pas de numero de voie (Mas de Grille)
ou les numéro de voie sont composites ( 17-21 , 22 ter)
les noms de voie numérique (rue du 11 novembre 1918)

une solution possible serait de faire un tri des toutes ces adresses
- les regrouper par type de libellé
- séparer dans des feuilles séparées chaque type pour y appliquer un données
> convertir : adéquat
- un bonne petites dizaines de procs distinctes
- pas mal de manips à la main (inversions, remise en place de colonne)
- certainement pas mal de controle et correction aprés coup
- puis remettre tout en commun...
;o)))


:-(
mais je ne vois pas de procédure simple et universelle

Tu vois Rex, pour faire un parallele avec le suivi de commande (on avait
oublié le conditionnement ;o))).
Ici c'est la collectage correct des adresses qui conditionne tout ce qui
suit...
;o)))

--
@+
;o)))
Daniel.C
Le #16401591
Pour dégrossir le problème, voici une macro qui lit les adresses en colonne
A, et ventile la rue en colonne B et les numéros en colonne C. Les cellules
non traitées sont coloriées en jaune. Elle n'est pas infaillible, mais, bon,
c'est toujours autant de traité.

Sub test()
Dim c As Range, Adr, txt, rue() As String
Columns.NumberFormat = "@"
For Each c In Range([A3], [A65536].End(xlUp))
Adr = Split(Replace(c, ",", ""))
If IsNumeric(Replace(Adr(0), "-", "")) Then
c.Offset(, 2) = CStr(Adr(0))
ReDim rue(UBound(Adr) - 1)
For i = 1 To UBound(Adr)
rue(i - 1) = Adr(i)
Next i
c.Offset(, 1) = Join(rue, " ")
ElseIf IsNumeric(Replace(Adr(UBound(Adr)), "-", "")) Then
c.Offset(, 2) = Format(Adr(UBound(Adr)), "@")
ReDim rue(UBound(Adr) - 1)
For i = 0 To UBound(Adr) - 1
rue(i) = Adr(i)
Next i
c.Offset(, 1) = Join(rue, " ")
Else
c.Interior.ColorIndex = 6
End If
Next c
End Sub

Daniel
"rthompson" news:
Encore une fois

Il s'agit d'un "Cadeau" d'une personne ayant quitté la société

Dans Filemaker, il n'avait rien de spécifique pour les addresse et chacun
y mettait ce qu'il voulait

Maintenant que je suis parvenu à les convaincre d'utilser Act (no pub
please)
et que nous mettons en place une structure et des formats spécifiques
cela devrait aller beaucoup mieux
En ce qui concerne les anciennes entrées, la réaction est simple

Oh, that's not a problem, just ask Rex to sort things out


Donc voilà l'apprenti dans la cadoue

Parce que je te signale, que cette colonne n'en est qu'une
J'en ai une "Floppée" d'autre à régler
Et j'avance pas mal

Mais ici, je coince totalement
Et je me vois mal en rectifier environ 10.000 à la main

A bientôt

Rex




"Modeste" %
Bonsour® Daniel.C avec ferveur ;o))) vous nous disiez :

En suppposant que les nombres soient toujours en tête.
En A1 : 100 aaa ZI www
Pour extraire le nombre :
=CNUM(GAUCHE(A1;TROUVE(" ";A1)-1))
pour extraire la partie centrale :
=STXT(A1;TROUVE(" ";A1)+1;TROUVE("ZI";A1)-TROUVE(" ";A1)-2)
Pour extraire la chaîne se trouvant après ZI :
=STXT(A1;TROUVE("ZI";A1)+3;9^9)



:-(
pas si simple que cela ...
selon l'exemple fourni par T.Rex !!!!

comment differencier /isoler :
ZI Rennes Sud-Est (ZI Rennes Sud-Est - 10 rue du Breil) (ZUP ZAC
etc...)
BP 93035 (Rue de la Halte BP 93035) ( Cedex Cidex etc...)
CP 7289 (Pont Bessières, 3 CP 7289)
ces 2 derniers incorporent de plus un saut de ligne

les adresses dont le numéro de voie est à la fin (Rue Despourrins, 6-8) de
celles ou il est au début (99, rue de l'Abbé Groult)
les adresses ou il n'y a pas de séparateur commun (89 av. Charles de
Gaulle)
ou il n'y a pas de numero de voie (Mas de Grille)
ou les numéro de voie sont composites ( 17-21 , 22 ter)
les noms de voie numérique (rue du 11 novembre 1918)

une solution possible serait de faire un tri des toutes ces adresses
- les regrouper par type de libellé
- séparer dans des feuilles séparées chaque type pour y appliquer un
données
> convertir : adéquat
- un bonne petites dizaines de procs distinctes
- pas mal de manips à la main (inversions, remise en place de colonne)
- certainement pas mal de controle et correction aprés coup
- puis remettre tout en commun...
;o)))


:-(
mais je ne vois pas de procédure simple et universelle

Tu vois Rex, pour faire un parallele avec le suivi de commande (on avait
oublié le conditionnement ;o))).
Ici c'est la collectage correct des adresses qui conditionne tout ce qui
suit...
;o)))

--
@+
;o)))




laurent.daures
Le #16401851
Bonjour,
Tu peux donc copier la colonne d'adresses dans une autre feuille COLONNE A
et la travailler ainsi :

Pour te faciliter la tâche, voici une macro qui te fait le travail
(colle la colonne adresses dans une AUTRE FEUILLE
s'il te plaît sinon, les données converties vont te mettre le bazar dans ton
tableau)

lance d'abord la première (Caractères_spéciaux()
ensuite, la deuxième (inverser_colonnes)

'*************
Sub Caractères_spéciaux()
'enlève les retour charriot (chr10)
For Each cell In Range("a1:a" & _
Range("a65536").End(xlUp).Row)
On Error Resume Next
cell.Select
cell.Replace What:=Chr(10), Replacement:=" ", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:úlse, SearchFormat:úlse, _
ReplaceFormat:úlse
Next
inverser_colonnes
NOMBRES
End Sub
'*************
Sub CONVERTIR()
'coller les adresses dans la colonne A
Columns(1).Select
'première macro
Selection.TextToColumns Destination:=Range("A1"), _
DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=True, _
Tab:=True, _
Semicolon:úlse, Comma:=True, _
Space:úlse, Other:úlse, _
FieldInfo _
:=Array(Array(1, 1), Array(2, 1)), _
TrailingMinusNumbers:=True
inverser_colonnes
NOMBRES
End Sub
'*************
Sub inverser_colonnes()
'deuxième macro
For Each cell In Range("a1:a" & Range _
("a65536").End(xlUp).Row)
If IsNumeric(cell) Then
cell.Offset(0, 1).Cut
cell.Insert Shift:=xlToRight
End If
Next
End Sub
'*************
Sub NOMBRES()
'3e macro
For Each cell In Range("a1:a" & _
Range("a65536").End(xlUp).Row)
For i = 4 To 1 Step (-1)
If IsNumeric(Left(cell, i)) Then
cell.Offset(0, 1) = Left(cell, i)
cell.Value = Right(cell, Len(cell) - i)
End If
If IsNumeric(Right(cell, i)) Then
cell.Offset(0, 1) = Right(cell, i)
cell.Value = Left(cell, Len(cell) - i)
End If
Next
Next
End Sub

normalement, avec ça tu as déjà un gros travail d'achevé, au moins 90% des
cas

tu as dans la colonne A les adresses sans les numéros au début et à la fin,
et dans la colonne B tous les numéros qui étaient au début ou à la fin des
adresses.
Attention, une vérification est quand même nécessaire, pour le cas par
exemple s'une BP
Pour les ZI, il y a trop de traits d'union dans la colonne, impossible de
délimiter avec ce caractère dans convertir,
par exemple ZI Rennes Sud-Est - 10 rue du Breil,
il y a là un trait d'union au milieu de Sud-Est et juste après.
Pas facile à indiquer tout ça.
cependant, en faisant CTRL F rechercher "ZI", tu tombes sur
toutes les cellules contenant ce mot, un simple couper coller te tirera
d'affaire.
pour BP, même chose;-))

Bon courage !
Amicalement
Siesting Hoax
"rthompson" news:
Encore une fois

Il s'agit d'un "Cadeau" d'une personne ayant quitté la société

Dans Filemaker, il n'avait rien de spécifique pour les addresse et chacun
y mettait ce qu'il voulait

Maintenant que je suis parvenu à les convaincre d'utilser Act (no pub
please)
et que nous mettons en place une structure et des formats spécifiques
cela devrait aller beaucoup mieux
En ce qui concerne les anciennes entrées, la réaction est simple

Oh, that's not a problem, just ask Rex to sort things out


Donc voilà l'apprenti dans la cadoue

Parce que je te signale, que cette colonne n'en est qu'une
J'en ai une "Floppée" d'autre à régler
Et j'avance pas mal

Mais ici, je coince totalement
Et je me vois mal en rectifier environ 10.000 à la main

A bientôt

Rex




"Modeste" %
Bonsour® Daniel.C avec ferveur ;o))) vous nous disiez :

En suppposant que les nombres soient toujours en tête.
En A1 : 100 aaa ZI www
Pour extraire le nombre :
=CNUM(GAUCHE(A1;TROUVE(" ";A1)-1))
pour extraire la partie centrale :
=STXT(A1;TROUVE(" ";A1)+1;TROUVE("ZI";A1)-TROUVE(" ";A1)-2)
Pour extraire la chaîne se trouvant après ZI :
=STXT(A1;TROUVE("ZI";A1)+3;9^9)



:-(
pas si simple que cela ...
selon l'exemple fourni par T.Rex !!!!

comment differencier /isoler :
ZI Rennes Sud-Est (ZI Rennes Sud-Est - 10 rue du Breil) (ZUP ZAC
etc...)
BP 93035 (Rue de la Halte BP 93035) ( Cedex Cidex etc...)
CP 7289 (Pont Bessières, 3 CP 7289)
ces 2 derniers incorporent de plus un saut de ligne

les adresses dont le numéro de voie est à la fin (Rue Despourrins, 6-8) de
celles ou il est au début (99, rue de l'Abbé Groult)
les adresses ou il n'y a pas de séparateur commun (89 av. Charles de
Gaulle)
ou il n'y a pas de numero de voie (Mas de Grille)
ou les numéro de voie sont composites ( 17-21 , 22 ter)
les noms de voie numérique (rue du 11 novembre 1918)

une solution possible serait de faire un tri des toutes ces adresses
- les regrouper par type de libellé
- séparer dans des feuilles séparées chaque type pour y appliquer un
données
> convertir : adéquat
- un bonne petites dizaines de procs distinctes
- pas mal de manips à la main (inversions, remise en place de colonne)
- certainement pas mal de controle et correction aprés coup
- puis remettre tout en commun...
;o)))


:-(
mais je ne vois pas de procédure simple et universelle

Tu vois Rex, pour faire un parallele avec le suivi de commande (on avait
oublié le conditionnement ;o))).
Ici c'est la collectage correct des adresses qui conditionne tout ce qui
suit...
;o)))

--
@+
;o)))




FFO
Le #16401941
Salut à toi

Je te propose ce code
Le résultat dans les 2 colonnes adjacentes (B et C)

For Each c In Worksheets("Sheet1").Range("A3", "A" &
Range("A65535").End(xlUp).Row)
Caractères = " éèà,"
For i = 1 To Len(c)
A = UCase(Mid(c, i, 1))
If "ABCDEFGHIJKLMNOPQRSTUVWXYZ" Like "*" & UCase(Mid(c, i, 1)) & "*" And
Mid(c, i, 1) <> "-" Then
Nom = Nom & Mid(c, i, 1)
Else
If Caractères Like "*" & Mid(c, i, 1) & "*" = False And Mid(c, i, 1) <> "-"
Then
Chiffre = Chiffre & Mid(c, i, 1)
End If
End If
If Caractères Like "*" & Mid(c, i, 1) & "*" And Mid(c, i, 1) <> "," Then
Nom = Nom & Mid(c, i, 1)
End If
If "ABCDEFGHIJKLMNOPQRSTUVWXYZ" Like "*" & UCase(Mid(c, i + 1, 1)) & "*" And
Mid(c, i, 1) = "-" Then
Nom = Nom & Mid(c, i, 1)
Else
If Mid(c, i, 1) = "-" Then
Chiffre = Chiffre & Mid(c, i, 1)
End If
End If
Next
c.Offset(0, 1) = Nom
c.Offset(0, 2) = Chiffre
Nom = ""
Chiffre = ""
Next


Sur ce lien ton fichier avec la macro Traitement

http://www.cijoint.fr/cjlink.php?file=cj200807/cijk0u8uin.xls

Fais des essais et dis moi !!!


"rthompson" wrote:

Encore une fois

Il s'agit d'un "Cadeau" d'une personne ayant quitté la société

Dans Filemaker, il n'avait rien de spécifique pour les addresse et chacun y
mettait ce qu'il voulait

Maintenant que je suis parvenu à les convaincre d'utilser Act (no pub
please)
et que nous mettons en place une structure et des formats spécifiques
cela devrait aller beaucoup mieux
En ce qui concerne les anciennes entrées, la réaction est simple

Oh, that's not a problem, just ask Rex to sort things out


Donc voilà l'apprenti dans la cadoue

Parce que je te signale, que cette colonne n'en est qu'une
J'en ai une "Floppée" d'autre à régler
Et j'avance pas mal

Mais ici, je coince totalement
Et je me vois mal en rectifier environ 10.000 à la main

A bientôt

Rex




"Modeste" %
Bonsour® Daniel.C avec ferveur ;o))) vous nous disiez :

> En suppposant que les nombres soient toujours en tête.
> En A1 : 100 aaa ZI www
> Pour extraire le nombre :
> =CNUM(GAUCHE(A1;TROUVE(" ";A1)-1))
> pour extraire la partie centrale :
> =STXT(A1;TROUVE(" ";A1)+1;TROUVE("ZI";A1)-TROUVE(" ";A1)-2)
> Pour extraire la chaîne se trouvant après ZI :
> =STXT(A1;TROUVE("ZI";A1)+3;9^9)

:-(
pas si simple que cela ...
selon l'exemple fourni par T.Rex !!!!

comment differencier /isoler :
ZI Rennes Sud-Est (ZI Rennes Sud-Est - 10 rue du Breil) (ZUP ZAC
etc...)
BP 93035 (Rue de la Halte BP 93035) ( Cedex Cidex etc...)
CP 7289 (Pont Bessières, 3 CP 7289)
ces 2 derniers incorporent de plus un saut de ligne

les adresses dont le numéro de voie est à la fin (Rue Despourrins, 6-8) de
celles ou il est au début (99, rue de l'Abbé Groult)
les adresses ou il n'y a pas de séparateur commun (89 av. Charles de Gaulle)
ou il n'y a pas de numero de voie (Mas de Grille)
ou les numéro de voie sont composites ( 17-21 , 22 ter)
les noms de voie numérique (rue du 11 novembre 1918)

une solution possible serait de faire un tri des toutes ces adresses
- les regrouper par type de libellé
- séparer dans des feuilles séparées chaque type pour y appliquer un données
> convertir : adéquat
- un bonne petites dizaines de procs distinctes
- pas mal de manips à la main (inversions, remise en place de colonne)
- certainement pas mal de controle et correction aprés coup
- puis remettre tout en commun...
;o)))


:-(
mais je ne vois pas de procédure simple et universelle

Tu vois Rex, pour faire un parallele avec le suivi de commande (on avait
oublié le conditionnement ;o))).
Ici c'est la collectage correct des adresses qui conditionne tout ce qui
suit...
;o)))

--
@+
;o)))





rthompson
Le #16402041
Bonjour Laurent

Et surtout merci pour t'occuper de moi

J'ai fait ce que tu me conseil

J'ai mis sur une feuille la colonne des adresses
J'ai mis tes macros sur cette feuille (enfin dans le code, tu me comprends)

Je lance la première et il me mets le numéros en B
Mais quand je lance les autre soit il ne fait rien, soit il me supprime les
numeros???????

Qu'est-ce que j'ai fais de mal?

A bientôt

Rex

PS je dois m'absenter pendant quelques heures, donc je ne saurais réagir
tout de suite




"laurent.daures" 4888714a$0$921$
Bonjour,
Tu peux donc copier la colonne d'adresses dans une autre feuille COLONNE
A et la travailler ainsi :

Pour te faciliter la tâche, voici une macro qui te fait le travail
(colle la colonne adresses dans une AUTRE FEUILLE
s'il te plaît sinon, les données converties vont te mettre le bazar dans
ton tableau)

lance d'abord la première (Caractères_spéciaux()
ensuite, la deuxième (inverser_colonnes)

'*************
Sub Caractères_spéciaux()
'enlève les retour charriot (chr10)
For Each cell In Range("a1:a" & _
Range("a65536").End(xlUp).Row)
On Error Resume Next
cell.Select
cell.Replace What:=Chr(10), Replacement:=" ", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:úlse, SearchFormat:úlse, _
ReplaceFormat:úlse
Next
inverser_colonnes
NOMBRES
End Sub
'*************
Sub CONVERTIR()
'coller les adresses dans la colonne A
Columns(1).Select
'première macro
Selection.TextToColumns Destination:=Range("A1"), _
DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=True, _
Tab:=True, _
Semicolon:úlse, Comma:=True, _
Space:úlse, Other:úlse, _
FieldInfo _
:=Array(Array(1, 1), Array(2, 1)), _
TrailingMinusNumbers:=True
inverser_colonnes
NOMBRES
End Sub
'*************
Sub inverser_colonnes()
'deuxième macro
For Each cell In Range("a1:a" & Range _
("a65536").End(xlUp).Row)
If IsNumeric(cell) Then
cell.Offset(0, 1).Cut
cell.Insert Shift:=xlToRight
End If
Next
End Sub
'*************
Sub NOMBRES()
'3e macro
For Each cell In Range("a1:a" & _
Range("a65536").End(xlUp).Row)
For i = 4 To 1 Step (-1)
If IsNumeric(Left(cell, i)) Then
cell.Offset(0, 1) = Left(cell, i)
cell.Value = Right(cell, Len(cell) - i)
End If
If IsNumeric(Right(cell, i)) Then
cell.Offset(0, 1) = Right(cell, i)
cell.Value = Left(cell, Len(cell) - i)
End If
Next
Next
End Sub

normalement, avec ça tu as déjà un gros travail d'achevé, au moins 90% des
cas

tu as dans la colonne A les adresses sans les numéros au début et à la
fin,
et dans la colonne B tous les numéros qui étaient au début ou à la fin
des adresses.
Attention, une vérification est quand même nécessaire, pour le cas par
exemple s'une BP
Pour les ZI, il y a trop de traits d'union dans la colonne, impossible de
délimiter avec ce caractère dans convertir,
par exemple ZI Rennes Sud-Est - 10 rue du Breil,
il y a là un trait d'union au milieu de Sud-Est et juste après.
Pas facile à indiquer tout ça.
cependant, en faisant CTRL F rechercher "ZI", tu tombes sur
toutes les cellules contenant ce mot, un simple couper coller te tirera
d'affaire.
pour BP, même chose;-))

Bon courage !
Amicalement
Siesting Hoax
"rthompson" news:
Encore une fois

Il s'agit d'un "Cadeau" d'une personne ayant quitté la société

Dans Filemaker, il n'avait rien de spécifique pour les addresse et chacun
y mettait ce qu'il voulait

Maintenant que je suis parvenu à les convaincre d'utilser Act (no pub
please)
et que nous mettons en place une structure et des formats spécifiques
cela devrait aller beaucoup mieux
En ce qui concerne les anciennes entrées, la réaction est simple

Oh, that's not a problem, just ask Rex to sort things out


Donc voilà l'apprenti dans la cadoue

Parce que je te signale, que cette colonne n'en est qu'une
J'en ai une "Floppée" d'autre à régler
Et j'avance pas mal

Mais ici, je coince totalement
Et je me vois mal en rectifier environ 10.000 à la main

A bientôt

Rex




"Modeste" %
Bonsour® Daniel.C avec ferveur ;o))) vous nous disiez :

En suppposant que les nombres soient toujours en tête.
En A1 : 100 aaa ZI www
Pour extraire le nombre :
=CNUM(GAUCHE(A1;TROUVE(" ";A1)-1))
pour extraire la partie centrale :
=STXT(A1;TROUVE(" ";A1)+1;TROUVE("ZI";A1)-TROUVE(" ";A1)-2)
Pour extraire la chaîne se trouvant après ZI :
=STXT(A1;TROUVE("ZI";A1)+3;9^9)



:-(
pas si simple que cela ...
selon l'exemple fourni par T.Rex !!!!

comment differencier /isoler :
ZI Rennes Sud-Est (ZI Rennes Sud-Est - 10 rue du Breil) (ZUP ZAC
etc...)
BP 93035 (Rue de la Halte BP 93035) ( Cedex Cidex etc...)
CP 7289 (Pont Bessières, 3 CP 7289)
ces 2 derniers incorporent de plus un saut de ligne

les adresses dont le numéro de voie est à la fin (Rue Despourrins, 6-8)
de celles ou il est au début (99, rue de l'Abbé Groult)
les adresses ou il n'y a pas de séparateur commun (89 av. Charles de
Gaulle)
ou il n'y a pas de numero de voie (Mas de Grille)
ou les numéro de voie sont composites ( 17-21 , 22 ter)
les noms de voie numérique (rue du 11 novembre 1918)

une solution possible serait de faire un tri des toutes ces adresses
- les regrouper par type de libellé
- séparer dans des feuilles séparées chaque type pour y appliquer un
données
> convertir : adéquat
- un bonne petites dizaines de procs distinctes
- pas mal de manips à la main (inversions, remise en place de colonne)
- certainement pas mal de controle et correction aprés coup
- puis remettre tout en commun...
;o)))


:-(
mais je ne vois pas de procédure simple et universelle

Tu vois Rex, pour faire un parallele avec le suivi de commande (on avait
oublié le conditionnement ;o))).
Ici c'est la collectage correct des adresses qui conditionne tout ce qui
suit...
;o)))

--
@+
;o)))








Publicité
Poster une réponse
Anonyme