Excel - Eclater les valeurs d'une cellule
GAELAMONTREAL
-
eriiic Messages postés 25847 Date d'inscription Statut Contributeur Dernière intervention -
eriiic Messages postés 25847 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je suis sur une projet de base de données dans lequel je place une valeur par cellule et chaque valeur en ligne soit:
A
B
C
D
Mon problème c'est que certaine valeur (que je récupère à partir d'un autre classeur) sont présentes à plusieurs dans une même cellule c.a.d :
A B C D
E
F G
H
I J K L M N
Et là je ne sais pas comment faire simplement pour éclater les cellules qui contiennent plus d'une valeur en plusieurs cellules contenant chacune une valeur en ligne comme précédemment.
Aidez-moi s'il vous plait....
Voici un exemple de mon problème, ici avec des nooms de villes.
https://www.cjoint.com/?fCwUesLDKq
Gael
Je suis sur une projet de base de données dans lequel je place une valeur par cellule et chaque valeur en ligne soit:
A
B
C
D
Mon problème c'est que certaine valeur (que je récupère à partir d'un autre classeur) sont présentes à plusieurs dans une même cellule c.a.d :
A B C D
E
F G
H
I J K L M N
Et là je ne sais pas comment faire simplement pour éclater les cellules qui contiennent plus d'une valeur en plusieurs cellules contenant chacune une valeur en ligne comme précédemment.
Aidez-moi s'il vous plait....
Voici un exemple de mon problème, ici avec des nooms de villes.
https://www.cjoint.com/?fCwUesLDKq
Gael
A voir également:
- Excel - Eclater les valeurs d'une cellule
- Liste déroulante excel - Guide
- Proteger cellule excel - Guide
- Déplacer une colonne excel - Guide
- Excel cellule couleur si condition texte - Guide
- Aller à la ligne dans une cellule excel - Guide
9 réponses
Bonjour,
Si j'ai bien compris ton problème, je te signale une petite astuce, un peu manuelle, mais qui t'aidera si ton besoin est juste de mettre un mot par ligne :
- Transférer ta colonne sous Word
- Convertir le tableau en texte sous Word (Choisir marques de paragraphe comme séparateur) : tu obtiens la même série que sous Excel.
- Comme il y a des espaces au début de certaines lignes, ils doivent être supprimés : Chercher-Remplacer "^p(espace)" (collés; le signe espace avec la barre espace du clavier) par "^p" (^p c'est le symbole de fin de ligne sous Word)
- Chercher-Remplacer "(espace)" (le signe espace avec la barre espace du clavier) par "^p" : tous les mots se rangent chacun sur une ligne. Il reste à supprimer les espaces de trop qui se sont transformés en retour ligne.
- Chercher-Remplacer "^p^p" par "^p". On obtient un mot par ligne et sans espaces intermédiaires.
- Sélectionner le tout et reconvertir texte en tableau.
- Reporter le tout dans Excel
- Faire ce que vous vouliez faire.
Bon courage et bonne journée.
Si j'ai bien compris ton problème, je te signale une petite astuce, un peu manuelle, mais qui t'aidera si ton besoin est juste de mettre un mot par ligne :
- Transférer ta colonne sous Word
- Convertir le tableau en texte sous Word (Choisir marques de paragraphe comme séparateur) : tu obtiens la même série que sous Excel.
- Comme il y a des espaces au début de certaines lignes, ils doivent être supprimés : Chercher-Remplacer "^p(espace)" (collés; le signe espace avec la barre espace du clavier) par "^p" (^p c'est le symbole de fin de ligne sous Word)
- Chercher-Remplacer "(espace)" (le signe espace avec la barre espace du clavier) par "^p" : tous les mots se rangent chacun sur une ligne. Il reste à supprimer les espaces de trop qui se sont transformés en retour ligne.
- Chercher-Remplacer "^p^p" par "^p". On obtient un mot par ligne et sans espaces intermédiaires.
- Sélectionner le tout et reconvertir texte en tableau.
- Reporter le tout dans Excel
- Faire ce que vous vouliez faire.
Bon courage et bonne journée.
Bonjour Gael,
Ton exemple est aussi clair que le pot d'echappement de mon char...
Tu veux decouper par lettre le nom de ville ?
Ton exemple est aussi clair que le pot d'echappement de mon char...
Tu veux decouper par lettre le nom de ville ?
Non ! Tu exagères ...
Gaël veut ne conserver que Teiului à la ligne 2 et renvoyer Potlogi en A8.
De même Praid, Predeal et Prejmer doivent être ventilés sur 3 lignes différentes.
Il faut donc lui proposer une macro qui reconnaisse la présence d'espaces (d'où une première difficulté à la ligne 5 qui commence par un espace), qui fractionne le contenu de chaque cellule après chaque espace, et qui déplace les éléments ainsi fractionnés dans des cellules vides de la colonne A : Pas très évident !
Gaël veut ne conserver que Teiului à la ligne 2 et renvoyer Potlogi en A8.
De même Praid, Predeal et Prejmer doivent être ventilés sur 3 lignes différentes.
Il faut donc lui proposer une macro qui reconnaisse la présence d'espaces (d'où une première difficulté à la ligne 5 qui commence par un espace), qui fractionne le contenu de chaque cellule après chaque espace, et qui déplace les éléments ainsi fractionnés dans des cellules vides de la colonne A : Pas très évident !
Bonsoir,
tu trouveras ci-joint un lien vers un exemple d'extraction de mots dans une chaîne de caractères vers d'autres cellules.
C'est un peu une usine à gaz, mais cela semble fonctionner. Cela pourra peut-être te donner un début de solution.
A+
pépé
tu trouveras ci-joint un lien vers un exemple d'extraction de mots dans une chaîne de caractères vers d'autres cellules.
C'est un peu une usine à gaz, mais cela semble fonctionner. Cela pourra peut-être te donner un début de solution.
A+
pépé
Désolé ce n'est vraiment pas facile à expliquez....
Alors je vous explique, je doit créé une liste de ville que je place en colonne, une ville occupe une cellule et je place les villes les unes en dessous des autres (en ligne quoi..) tel que:
Montréal
Toronto
Alifax
...
....
Je les places de cette manière car après je lance une recheche dans la colonne pour retrouver certaine ville...bref le pourquoi n'est pas très important mais je dois impérativement les placer de cette manière.
Le problème c'est que ces villes sont présentes dans une liste d'un autre classeur excel tirée d'un pdf dans lequel certainess cellules contienent non pas une ville mais 2, 3.... Donc ma question c'est comment faire pour copier, automatiquement les villes contenues dans une cellule dans d'autre cellule pour que chaque cellule ne contienne qu'une ville soit:
Nantes Toulouse Paris Lyon
se transforme en:
Nantes
Toulouse
Paris
Lyon
Voilà j'éspère que j'ai été plus clair et que quelqu'un aura une solution pour moi
Merci
Alors je vous explique, je doit créé une liste de ville que je place en colonne, une ville occupe une cellule et je place les villes les unes en dessous des autres (en ligne quoi..) tel que:
Montréal
Toronto
Alifax
...
....
Je les places de cette manière car après je lance une recheche dans la colonne pour retrouver certaine ville...bref le pourquoi n'est pas très important mais je dois impérativement les placer de cette manière.
Le problème c'est que ces villes sont présentes dans une liste d'un autre classeur excel tirée d'un pdf dans lequel certainess cellules contienent non pas une ville mais 2, 3.... Donc ma question c'est comment faire pour copier, automatiquement les villes contenues dans une cellule dans d'autre cellule pour que chaque cellule ne contienne qu'une ville soit:
Nantes Toulouse Paris Lyon
se transforme en:
Nantes
Toulouse
Paris
Lyon
Voilà j'éspère que j'ai été plus clair et que quelqu'un aura une solution pour moi
Merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
Voici le lien annoncé
https://www.cjoint.com/?fDmtd7JlB7
la manip s'appuie sur la recherche des espaces dans la chaîne de caractères (fonction CHERCHE
On utilise ensuite la fonction STXT pour extraire chaque mot
Problème : combien de mot as-tu par cellule au maximum.
L'exemple gère trois mots maximum par cellule
Je n'ai pas encore réussi à gérer de manière simple les messages d'erreur engendrés. Comment faire un test à partir de ces erreurs.
Bon courage
A+
pépé
Voici le lien annoncé
https://www.cjoint.com/?fDmtd7JlB7
la manip s'appuie sur la recherche des espaces dans la chaîne de caractères (fonction CHERCHE
On utilise ensuite la fonction STXT pour extraire chaque mot
Problème : combien de mot as-tu par cellule au maximum.
L'exemple gère trois mots maximum par cellule
Je n'ai pas encore réussi à gérer de manière simple les messages d'erreur engendrés. Comment faire un test à partir de ces erreurs.
Bon courage
A+
pépé
Bonjour,
j'ai refait un fichier un peu plus compréhensible (j'espère).
http://www.cijoint.fr/cjlink.php?file=cj200905/cijfoEVD09.xls
Ce fichier permet d'extraire quatre mots situés dans une même cellule.
A+
pépé
j'ai refait un fichier un peu plus compréhensible (j'espère).
http://www.cijoint.fr/cjlink.php?file=cj200905/cijfoEVD09.xls
Ce fichier permet d'extraire quatre mots situés dans une même cellule.
A+
pépé
Bonjour à tous,
Gael,
Comme apparement tu ne fais pas cette manip tous les jours, je te propose une méthode en 2 temps (XL<2007)
1/ tu sélectionnes toute la colonne avec les villes, puis données-convertir,délimité, espaces, terminer
tu as maintenant une ville par cellule da A1 à Ax
2/ tu peux ensuite utiliser cette macro: elle écrit les villes en 1 seule colonne; j'ai mis en colonne F (6=F)pour les essais
mais si tu veux en colonne A, tu mets 1 à la place de 6 et tu enlèves l'apostrophe devant plage.clearcontents
(voir lignes en gras)
Gael,
Comme apparement tu ne fais pas cette manip tous les jours, je te propose une méthode en 2 temps (XL<2007)
1/ tu sélectionnes toute la colonne avec les villes, puis données-convertir,délimité, espaces, terminer
tu as maintenant une ville par cellule da A1 à Ax
2/ tu peux ensuite utiliser cette macro: elle écrit les villes en 1 seule colonne; j'ai mis en colonne F (6=F)pour les essais
mais si tu veux en colonne A, tu mets 1 à la place de 6 et tu enlèves l'apostrophe devant plage.clearcontents
(voir lignes en gras)
Sub mettre_en_colonne()
Dim plage As Range
Dim tablo
Dim cptr As Long, lig As Long
Dim nbre_col As Byte, col As Byte
Range("A1").Select
Set plage = Range("A1").CurrentRegion
nbre_col = plage.Columns.Count
tablo = plage
Application.ScreenUpdating = False
'plage.clearcontents
lig = 1
For cptr = 1 To UBound(tablo)
For col = 1 To nbre_col
If tablo(cptr, col) <> "" Then
' 6 correspond à la colonne F
Cells(lig, 6) = tablo(cptr, col)
lig = lig + 1
End If
Next
Next
End Sub
Salut,
Après avoir utilisé la fonction Donnée/Convertir, tu peux utiliser le collage spécial et cocher transposer, à condition de procéder par ligne et edition/collage spécial/transposer.
Si tu prends toutes tes lignes, la première ligne sera transposée en colonne , mais la deuxième ligne se mettra sur la colonne suivante.
pourquoi ne pas utiliser le code macro de Michel en intégrant la convertion et la transpostion sur la colonne A
A+
Mike-31
Un problème sans solution est un problème mal posé (Einstein)
Après avoir utilisé la fonction Donnée/Convertir, tu peux utiliser le collage spécial et cocher transposer, à condition de procéder par ligne et edition/collage spécial/transposer.
Si tu prends toutes tes lignes, la première ligne sera transposée en colonne , mais la deuxième ligne se mettra sur la colonne suivante.
pourquoi ne pas utiliser le code macro de Michel en intégrant la convertion et la transpostion sur la colonne A
A+
Mike-31
Un problème sans solution est un problème mal posé (Einstein)
Bonsoir tout le monde,
autre proposition :
Elimine les espaces superflus gauche et droite.
eric
autre proposition :
Sub AligneEnColonne()
Dim i As Long, j As Long, ch() As String
Application.ScreenUpdating = False
For i = [A65536].End(xlUp).Row To 1 Step -1
ch = Split(Trim(Cells(i, 1)), " ")
If UBound(ch) Then
For j = UBound(ch) To 1 Step -1
Cells(i, 1).Offset(1, 0).Insert Shift:=xlDown
Cells(i, 1).Offset(1, 0) = ch(j)
Next j
Cells(i, 1) = ch(0)
End If
Next i
Application.ScreenUpdating = True
End Sub
Elimine les espaces superflus gauche et droite.
eric