OVH Cloud OVH Cloud

Scinder une colonne

8 réponses
Avatar
JL JOLY
Bonjour tout le monde,
Voici ma colonne:
DUPONT Jean Claude MARTIN Marie Alice Berthe

Je souhaiterais créer deux nouvelles colonnes:
DUPONT Jean Claude
et
MARTIN Marie Alice Berthe

nota, le nombre de prénoms peut varier, les noms propres peuvent être composés
DE LACHAMBRE MARTIN-DURAND
Merci pour votre aide

8 réponses

Avatar
Frédéric Sigonneau
Bonjour,

Si tu utilises Excel 2000 ou + récent *et si* tes deux noms et prénoms dans
chaque cellule sont bien séparés régulièrement par plus de 1 espace comme dans
l'exemple que tu as fourni, cette fonction matricielle perso peut sans doute te
dépanner :

'============== Function Decoupe(cell)
Dim i&, x&
x = 1
For i = 2 To Len(cell)
If Mid(cell, i - 1, 1) = " " _
And Mid(cell, i, 1) = " " Then x = x + 1
Next
Decoupe = Split(cell, Space(x))
End Function
'==============
Si tes données sont en colonne A, sélectionne, par ex, les cellules B1 et C1 et
entre en B1 :
Þcoupe(A1)
Valide par Ctrl+Maj+Entrée et tire vers le bas autant que de besoin.

FS
---
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://frederic.sigonneau.free.fr
Si votre question sur Excel est urgente, évitez ma bal !

Bonjour tout le monde,
Voici ma colonne:
DUPONT Jean Claude MARTIN Marie Alice Berthe

Je souhaiterais créer deux nouvelles colonnes:
DUPONT Jean Claude
et
MARTIN Marie Alice Berthe

nota, le nombre de prénoms peut varier, les noms propres peuvent être composés
DE LACHAMBRE MARTIN-DURAND
Merci pour votre aide


Avatar
Rai
"JL JOLY" <JL a écrit dans le message de news:
Bonjour tout le monde,
Voici ma colonne:
DUPONT Jean Claude MARTIN Marie Alice Berthe

Je souhaiterais créer deux nouvelles colonnes:
DUPONT Jean Claude
et
MARTIN Marie Alice Berthe

nota, le nombre de prénoms peut varier, les noms propres peuvent être composés
DE LACHAMBRE MARTIN-DURAND
Merci pour votre aide


Bonjour,

Tu peux te baser sur la macro suivante :

Sub separe()
Complet = ActiveCell.Value

For pos = 3 To Len(Complet) - 1
If Mid(Complet, pos, 1) = UCase(Mid(Complet, pos, 1)) Then
If Mid(Complet, pos - 1, 1) = " " Then
If Mid(Complet, pos - 2, 1) <> UCase(Mid(Complet, pos - 2, 1)) Then
Exit For
End If
End If
End If
Next pos

Premier = Left(Complet, pos - 2)
Deuxieme = Right(Complet, Len(Complet) - pos + 1)

ActiveCell.Offset(0, 1) = Premier
ActiveCell.Offset(0, 2) = Deuxieme
End Sub


Pour faciliter la compréhension et l'adaptation à tes besoins, j'ai scindé le test en 3 conditions imbriquées.
Tu peux ne faire qu'un seul test et placer toutes les conditions avec un 'AND'.
if If Mid(Complet, pos, 1) = UCase(Mid(Complet, pos, 1)) AND Mid(Complet, pos - 1, 1) = " " AND Mid(Complet, pos - 2, 1) <> UCase(Mid(Complet, pos - 2, 1)) then

Bonne journée

Rai

Avatar
JL JOLY
Merci de ta réponse, le problème je suis nul en VBA et je ne sais pas ou
copier ta fonction dans ma feuille de calcul, autrement cela devrait marcher
car les espaces sont respectés
Encore merci, la colonne comprend 2150 enregistrement!!
Jean-Luc


Bonjour,

Si tu utilises Excel 2000 ou + récent *et si* tes deux noms et prénoms dans
chaque cellule sont bien séparés régulièrement par plus de 1 espace comme dans
l'exemple que tu as fourni, cette fonction matricielle perso peut sans doute te
dépanner :

'============== > Function Decoupe(cell)
Dim i&, x&
x = 1
For i = 2 To Len(cell)
If Mid(cell, i - 1, 1) = " " _
And Mid(cell, i, 1) = " " Then x = x + 1
Next
Decoupe = Split(cell, Space(x))
End Function
'============== >
Si tes données sont en colonne A, sélectionne, par ex, les cellules B1 et C1 et
entre en B1 :
Þcoupe(A1)
Valide par Ctrl+Maj+Entrée et tire vers le bas autant que de besoin.

FS
---
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://frederic.sigonneau.free.fr
Si votre question sur Excel est urgente, évitez ma bal !

Bonjour tout le monde,
Voici ma colonne:
DUPONT Jean Claude MARTIN Marie Alice Berthe

Je souhaiterais créer deux nouvelles colonnes:
DUPONT Jean Claude
et
MARTIN Marie Alice Berthe

