70 caractère dans un ecellule a mettre dans 3 cellule
Résolu/Fermé
Xavounette
Messages postés
1
Date d'inscription
mardi 11 avril 2017
Statut
Membre
Dernière intervention
11 avril 2017
-
11 avril 2017 à 17:04
xavounette - 13 avril 2017 à 16:34
xavounette - 13 avril 2017 à 16:34
A voir également:
- 70 caractère dans un ecellule a mettre dans 3 cellule
- Caractère ascii - Guide
- Aller à la ligne dans une cellule excel - Guide
- Caractere speciaux - Guide
- Caractère spéciaux - Guide
- Excel cellule couleur si condition texte - Guide
2 réponses
ccm81
Messages postés
10900
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
2 novembre 2024
2 425
11 avril 2017 à 18:23
11 avril 2017 à 18:23
Bonjour
Un exemple rapide avec macro (à tester)
http://www.cjoint.com/c/GDlqw2D8qjs
Cdlmnt
Un exemple rapide avec macro (à tester)
http://www.cjoint.com/c/GDlqw2D8qjs
Cdlmnt
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 708
12 avril 2017 à 10:34
12 avril 2017 à 10:34
Bonjour à tous,
Je t'ai mis trois méthodes pour résoudre ton projet :
1) méthode excel formule
En B2
En C2
En D2
2) formule personnalisée vba
3) macro VBA comme ccm81 que je salue
Le classeur exemple : https://www.cjoint.com/c/GDmiFFatTNl
--Toujours zen
La perfection est atteinte, non pas lorsqu'il n'y a plus rien à ajouter, mais lorsqu'il n'y a plus rien à retirer. Antoine de Saint-Exupéry
Je t'ai mis trois méthodes pour résoudre ton projet :
1) méthode excel formule
En B2
=STXT($A2;1;SI(NBCAR($A2)<30;NBCAR($A2);TROUVE(" ";SUBSTITUE(STXT($A2;1;30);" ";" ";30-NBCAR(SUBSTITUE(STXT($A2;1;30);" ";""))))-1))
En C2
=STXT($A2;2+NBCAR($B2);SI(NBCAR(STXT($A2;1+NBCAR($B2);30))<30;NBCAR(STXT($A2;1+NBCAR($B2);30));CHERCHE(" ";SUBSTITUE(STXT(STXT($A2;2+NBCAR($B2);30);1;30);" ";" ");NBCAR(SUBSTITUE(STXT(STXT($A2;2+NBCAR($B2);30);1;30);" ";""))-5)))
En D2
=STXT($A2;2+NBCAR($B2)+NBCAR($C2);20)
2) formule personnalisée vba
Public Function découpe(cel As Range, elm As Integer) Dim col As Long, lds As Long, pos As Long pos = 1: lds = 0 For col = 1 To elm pos = pos + lds If Len(Mid(cel, pos)) < 30 Then lds = Len(Mid(cel, pos)) Else lds = InStrRev(Mid(cel, pos, 30), " ") End If Next col découpe = Mid(cel, pos, lds) End FunctionPour l'appeler formule à tirer sur toute la plage résultat
=découpe($A2;COLONNE()-1)
3) macro VBA comme ccm81 que je salue
Public Sub découpe_gb() Const deb As Long = 2, clt As Long = 1 Dim col As Long, der As Long, lds As Long, lig As Long, pos As Long, tbd der = Cells(Rows.Count, clt).End(xlUp).Row lig = der - deb + 1 tbd = Cells(deb, clt).Resize(lig, 1).Value ReDim tbr(1 To lig, 1 To 3) For lig = 1 To UBound(tbd) pos = 1 For col = 1 To 3 If Len(Mid(tbd(lig, 1), pos)) < 30 Then tbr(lig, col) = Mid(tbd(lig, 1), pos) pos = pos + Len(tbr(lig, col)) Else lds = InStrRev(Mid(tbd(lig, 1), pos, 30), " ") tbr(lig, col) = Mid(tbd(lig, 1), pos, lds - 1) pos = pos + lds End If Next col Next lig Cells(deb, clt + 1).Resize(UBound(tbr), UBound(tbr, 2)) = tbr End Sub
Le classeur exemple : https://www.cjoint.com/c/GDmiFFatTNl
--Toujours zen
La perfection est atteinte, non pas lorsqu'il n'y a plus rien à ajouter, mais lorsqu'il n'y a plus rien à retirer. Antoine de Saint-Exupéry