Mettre un espace entre les mots
Bonjour,
J'ai une liste de mots (colonne T), je souhaiterais avoir un espace entre chaque mot.
Et mettre ces mots (ou nombre) dans la colonne S
Par contre, ça ne passe pas avec les nombres,....exemple:
Marée basse 01h521.11m
"Marée (ok) basse(ok) 01h52(?)1.11m" (entre 01h52 et 1.11m)
Windows / Chrome 153.0.0.0
18 réponses
Le problème porte sur l’insertion d’espaces entre les mots d’une liste située en colonne T et leur reproduction en colonne S, gérant des éléments numériques qui ne passent pas dans la mise en forme. Plusieurs réponses proposent des pistes: une macro VBA pour séparer et recomposer les chaînes, une formule simple ou des fonctions avancées comme GAUCHE, STXT, DROITE, ou LET/REDUCE sur Excel 365. Parmi les contributions, on trouve un exemple de Sub test, des formules utilisant STXT et DROITE, et des propositions autour de fonctions d’Excel 365 comme REDUCE et LET, sans consensus sur la meilleure approche.
-
Avec une macro :
Sub test() Dim C As Range, L As Long Range("S5", Cells(Rows.Count, "S").End(xlUp)) = "" L = 4 For Each C In Range("T5", Cells(Rows.Count, "T").End(xlUp)) If Left(C, 5) <> "Marée" Then L = L + 1 Cells(L, "S") = C Else tabl = Split(C, " ") L = L + 1 Cells(L, "S") = Application.Proper(tabl(1)) L = L + 1 Cells(L, "S") = Left(tabl(2), 5) L = L + 1 Cells(L, "S") = Mid(C, 18, 99) End If Next C End SubDaniel
-
Modérateur
Bonjour,
Je ne pratique pas les macros, mais avec une formule de base on ferait ="Marée "&S6&" "&S7&" "&S8
-
Bonjour
Pas très clair !
Peux tu envoyer un bout de fichier avec les différents cas rencontrés
Pour envoyer ton fichier, tu peux utiliser https://cijoint.org/
Cdlmt
-
Bonjour
une piste
=STXT(S2;1;TROUVE("h";S2)-3)&" "&STXT(S2;TROUVE("h";S2)-3;6)&" "&DROITE(S2;6) -
Bonjour Guy,
Il me semble que tu as Excel 365. Essaie :
=LET(tbl;REDUCE("";T5:T208;LAMBDA(x;y;SI(GAUCHE(y;5)="marée";ASSEMB.V(x;FRACTIONNER.TEXTE(y;;" "));ASSEMB.V(x;y))));FILTRE(tbl;tbl<>"marée"))https://www.swisstransfer.com/dl/01a085a8-8653-724a-840d-70268184f303
Daniel
-
Je regarde ça en fin d'après-midi
-
Bonjour à tous
Perso je ne comprends pas il y a déjà des espaces dans la colonne T !?
Dans le cas où ce serait tout attaché (Maréebasse01h521.11m)
une simple formule style
=GAUCHE(T6;5)&" "& STXT( T6;6;5)& " " &STXT(T6;11;5)& " "&DROITE(T6;5)
doit permettre d'insérer des blancs
Cdlmnt
Via
-
Bonjour,
à ce que je comprends, T a été fait à la main à titre d'exemple s'agissant d'extraire et concaténer les "mots" en S et qui ont toujours la même structure, 15 lignes par jour.
D'ailleurs pas formidable, ne serait-il pas meilleur sur une autre feuille de ne ramener par ligne que les informations souhaitées (date, avec 4 lignes pour les informations des 4 marées hautes et basses du jour)? -
@brucine
salut brucine
qui ont toujours la même structure, 15 lignes par jour.
eh non ! voir samedi 5, vendredi 11 etc ...
Cdlmnt
-
@ccm81
Bonjour,
Oui, je suis blond, j'ai compté bêtement 4 marées par jour toutes les 6 heures sans réfléchir que si la première de la journée civile commençait après une certaine heure la quatrième était le lendemain.
-
-
Bonjour,
Pour avoir déjà travaillé sur la question, il me semble qu'il faut partir de la colonne T pour obtenir exactement le résultat de la colonne S. Suppression du mot "Marée", et découpe par mot pour le reste et oui, il y des espaces.
cf. : https://forums.commentcamarche.net/forum/affich-38292397-separer-les-mots-des-cellules#p38293440
Daniel
-
Sinon, avec une macro :
Sub test() Dim C As Range, L As Long Range("S5", Cells(Rows.Count, "S").End(xlUp)) = "" L = 4 For Each C In Range("T5", Cells(Rows.Count, "T").End(xlUp)) If Left(C, 5) <> "Marée" Then L = L + 1 Cells(L, "S") = C Else tabl = Split(C, " ") For i = 1 To UBound(tabl) L = L + 1 Cells(L, "S") = tabl(i) If i = 1 Then Cells(L, "S") = Application.Proper(Cells(L, "S")) Next i End If Next C End SubDaniel
-
-
@Guy72
Guy, Dans ton classeur de test, il y a un espace entre l'heure et la la hauteur et le résultat est correct :
Qu'est-ce que tu veux dire par "ça ne met pas d'espace" ? Qu'il n'y en pas dans le classeur entre l'heure et la hauteur?
Daniel
-
-
Q?. As tu des dates (au sens d'excel) dans le vrai fichier à la place de "mardi 1" du texte pur?
Cdlmt
-
-
-
@Guy72
Je ne comprends pas !
"Ça ne met pas d'espace entre l'heure et la hauteur"
En U6 ma formule ="Marée basse "&S7&" "&S8 met bien un espace ...
Je te soupçonne d'avoir oublié le &" " !
"Donc, il maque 2 lignes à chaque fois" !
Des lignes qui devraient contenir quoi ?
Je crois bien que tu as besoin de mon fichier ...
https://transfert.free.fr/KW9lLMM -
@Raymond PENTIER
1) Mes données ne sont pas dans ton fichier sont les mêmes que tes résultats mais sans espace entre les heures et les hauteurs
mardi 1Marée basse 01h521.11m
Marée haute 07h345.91m
89
Marée basse 14h101.28m
Marée haute 19h595.98m
85Non, dans ton fichier, tes résultats doivent être en colonne T
Ça, ça peut aller (il suffit de modifier)
Après il faudrait les mettre en "vertical et séparés" en colonne S
Ce que je désir obtenir est en colonne S.
-
-
Voilà la procédure que je fais :
1) Je vais sur le site : Heures des marées
2) Je rétréci le site le plus possible à droite de l'écran, et je sélectionne à partir du premier jour jusqu'à la fin.3) Je colle tout sur Excel 365 dans la cellule "Y5".
4) Pour que je puisse obtenir ce que je veux, je suis obligé de séparer par un espace entre les heures et la hauteur d'eau.
5) Puis je copie (à la main) morceau par morceau à partir de la cellule "S5".
6) Ce qui me donne ce résultat dans les cellules d'une autre feuille :
-
-
Bonjour à tous,
Guy, si ça te mets "#NOM" c'est que ta version n'est pas Excel 365. Ca montre que tu n'as pas essayé la formule du message #5.
Essaie la macro :
Sub test() Dim C As Range, L As Long Range("S5", Cells(Rows.Count, "S").End(xlUp)) = "" L = 4 For Each C In Range("T5", Cells(Rows.Count, "T").End(xlUp)) If Left(C, 5) <> "Marée" Then L = L + 1 Cells(L, "S") = C Else tabl = Split(C, " ") L = L + 1 Cells(L, "S") = Application.Proper(tabl(1)) L = L + 1 Cells(L, "S") = Left(tabl(2), 5) L = L + 1 Cells(L, "S") = Mid(C, 18, 99) End If Next C End Suboups, avec le fichier :
https://www.swisstransfer.com/dl/01a08a22-1e9f-737a-aaef-8284145c5fa6
Daniel
-
-
Bonjour
Voici ce qu'on peut faire par formules simplement sur un excel d'avant 365
https://we.tl/t-7pwaLhTgHg9FCdVZ
A partir de l'extraction du site sur une feuille on transpose les données utiles dans l'autre feuille en fonction des jours (formule pour avoir la liste des jours idem au site en colonne B, pour octobre il suffira de changer le 9 en 10 dans la formule etc)
Cdlmnt
Via
-
Ce que je récupère du site c'est ça :
https://transfert.free.fr/4TNYTxb -
@Guy72
Ben oui ! Prend la peine de cliquer sur le grand bouton rouge "Télécharger", après avoir fait défiler l'écran vers le bas ...
-
-
Voici :
https://www.swisstransfer.com/dl/01a08bcb-afc2-719e-a402-24f0bac1e443
Sub test() Dim C As Range, L As Long Range("S5", Cells(Rows.Count, "S").End(xlUp)) = "" L = 4 For Each C In Range("T5", Cells(Rows.Count, "T").End(xlUp)) If Left(C, 5) <> "Marée" Then L = L + 1 Cells(L, "S") = C Else L = L + 1 Cells(L, "S") = Application.Proper(Mid(C, 7, 5)) L = L + 1 Cells(L, "S") = Mid(C, 12, 5) L = L + 1 Cells(L, "S") = Mid(C, 17, 99) End If Next C End SubDaniel
-
Parfait !!!
Merci pour tout