nota, le nombre de prénoms peut varier, les noms propres peuvent être composés
DE LACHAMBRE MARTIN-DURAND
Merci pour votre aide





Avatar
Frédéric Sigonneau
Re,

Dans le classeur où se trouvent tes 2150 enregistrements, tape Alt+F11 pour
ouvrir l'éditeur de code. Dans cet éditeur, sélectionne Module dans le menu
Insertion. Colle le code de la fonction dans la page blanche qui s'affiche.
Retourne ensuite dans Excel (Alt+F11 de nouveau) et saisis la formule comme
indiqué dans mon premier message.

FS
---
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://frederic.sigonneau.free.fr
Si votre question sur Excel est urgente, évitez ma bal !

Merci de ta réponse, le problème je suis nul en VBA et je ne sais pas ou
copier ta fonction dans ma feuille de calcul, autrement cela devrait marcher
car les espaces sont respectés
Encore merci, la colonne comprend 2150 enregistrement!!
Jean-Luc



Bonjour,

Si tu utilises Excel 2000 ou + récent *et si* tes deux noms et prénoms dans
chaque cellule sont bien séparés régulièrement par plus de 1 espace comme dans
l'exemple que tu as fourni, cette fonction matricielle perso peut sans doute te
dépanner :

'============== >>Function Decoupe(cell)
Dim i&, x&
x = 1
For i = 2 To Len(cell)
If Mid(cell, i - 1, 1) = " " _
And Mid(cell, i, 1) = " " Then x = x + 1
Next
Decoupe = Split(cell, Space(x))
End Function
'============== >>
Si tes données sont en colonne A, sélectionne, par ex, les cellules B1 et C1 et
entre en B1 :
Þcoupe(A1)
Valide par Ctrl+Maj+Entrée et tire vers le bas autant que de besoin.

FS
---
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://frederic.sigonneau.free.fr
Si votre question sur Excel est urgente, évitez ma bal !


Bonjour tout le monde,
Voici ma colonne:
DUPONT Jean Claude MARTIN Marie Alice Berthe

Je souhaiterais créer deux nouvelles colonnes:
DUPONT Jean Claude
et
MARTIN Marie Alice Berthe

nota, le nombre de prénoms peut varier, les noms propres peuvent être composés
DE LACHAMBRE MARTIN-DURAND
Merci pour votre aide







Avatar
Philippe [MS]
- Outils Macro Visual Basic Editor
- Sélectionner "This workbook" et coller la macro
- Ensuite suivre les directives

Phil.

"JL JOLY" wrote in message
news:
Merci de ta réponse, le problème je suis nul en VBA et je ne sais pas ou
copier ta fonction dans ma feuille de calcul, autrement cela devrait
marcher

car les espaces sont respectés
Encore merci, la colonne comprend 2150 enregistrement!!
Jean-Luc


Bonjour,

Si tu utilises Excel 2000 ou + récent *et si* tes deux noms et prénoms
dans


chaque cellule sont bien séparés régulièrement par plus de 1 espace
comme dans


l'exemple que tu as fourni, cette fonction matricielle perso peut sans
doute te


dépanner :

'============== > > Function Decoupe(cell)
Dim i&, x&
x = 1
For i = 2 To Len(cell)
If Mid(cell, i - 1, 1) = " " _
And Mid(cell, i, 1) = " " Then x = x + 1
Next
Decoupe = Split(cell, Space(x))
End Function
'============== > >
Si tes données sont en colonne A, sélectionne, par ex, les cellules B1
et C1 et


entre en B1 :
Þcoupe(A1)
Valide par Ctrl+Maj+Entrée et tire vers le bas autant que de besoin.

FS
---
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://frederic.sigonneau.free.fr
Si votre question sur Excel est urgente, évitez ma bal !

Bonjour tout le monde,
Voici ma colonne:
DUPONT Jean Claude MARTIN Marie Alice Berthe

Je souhaiterais créer deux nouvelles colonnes:
DUPONT Jean Claude
et
MARTIN Marie Alice Berthe

nota, le nombre de prénoms peut varier, les noms propres peuvent être
composés



DE LACHAMBRE MARTIN-DURAND
Merci pour votre aide







Avatar
Frédéric Sigonneau
Bonjour,

Mmm, j'ai des doutes sur le choix du ThisWorkbook comme destination du
collage... La fonction ne sera pas accessible dans Excel depuis ce module.

FS
---
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://frederic.sigonneau.free.fr
Si votre question sur Excel est urgente, évitez ma bal !

- Outils Macro Visual Basic Editor
- Sélectionner "This workbook" et coller la macro
- Ensuite suivre les directives

Phil.

"JL JOLY" wrote in message
news:

Merci de ta réponse, le problème je suis nul en VBA et je ne sais pas ou
copier ta fonction dans ma feuille de calcul, autrement cela devrait


marcher

car les espaces sont respectés
Encore merci, la colonne comprend 2150 enregistrement!!
Jean-Luc



Bonjour,

Si tu utilises Excel 2000 ou + récent *et si* tes deux noms et prénoms



