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. Parfait !!!
    Merci pour tout

    0
    1. 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
      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. Contributeur
          @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. 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 à 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
        2. 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
        3. 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
        4. 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. Contributeur

            *

            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. Contributeur
              @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
          2. 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
          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. 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
          5. 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
          6. Je regarde ça en fin d'après-midi

            0
            1. Bonjour

              une piste 

              =STXT(S2;1;TROUVE("h";S2)-3)&" "&STXT(S2;TROUVE("h";S2)-3;6)&" "&DROITE(S2;6)
              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. Modérateur

                Bonjour,

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


                0