Excel - Eclater les valeurs d'une cellule
GAELAMONTREAL
-
eriiic Messages postés 24581 Date d'inscription Statut Contributeur Dernière intervention -
eriiic Messages postés 24581 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
Configuration: Windows Vista Firefox 3.0.5 excel 2003, 2007
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. -
Bonjour Gael,
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 !
-
-
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é -
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 -
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é -
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é -
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)
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) -
Bonsoir tout le monde,
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