dans

chaque cellule sont bien séparés régulièrement par plus de 1 espace



comme dans

l'exemple que tu as fourni, cette fonction matricielle perso peut sans



doute te

dépanner :

'============== >>>Function Decoupe(cell)
Dim i&, x&
x = 1
For i = 2 To Len(cell)
If Mid(cell, i - 1, 1) = " " _
And Mid(cell, i, 1) = " " Then x = x + 1
Next
Decoupe = Split(cell, Space(x))
End Function
'============== >>>
Si tes données sont en colonne A, sélectionne, par ex, les cellules B1



et C1 et

entre en B1 :
Þcoupe(A1)
Valide par Ctrl+Maj+Entrée et tire vers le bas autant que de besoin.

FS
---
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://frederic.sigonneau.free.fr
Si votre question sur Excel est urgente, évitez ma bal !


Bonjour tout le monde,
Voici ma colonne:
DUPONT Jean Claude MARTIN Marie Alice Berthe

Je souhaiterais créer deux nouvelles colonnes:
DUPONT Jean Claude
et
MARTIN Marie Alice Berthe

nota, le nombre de prénoms peut varier, les noms propres peuvent être




composés

DE LACHAMBRE MARTIN-DURAND
Merci pour votre aide











Avatar
JL JOLY
Merci c'est bon


Bonjour,

Si tu utilises Excel 2000 ou + récent *et si* tes deux noms et prénoms dans
chaque cellule sont bien séparés régulièrement par plus de 1 espace comme dans
l'exemple que tu as fourni, cette fonction matricielle perso peut sans doute te
dépanner :

'============== > Function Decoupe(cell)
Dim i&, x&
x = 1
For i = 2 To Len(cell)
If Mid(cell, i - 1, 1) = " " _
And Mid(cell, i, 1) = " " Then x = x + 1
Next
Decoupe = Split(cell, Space(x))
End Function
'============== >
Si tes données sont en colonne A, sélectionne, par ex, les cellules B1 et C1 et
entre en B1 :
Þcoupe(A1)
Valide par Ctrl+Maj+Entrée et tire vers le bas autant que de besoin.

FS
---
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://frederic.sigonneau.free.fr
Si votre question sur Excel est urgente, évitez ma bal !

Bonjour tout le monde,
Voici ma colonne:
DUPONT Jean Claude MARTIN Marie Alice Berthe

Je souhaiterais créer deux nouvelles colonnes:
DUPONT Jean Claude
et
MARTIN Marie Alice Berthe

nota, le nombre de prénoms peut varier, les noms propres peuvent être composés
DE LACHAMBRE MARTIN-DURAND
Merci pour votre aide





Avatar
sabatier
bonjour philippe(MS)
nous n'avons pas eu les mêmes maîtres : les miens m'ont appris qu'une
Function devait obligatoirement être écrite dans un module Standard...
au fait, es-tu un de ces bénévoles de chez MS?
jps

"Frédéric Sigonneau" a écrit dans le message de
news:
Bonjour,

Mmm, j'ai des doutes sur le choix du ThisWorkbook comme destination du
collage... La fonction ne sera pas accessible dans Excel depuis ce module.

FS
---
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://frederic.sigonneau.free.fr
Si votre question sur Excel est urgente, évitez ma bal !

- Outils Macro Visual Basic Editor
- Sélectionner "This workbook" et coller la macro
- Ensuite suivre les directives

Phil.

"JL JOLY" wrote in message
news:

Merci de ta réponse, le problème je suis nul en VBA et je ne sais pas ou
copier ta fonction dans ma feuille de calcul, autrement cela devrait


marcher

car les espaces sont respectés
Encore merci, la colonne comprend 2150 enregistrement!!
Jean-Luc



Bonjour,

Si tu utilises Excel 2000 ou + récent *et si* tes deux noms et prénoms



dans

chaque cellule sont bien séparés régulièrement par plus de 1 espace



comme dans

l'exemple que tu as fourni, cette fonction matricielle perso peut sans



doute te

dépanner :

'============== > >>>Function Decoupe(cell)
Dim i&, x&
x = 1
For i = 2 To Len(cell)
If Mid(cell, i - 1, 1) = " " _
And Mid(cell, i, 1) = " " Then x = x + 1
Next
Decoupe = Split(cell, Space(x))
End Function
'============== > >>>
Si tes données sont en colonne A, sélectionne, par ex, les cellules B1



et C1 et

entre en B1 :
Þcoupe(A1)
Valide par Ctrl+Maj+Entrée et tire vers le bas autant que de besoin.

FS
---
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://frederic.sigonneau.free.fr
Si votre question sur Excel est urgente, évitez ma bal !


Bonjour tout le monde,
Voici ma colonne:
DUPONT Jean Claude MARTIN Marie Alice Berthe

Je souhaiterais créer deux nouvelles colonnes:
DUPONT Jean Claude
et
MARTIN Marie Alice Berthe

nota, le nombre de prénoms peut varier, les noms propres peuvent être




composés

DE LACHAMBRE MARTIN-DURAND
Merci pour votre aide