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)

Espace


Windows / Chrome 153.0.0.0

18 réponses

Résumé de la discussion

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.

Bobot (l’IA à votre service)
  1. 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 Sub
    

    Daniel


    1
    1. Je ne vois que ça :

      en S5 -> mardi 1
      en S6 -> Basse01H521.11M
      c'est tout

      0
  2. Modérateur

    Bonjour,

    Je ne pratique pas les macros, mais avec une formule de base on ferait ="Marée "&S6&" "&S7&" "&S8


    0
    1. 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

      0
      1. Modérateur

        le fichier est en lien en fin de la question.

        0
    2. Bonjour

      une piste 

      =STXT(S2;1;TROUVE("h";S2)-3)&" "&STXT(S2;TROUVE("h";S2)-3;6)&" "&DROITE(S2;6)
      0
      1. Je regarde ça en fin d'après-midi

        0
        1. 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


          0
          1. 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)?

            0
          2. @brucine

            salut brucine

            qui ont toujours la même structure, 15 lignes par jour.

            eh non ! voir samedi 5, vendredi 11 etc ...

            Cdlmnt

            0
          3. @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.

            0
        2. 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


          0
          1. Le problème, c'est que des fois j'ai des espaces et des fois pas ?

            0
        3. 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 Sub
          

          Daniel


          0
          1. Dans la colonne "S" 
            Ça ne met pas d'espace entre" l'heure et la hauteur"
            Donc, il maque 2 lignes à chaque fois

            0
          2. @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

            0
        4. Q?. As tu des dates (au sens d'excel)  dans le vrai fichier à la place de "mardi 1" du texte pur?

          Cdlmt

          0
          1. Tout est en texte

            0
        5. *

          Bonjour Guy. 

          Est-ce que ces formules te conviennent ?

          Cordialement.


          0
          1. Pas tout à fait 

            Dans la colonne "S" 
            Ça ne met pas d'espace entre" l'heure et la hauteur"
            Donc, il maque 2 lignes à chaque fois

            0
          2. @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

            0
          3. @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
            85

            Non, 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.

            0
        6. 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 :
           

          0
          1. Pas sûr d'avoir compris SANS espace, utilise la formule :

            =LET(prv;GAUCHE(T5:T208;17)&" "&STXT(T5:T208;18;99);tbl;REDUCE("";prv;LAMBDA(x;y;SI(GAUCHE(y;5)="marée";ASSEMB.V(x;FRACTIONNER.TEXTE(y;;" "));ASSEMB.V(x;y))));res;FILTRE(tbl;tbl<>"marée");res)

            Daniel 


            0
            1. Ou je mets la formule ?
              En S5, j'ai ça :
              #NOM?

              0
          2. 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 Sub
            

            oups, avec le fichier :

            https://www.swisstransfer.com/dl/01a08a22-1e9f-737a-aaef-8284145c5fa6

            Daniel


            0
            1. Bonjour,

              Ma version apparemment est : Excel 2019
              Je ne peux pas ouvrir le fichier.
              Si j'essais la macro, dans la colonne S, j'obtiens simplement la copie des 2 première lignes :
              mardi 1
              Basse01H521.11M

              Ouverture


               

              0
          3. Voilà ce que j'obtiens en exécutant la macro :

            Partage le classeur avec lequel tu fais le test. On n'en sortira pas autrement.

            Daniel


            0
            1. 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


              0
              1. @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 ...

                0
            2. 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 Sub
              

              Daniel 


              0