Séparer les mots des cellules
RésoluGuy72 Messages postés 982 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je souhaiterais séparer les mots d'une cellule en plusieurs cellules.
Marées
Windows / Chrome 148.0.0.0
- Séparer les mots des cellules
- Séparer pdf - Guide
- Verrouiller des cellules excel - Guide
- Excel additionner des cellules - Guide
- Mots de passe enregistrés - Guide
- Fusionner deux cellules excel - Guide
14 réponses
Bonjour,
Avec excel 2024 ou Excel 365, une seule formule :
=EXCLURE(REDUCE("";SIERREUR(SUBSTITUE(TEXTE.AVANT(D2:D205;" ";3);"Marée ";"");D2:D205);LAMBDA(x;y;SI(OU(NBCAR(y)<>NBCAR(SUBSTITUE(y;"basse";""));NBCAR(y)<>NBCAR(SUBSTITUE(y;"haute";"")));ASSEMB.V(x;NOMPROPRE(FRACTIONNER.TEXTE(y;;" ")));ASSEMB.V(x;y))));1)
Daniel
Essaie celle-ci (résultat à partir de I3) :
Sub test()
Dim Tbl(), C As Range, I As Long, Tabl
I = -1
For Each C In Range("D2", Cells(Rows.Count, 4).End(xlUp))
If IsNumeric(Right(C, 1)) Then
I = I + 1
ReDim Preserve Tbl(I)
Tbl(I) = C
Else
Tabl = Split(C, " ")
I = I + 1
ReDim Preserve Tbl(I)
Tbl(I) = Application.Proper(Tabl(1))
I = I + 1
ReDim Preserve Tbl(I)
Tbl(I) = Tabl(2)
End If
Next C
Range("I3").Resize(UBound(Tbl)) = Application.Transpose(Tbl)
End Sub
Daniel
Bonjour,
Essaie :
Sub test()
Dim Tbl(), C As Range, I As Long, Tabl
I = -1
For Each C In Range("T5", Cells(Rows.Count, "T").End(xlUp))
If IsNumeric(Right(C, 1)) Then
I = I + 1
ReDim Preserve Tbl(I)
Tbl(I) = C
Else
Tabl = Split(C, " ")
I = I + 1
ReDim Preserve Tbl(I)
Tbl(I) = Application.Proper(Tabl(1))
I = I + 1
ReDim Preserve Tbl(I)
Tbl(I) = Tabl(2)
I = I + 1
ReDim Preserve Tbl(I)
Tbl(I) = Tabl(3)
End If
Next C
Range("S5").Resize(UBound(Tbl)) = Application.Transpose(Tbl)
End Sub
Daniel
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionVoici la macro commentée :
Sub test()
Dim Tbl(), C As Range, I As Long, Tabl
I = -1
'Boucle sur les cellules de la colonne T
For Each C In Range("T5", Cells(Rows.Count, "T").End(xlUp))
'si la position de droite est numérique
'(cas de la date ou du coefficient de marée)
If IsNumeric(Right(C, 1)) Then
'ajout du contenu de la cellule dans la table
I = I + 1
ReDim Preserve Tbl(I)
Tbl(I) = C
Else
'sinon, on découpe le contenu de la cellule là où il y a un espace
'on ajoute une à une les parties obtenues sauf la première (tbl(0) = "Marée")
Tabl = Split(C, " ")
I = I + 1
ReDim Preserve Tbl(I)
Tbl(I) = Application.Proper(Tabl(1))
I = I + 1
ReDim Preserve Tbl(I)
Tbl(I) = Tabl(2)
I = I + 1
ReDim Preserve Tbl(I)
Tbl(I) = Tabl(3)
End If
Next C
'Ecriture de la table sur la feuille
'le fait d'utiliser une table plutôt que d'écrire directement sur la feuille
'fait gagner du temps
Range("S5").Resize(UBound(Tbl)) = Application.Transpose(Tbl)
End Sub
La macro se base sur l'utilisation de la commande "Split" pour découper le contenu de la cellule en plusieurs segments :
La ligne :
Tabl = Split("Marée basse 00h00 1.72m", " ")
donne :
Daniel
Bonjour,
Le souci est qu'on ne sait pas d'où sont extraites les valeurs de la colonne D.
à partir de ces données brutes, modifier les intitulés colonne A en conséquence, entrer les formules des colonnes E2 à E8, sélectionner ce bloc de 7 cellules et le copier autant de fois que nécessaire vers le bas.
https://cijoint.org/r/MBbCBfFb#VHSvNLBTo1DHOEwELntqIjQ4zPHifnksnCxyxBTDTaA=
Bonjour
Les valeurs de la colonne D sont extraites du site suivant:
Heures des marées
il faut mettre la page du site la plus petite possible.
Je sélectionne de Lundi 1 à 69 du Mardi 30.
Je copie et je mets ça dans la cellule D1
je mets cette formule dans quelle cellule ?
J'ai Excel 2019.
Sinon, j'ai cette macro pour 1 jour (macro de novice)
Sub Marées()
'
' Marées Macro
'
'
Range("H1").Select
Selection.Copy
Range("L1").Select
ActiveSheet.Paste
Range("H2").Select
Application.CutCopyMode = False
Selection.TextToColumns Destination:=Range("H2"), DataType:=xlFixedWidth, _
FieldInfo:=Array(Array(0, 1), Array(5, 1), Array(11, 1), Array(17, 1)), _
TrailingMinusNumbers:=True
Range("H3").Select
Selection.TextToColumns Destination:=Range("H3"), DataType:=xlFixedWidth, _
FieldInfo:=Array(Array(0, 1), Array(5, 1), Array(11, 1), Array(17, 1)), _
TrailingMinusNumbers:=True
Range("I2:K2").Select
Selection.Copy
Range("L2").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
Range("I3:K3").Select
Application.CutCopyMode = False
Selection.Copy
Range("L5").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
Range("H4").Select
Application.CutCopyMode = False
Selection.Copy
Range("L8").Select
ActiveSheet.Paste
Range("H5").Select
Application.CutCopyMode = False
Selection.TextToColumns Destination:=Range("H5"), DataType:=xlFixedWidth, _
FieldInfo:=Array(Array(0, 1), Array(5, 1), Array(11, 1), Array(17, 1)), _
TrailingMinusNumbers:=True
Range("H6").Select
Selection.TextToColumns Destination:=Range("H6"), DataType:=xlFixedWidth, _
FieldInfo:=Array(Array(0, 1), Array(5, 1), Array(11, 1), Array(17, 1)), _
TrailingMinusNumbers:=True
Range("I5:K5").Select
Selection.Copy
Range("L9").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
Range("I6:K6").Select
Application.CutCopyMode = False
Selection.Copy
Range("L12").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
Range("H7").Select
Application.CutCopyMode = False
Selection.Copy
Range("L15").Select
ActiveSheet.Paste
End Sub
J'ai testé...impeccable...mais....
Pour mettre la macro dans mon fichier
il faut que le résultat soit en S5 à place de I3 (ça fonctionne)
Mettre la liste de départ en T5 au lieu de D2, et là, ça ne fonctionne plus.
Que faut-il modifier ?
Bonjour,
Essaie :
Sub test()
Dim Tbl(), C As Range, I As Long, Tabl
I = -1
For Each C In Range("T5", Cells(Rows.Count, "T").End(xlUp))
If IsNumeric(Right(C, 1)) Then
I = I + 1
ReDim Preserve Tbl(I)
Tbl(I) = C
Else
Tabl = Split(C, " ")
I = I + 1
ReDim Preserve Tbl(I)
Tbl(I) = Application.Proper(Tabl(1))
I = I + 1
ReDim Preserve Tbl(I)
Tbl(I) = Tabl(2)
End If
Next C
Range("S5").Resize(UBound(Tbl)) = Application.Transpose(Tbl)
End Sub
Il faut indiquer "T" ou 20 dans :
For Each C In Range("T5", Cells(Rows.Count, "T").End(xlUp))
au lieu de "D" (ou 4)
Daniel
Merci
Impeccable !!!!!
J'aurais pu aller plus loin, je n'ai pas vu de "T" ailleurs.
Je n'ai pas fait le rapprochement que le chiffre 4 correspondait à la colonne "T".
Merci encore
Bonjour Daniel
Pas de problème, ça fonctionne, mais.....
J'ai oublié 4 mots dans le résultat que je voulais. :-((
J'ai essayé de voir la macro pas à pas, mais ça ne fonctionne pas, je ne vois rien bouger.
Je t'envoie un nouveau fichier (j'espère que ça va être possible de modifier ?)
MaréesTest-7Juin

