!Déconcaténer... cellules sous Excel
Résolu/Fermé
A voir également:
- Deconcatener excel
- Liste déroulante excel - Guide
- Si et excel - Guide
- Aller à la ligne excel - Guide
- Word et excel gratuit - Guide
- Déplacer une colonne excel - Guide
6 réponses
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
1 déc. 2010 à 22:41
1 déc. 2010 à 22:41
Bonjour,
Y a un peu plus court :-D
Clic drpoit sur le nom de l'onglet >> Voir le code.
dans le fenêtre qui s'ouvre tu colle ..
Ensuite tu met le curseur DANS la macro et tu tape F5
A+
Y a un peu plus court :-D
Clic drpoit sur le nom de l'onglet >> Voir le code.
dans le fenêtre qui s'ouvre tu colle ..
Sub Separer() Dim Lig As Long, TB On Error Resume Next For Lig = 1 To Range("A65536").End(xlUp).Row TB = Split(Cells(Lig, 1), " ") If Asc(Right(TB(0), 1)) < 97 Then Cells(Lig, 2) = TB(0): Cells(Lig, 3) = TB(1) Else Cells(Lig, 3) = TB(0): Cells(Lig, 2) = TB(1) End If Next Lig End Sub
Ensuite tu met le curseur DANS la macro et tu tape F5
A+
A raison d'une personne par ligne c'est à dire UN nom et UN prénom ?
Et comme séparateur espace ou virgule, toujours ?
Et si tu veux que ça aille vite, réponds vite parce que moi dans 15 minutes, je décroche.
Et comme séparateur espace ou virgule, toujours ?
Et si tu veux que ça aille vite, réponds vite parce que moi dans 15 minutes, je décroche.
merci de l'interet à mon pb
Oui un nom et un prenom par celule et par ligne
ex: Cellule A2 = Jean DUPOND , résultat, cellule B2 DUPOND, cellule C2 Jean
Cellule A3 = DURAND Pierre, résultat, cellule B3 DURAND, cellule C3 Pierre
soit pouvoir ranger les noms en colonne B et les prénoms en colonne C
Merci A+
françois
Oui un nom et un prenom par celule et par ligne
ex: Cellule A2 = Jean DUPOND , résultat, cellule B2 DUPOND, cellule C2 Jean
Cellule A3 = DURAND Pierre, résultat, cellule B3 DURAND, cellule C3 Pierre
soit pouvoir ranger les noms en colonne B et les prénoms en colonne C
Merci A+
françois
Mike-31
Messages postés
18351
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
12 décembre 2024
5 108
Modifié par Mike-31 le 1/12/2010 à 22:02
Modifié par Mike-31 le 1/12/2010 à 22:02
Salut,
Ce n'est pas très compliqué, en supposant que tes Noms et prénoms sont dans ta colonne A et que chaque nom et prénom est séparé par un espace
mets la plage en colonne A en surbrillance, clic droit Copier/clic droit collage spécial/cocher valeur ce qui aura pour effet de supprimer la formule de concaténation et fixer les valeurs.
Alors que la plage est toujours en surbrillance,
sous 2003 données/Convertir/Délimité/suivant/cocher Espace/suivant et terminé
sous 2007 onglet Données/module outils de données/Convertir/Délimité/suivant/cocher espace/suivant/terminé
A+
Mike-31
Une période d'échec est un moment rêvé pour semer les graines du savoir.
Ce n'est pas très compliqué, en supposant que tes Noms et prénoms sont dans ta colonne A et que chaque nom et prénom est séparé par un espace
mets la plage en colonne A en surbrillance, clic droit Copier/clic droit collage spécial/cocher valeur ce qui aura pour effet de supprimer la formule de concaténation et fixer les valeurs.
Alors que la plage est toujours en surbrillance,
sous 2003 données/Convertir/Délimité/suivant/cocher Espace/suivant et terminé
sous 2007 onglet Données/module outils de données/Convertir/Délimité/suivant/cocher espace/suivant/terminé
A+
Mike-31
Une période d'échec est un moment rêvé pour semer les graines du savoir.
Ok voici la bête :
Tu fais F11 (éditeur VB), dans la partie gauche (tree), tu sélectionne la racine, clic droit, ajouter MODULE.
Dans le module tu colles ceci :
Option Explicit
Function CleanString(Cel As Range) As String
Dim Tmp As String
Tmp = CStr(Cel)
Tmp = Replace(Tmp, ",", " ")
Tmp = Replace(Tmp, ";", " ")
CleanString = Tmp
End Function
Function IsItCaps(S As String) As Boolean
Dim i As Integer
Dim Ok As Boolean
Dim C As String
Ok = True
For i = 1 To Len(S)
C = Mid(S, i, 1)
If C < "A" Or C > "Z" Then
Ok = False
Exit For
End If
Next i
IsItCaps = Ok
End Function
Function FirstName(Cel As Range) As String
Dim Tmp As String
Dim Found As Integer
Dim Tbl() As String
Tmp = CleanString(Cel)
Tbl = Split(Tmp, " ")
If UBound(Tbl) = 1 Then
If IsItCaps(Tbl(0)) Then FirstName = Tbl(1) Else FirstName = Tbl(0)
Else
FirstName = "ErParmCount"
End If 'UBount(Tbl) = 1
End Function
Function LastName(Cel As Range) As String
Dim Tmp As String
Dim Found As Integer
Dim Tbl() As String
Tmp = CleanString(Cel)
Tbl = Split(Tmp, " ")
If UBound(Tbl) = 1 Then
If IsItCaps(Tbl(0)) Then LastName = Tbl(0) Else LastName = Tbl(1)
Else
LastName = "ErParmCount"
End If 'UBount(Tbl) = 1
End Function
Puis dans ton tableau tu utilises
=firstname(celluleconcaténée)
=lastname(celluleconcaténée)
Bonne soirée,
Tu fais F11 (éditeur VB), dans la partie gauche (tree), tu sélectionne la racine, clic droit, ajouter MODULE.
Dans le module tu colles ceci :
Option Explicit
Function CleanString(Cel As Range) As String
Dim Tmp As String
Tmp = CStr(Cel)
Tmp = Replace(Tmp, ",", " ")
Tmp = Replace(Tmp, ";", " ")
CleanString = Tmp
End Function
Function IsItCaps(S As String) As Boolean
Dim i As Integer
Dim Ok As Boolean
Dim C As String
Ok = True
For i = 1 To Len(S)
C = Mid(S, i, 1)
If C < "A" Or C > "Z" Then
Ok = False
Exit For
End If
Next i
IsItCaps = Ok
End Function
Function FirstName(Cel As Range) As String
Dim Tmp As String
Dim Found As Integer
Dim Tbl() As String
Tmp = CleanString(Cel)
Tbl = Split(Tmp, " ")
If UBound(Tbl) = 1 Then
If IsItCaps(Tbl(0)) Then FirstName = Tbl(1) Else FirstName = Tbl(0)
Else
FirstName = "ErParmCount"
End If 'UBount(Tbl) = 1
End Function
Function LastName(Cel As Range) As String
Dim Tmp As String
Dim Found As Integer
Dim Tbl() As String
Tmp = CleanString(Cel)
Tbl = Split(Tmp, " ")
If UBound(Tbl) = 1 Then
If IsItCaps(Tbl(0)) Then LastName = Tbl(0) Else LastName = Tbl(1)
Else
LastName = "ErParmCount"
End If 'UBount(Tbl) = 1
End Function
Puis dans ton tableau tu utilises
=firstname(celluleconcaténée)
=lastname(celluleconcaténée)
Bonne soirée,
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Mike-31
Messages postés
18351
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
12 décembre 2024
5 108
1 déc. 2010 à 23:15
1 déc. 2010 à 23:15
Re,
Salut Lermite, tu m'as pris de vitesse. J'étais parti sur des fonctions personnalisées, je reconnais les performences de ton code.
je mets tout de même mes deux fonctions personnalisées
Public Function Prenom_minus(zone As Range)
Application.Volatile
Dim tmpStr() As String, i As Long
Prenom_minus = ""
tmpStr = Split(zone(1, 1).Text, " ")
For i = LBound(tmpStr) To UBound(tmpStr)
If UCase(tmpStr(i)) <> tmpStr(i) Then Prenom_minus = Prenom_minus & tmpStr(i) & " "
Next i
If Len(Prenom_minus) <> 0 Then Prenom_minus = Left(Prenom_minus, Len(Prenom_minus) - 1)
End Function
Public Function Nom_Majusc(zone As Range)
Application.Volatile
Dim tmpStr() As String, i As Long
Nom_Majusc = ""
tmpStr = Split(zone(1, 1).Text, " ")
For i = LBound(tmpStr) To UBound(tmpStr)
If UCase(tmpStr(i)) = tmpStr(i) Then Nom_Majusc = Nom_Majusc & tmpStr(i) & " "
Next i
If Len(Nom_Majusc) <> 0 Then Nom_Majusc = Left(Nom_Majusc, Len(Nom_Majusc) - 1)
End Function
Salut Lermite, tu m'as pris de vitesse. J'étais parti sur des fonctions personnalisées, je reconnais les performences de ton code.
je mets tout de même mes deux fonctions personnalisées
Public Function Prenom_minus(zone As Range)
Application.Volatile
Dim tmpStr() As String, i As Long
Prenom_minus = ""
tmpStr = Split(zone(1, 1).Text, " ")
For i = LBound(tmpStr) To UBound(tmpStr)
If UCase(tmpStr(i)) <> tmpStr(i) Then Prenom_minus = Prenom_minus & tmpStr(i) & " "
Next i
If Len(Prenom_minus) <> 0 Then Prenom_minus = Left(Prenom_minus, Len(Prenom_minus) - 1)
End Function
Public Function Nom_Majusc(zone As Range)
Application.Volatile
Dim tmpStr() As String, i As Long
Nom_Majusc = ""
tmpStr = Split(zone(1, 1).Text, " ")
For i = LBound(tmpStr) To UBound(tmpStr)
If UCase(tmpStr(i)) = tmpStr(i) Then Nom_Majusc = Nom_Majusc & tmpStr(i) & " "
Next i
If Len(Nom_Majusc) <> 0 Then Nom_Majusc = Left(Nom_Majusc, Len(Nom_Majusc) - 1)
End Function