OVH Cloud OVH Cloud

Séparer une colonne en 2

9 réponses
Avatar
Kitou
Bonjour,

j'ai une collone "A" avec le nom de la personne
une collonne "B" avec la rue ville et code postal
(3, rue de l'Arrivée 75014 PARIS)
hors, j'aimerai que "75014" soit en collonne "C"
et "PARIS en collonne "D"

Comment faire ?

9 réponses

Avatar
anonymousA
bonjour,

en admettant que tes infos soient en cellule C3 et qu'il y ait 3, rue de
l'Arrivée 75014 PARIS

MsgBox StrReverse(Split(StrReverse(Cells(3, 3).Value), " ")(0))
MsgBox StrReverse(Split(StrReverse(Cells(3, 3).Value), " ")(1))

te donnera PARIS puis 75014. le critere de rupture se fait sur le " " . tu
pourras donc en faire ce que t'en veux. Y' a surement aussi une formule en
Excel mais j'ai pas cherché

A+


Bonjour,

j'ai une collone "A" avec le nom de la personne
une collonne "B" avec la rue ville et code postal
(3, rue de l'Arrivée 75014 PARIS)
hors, j'aimerai que "75014" soit en collonne "C"
et "PARIS en collonne "D"

Comment faire ?


Avatar
AV
Moins facile qu'il n'y paraît quand on pense à qques cas particuliers
possibles..

En C1 matricielle (validation par ctrl+maj+entrée)
=1*STXT(DROITE(B1;NBCAR(B1)-6);EQUIV(1;1*ESTNUM(1*STXT(DROITE(B1;NBCAR(B1)-6);LI
GNE(INDIRECT("1:100"));1));0);SOMME(1*ESTNUM(1*STXT(DROITE(B1;NBCAR(B1)-6);LIGNE
(INDIRECT("1:100"));1))))
En D1 :
=STXT(B1;TROUVE(C1;B1)+6;9^9)

AV
Avatar
AV
Heu....
Que va donner :
12, rue du Départ 19100 BRIVE LA GAILLARDE ??

Oui...je sais... on devrait normalement écrire BRIVE-LA-GAILLARDE
C'est ce que je me tue à dire à la secrétaire ;-)

AV
Avatar
anonymousA
ben oui, tous les cas soont efetivement difficiles à tester. Voila ce que je
peux proposer de mieux en supposant bien sur que les codes postaux
contiennent bien 5 chiffres.

On Error Resume Next
For i = Len(Cells(3, 3).Value) To 1 Step -1
If Not IsNumeric(CInt(Mid(Cells(3, 3).Value, i, 1))) Then
err.clear
Else
CP = Right(Left(Cells(3, 3).Value, i), 5)
ville = Trim(Right(Cells(3, 3).Value, Len(Cells(3, 3).Value) - i))
Exit For
End If
Next
MsgBox CP & "et " & ville

J'ai essayé ta formule qui fonctionne pas mal mais qui bien sur ne peut pas
prendre en compte tous les cas de figure et notamment celui-ci
Le Hameau 06130 MAZARGUES. c'est le 0 qui pose problème . La formule renvoie
6130 et MAZARGUES.Les départements commencant par 0 posent problème mais
c'est pas bien terrible à régler pour un Pro de la formule comme toi. Je ne
me moque pas, je suis réellement admiratif de ce que tu fais avec les
formules.

A+





Heu....
Que va donner :
12, rue du Départ 19100 BRIVE LA GAILLARDE ??

Oui...je sais... on devrait normalement écrire BRIVE-LA-GAILLARDE
C'est ce que je me tue à dire à la secrétaire ;-)

AV





Avatar
AV
"anonymousA" a écrit dans le message
news:
ben oui, tous les cas soont efetivement difficiles à tester. Voila ce que je
peux proposer de mieux en supposant bien sur que les codes postaux
contiennent bien 5 chiffres.

On Error Resume Next
For i = Len(Cells(3, 3).Value) To 1 Step -1
If Not IsNumeric(CInt(Mid(Cells(3, 3).Value, i, 1))) Then
err.clear
Else
CP = Right(Left(Cells(3, 3).Value, i), 5)
ville = Trim(Right(Cells(3, 3).Value, Len(Cells(3, 3).Value) - i))
Exit For
End If
Next
MsgBox CP & "et " & ville
Le Hameau 06130 MAZARGUES. c'est le 0 qui pose problème .



Exact, mais il suffit de mettre la cellule d'accueil au format "00000"

AV


Avatar
Kitou
Merci à vous pour vos reponses,

J'ai essayé: On Error Resume Next
For i = Len(Cells(3, 3).Value) To 1 Step -1
If Not IsNumeric(CInt(Mid(Cells(3, 3).Value, i, 1))) Then
err.clear
Else
CP = Right(Left(Cells(3, 3).Value, i), 5)
ville = Trim(Right(Cells(3, 3).Value, Len(Cells(3, 3).Value) - i))
Exit For
End If
Next
MsgBox CP & "et " & ville


En faisant un copier coller dans une nouvelle macro, mais je dois mal m'y
prendre ca ne marche pas !

Ou doit je la rentrer precisement ?
Avatar
anonymousA
re,

faut la coller dans un module standard p.e et l'entourer d'un nom de Sub
(Sub quelquechose) et de End sub. Puis ensuite être sur que la cellule C3
dont on parle est nourrie par une adresse.
Pour le reste, sauf cas de figure particuliers toujours possibles, ca
fonctionne mais la palme revient à AV parce que des formules d'en le genre ,
je suis pas prêt d'en pondre.

A+



Merci à vous pour vos reponses,

J'ai essayé: On Error Resume Next
For i = Len(Cells(3, 3).Value) To 1 Step -1
If Not IsNumeric(CInt(Mid(Cells(3, 3).Value, i, 1))) Then
err.clear
Else
CP = Right(Left(Cells(3, 3).Value, i), 5)
ville = Trim(Right(Cells(3, 3).Value, Len(Cells(3, 3).Value) - i))
Exit For
End If
Next
MsgBox CP & "et " & ville


En faisant un copier coller dans une nouvelle macro, mais je dois mal m'y
prendre ca ne marche pas !

Ou doit je la rentrer precisement ?


Avatar
Daniel.M
Bonjour Alain, Kitou,

Pareil en D1.
En C1, il y a aussi la matricielle suivante (pour autant qu'il n'y ait pas de
00000) :

=STXT(B1;EQUIV(2;1/STXT(B1;LIGNE(INDIRECT("1:"&NBCAR(B1)));6));6)

Pour convertir en nombre (comme Alain), on peut rajouter 1* au début.

Salutations,

Daniel M.

"AV" wrote in message
news:
Moins facile qu'il n'y paraît quand on pense à qques cas particuliers
possibles..

En C1 matricielle (validation par ctrl+maj+entrée)

=1*STXT(DROITE(B1;NBCAR(B1)-6);EQUIV(1;1*ESTNUM(1*STXT(DROITE(B1;NBCAR(B1)-6);LI


GNE(INDIRECT("1:100"));1));0);SOMME(1*ESTNUM(1*STXT(DROITE(B1;NBCAR(B1)-6);LIGNE

(INDIRECT("1:100"));1))))
En D1 :
=STXT(B1;TROUVE(C1;B1)+6;9^9)

AV





Avatar
ChrisV
Très zoooooli Daniel ! ;-)


ChrisV


"Daniel.M" a écrit dans le message de
news: %
Bonjour Alain, Kitou,

Pareil en D1.
En C1, il y a aussi la matricielle suivante (pour autant qu'il n'y ait pas
de
00000) :

=STXT(B1;EQUIV(2;1/STXT(B1;LIGNE(INDIRECT("1:"&NBCAR(B1)));6));6)

Pour convertir en nombre (comme Alain), on peut rajouter 1* au début.

Salutations,

Daniel M.

"AV" wrote in message
news:
Moins facile qu'il n'y paraît quand on pense à qques cas particuliers
possibles..

En C1 matricielle (validation par ctrl+maj+entrée)

=1*STXT(DROITE(B1;NBCAR(B1)-6);EQUIV(1;1*ESTNUM(1*STXT(DROITE(B1;NBCAR(B1)-6);LI


GNE(INDIRECT("1:100"));1));0);SOMME(1*ESTNUM(1*STXT(DROITE(B1;NBCAR(B1)-6);LIGNE

(INDIRECT("1:100"));1))))
En D1 :
=STXT(B1;TROUVE(C1;B1)+6;9^9)

AV