Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

séparer du texte sur plusieurs

  • Initiateur de la discussion Initiateur de la discussion SUM
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

SUM

XLDnaute Occasionnel
bonsoir le forum,

j'ai réalisé une petite macro mais elle a un petit défault que je voudrais éliminer. Effet le contenu de la cellule A2 et séparer mais chaque mot entre espace occupe une cellule après lancement de la macro. or, je voudrais que seules 3 cellules de la même ligne soient occupés.
A pour la date
B pour voiture camion etc.
C pour la note ou une remarque

Merci
 

Pièces jointes

Re : séparer du texte sur plusieurs

salut SUM
juste pour participer lol
tu pourrais rajouter
Code:
 Columns("D:G").ClearContents
en fin de macro,ce qui à pour effet d'effacer les données en trop

Bonne nuit
 
Re : séparer du texte sur plusieurs

re
arff une petite macro lol
Code:
Sub test()
Dim tabtemp As Variant
Dim TabRecup As Variant
Dim TabFinal() As Variant
Dim L As Integer, Item As Integer
Dim x As Integer
Dim rep As Integer
 rep = Application.CountA(Range("A2:A1000")) [COLOR=Green]'on teste s'il y a des données à convertir[/COLOR]
If rep < 1 Then Exit Sub  [COLOR=Green]'sinon on quitte[/COLOR]
'[COLOR=Green]ici on remplit le tableau[/COLOR]
tabtemp = Range("A2:A" & Range("A65536").End(xlUp).Row).Value
For L = 1 To UBound(tabtemp, 1) [COLOR=Green]'pour chaque ligne du tableau temporaire[/COLOR]
 TabRecup = Split(tabtemp(L, 1), Chr(32)) '[COLOR=Green]on récupére les éléments via Split dans un tableau[/COLOR]
 
 If UBound(TabRecup, 1) = 0 Then Exit Sub [COLOR=Green]'si pas de donnée on quitte[/COLOR]
 ReDim Preserve TabFinal(3, x) [COLOR=Green]'on redimensionne[/COLOR]
 For Item = 0 To 2 [COLOR=Green]'on transfere les trois premieres lignes[/COLOR]
      TabFinal(Item, x) = TabRecup(Item)
 Next
             x = x + 1 [COLOR=Green]'on ajoute une colonne[/COLOR]
     Erase TabRecup [COLOR=Green]'on efface le tableau[/COLOR]
  Next

Application.ScreenUpdating = False [COLOR=Green]'on inhibe le raffraichissement de la fenêtre[/COLOR]
      Range("A2").Resize(UBound(TabFinal, 2) + 1, 3) =         Application.Transpose(TabFinal) [COLOR=Green]'ici on transpose le tableau[/COLOR]
  Application.ScreenUpdating = True '[COLOR=Green]on réactive[/COLOR]
End Sub
bonne nuit
 
Re : séparer du texte sur plusieurs


Merci bcp pour ton aide.
J'ai mal exposé mon problème et m'en excuse d'avance. en fait, j'aurais voulu que pour :28.12.2006 voiture client vient la chercher

A1 on a la date
A2 voiture
A3 client vient la chercher (et pas seulement le client)

de quelle manière pourrais-je modifier ta macro pour obtenir ce résultat

Merci
 
Re : séparer du texte sur plusieurs

Bonsoir le fil, Chti60

Jean Marie,
Bel exercice, comme d'hab et merci de tes leçons..mais pourquoi ne recupere-t-on que 3 mots (ds 3 colonnes) quand la cellule de depart en contient 6
Sans doute un pb avec la ligne :
For Item = 0 To 2 'on transfere les trois premieres lignes
TabFinal(Item, x) = TabRecup(Item)
Mais si on passe le 'For item' de 0 à 5 il plante sur "indice hors selection"

Ne peut-on pas indexer le compteur sur le UBound(TabRecup, 1).

Merci de tes eclaircissements
PG
 
Re : séparer du texte sur plusieurs

Code:
Sub eclate()
c = 1
esp = 0
a2$ = Range("a2").Value
For t = 1 To Len(a2$)
If (Mid(a2$, t, 1) = Chr$(32) And esp < 2) Then
Cells(7, c).Value = a7$
a7$ = ""
esp = esp + 1
c = c + 1
Else
a7$ = a7$ & Mid(a2$, t, 1)
End If
Next
a7$ = a7$ & Mid(a2$, t, 1)
Cells(7, 3).Value = a7$
End Sub
ceci fait ce que tu demande (un peu bourrin mais )
 
Re : séparer du texte sur plusieurs

bonjour SUM
salut Jeanmarie
salut allegro
salur G David

ma version

pour etre un peu plus propre a ajouter en tete de la macro

Range("A2:C" & Range("A65536").End(xlUp).Row).ClearComments
 

Pièces jointes

Dernière édition:
Re : séparer du texte sur plusieurs

bonjour tout le monde

une autre syntaxe possible.

Code:
Dim c As Range

For Each c In Range("a2:a" & Range("a65536").End(xlUp).Row)
    Range(c, c.Offset(0, 2)) = Split(c, " ")
Next c


bonne journée à tous

salut
 
Re : séparer du texte sur plusieurs

bonjour Hervé

merci pour le Split (je vais jeter un oeil)

au passage ton code m'a rappelé ma (très très) mauvaise habitude de negliger la declaration des variables

donc en guise de mea culpa

ma derniere version
 

Pièces jointes

Re : séparer du texte sur plusieurs

re a tous

pour ceux qui comme moi seraient interessés par la syntaxe d'Hervé

adaptation au fichier:

Code:
Sub essai()
Dim c As Range
For Each c In Range("J1:J" & Range("J65536").End(xlUp).Row)
    Range(c, c.Offset(0, 2)) = Split(c, " ", 3)
Next c
End Sub

J au lieu de a parceque les textes sont dans la colonne J
et ajout de 3 dans le split pour avoir la fin du texte en entier

toutefois le code est piégé par les 2 ou 3 espaces situés après la date dans la derniere ligne (et je n'ai pas réussi à y remedier)
 
Re : séparer du texte sur plusieurs

bonjour tout le monde

pierrejean, pourrais tu m'expliquer stp l'utiliter du 3ème argument dans le split.

je n'ai pas bien compris cette phrase : et ajout de 3 dans le split pour avoir la fin du texte en entier

d'avance je t'en remercie 🙂

salut

 
Re : séparer du texte sur plusieurs

bonjour Hervé

moi donner des explications à Hervé !!!

le monde à l'envers

selon l'aide de Split:
limitFacultatif. Nombre de sous-chaînes à renvoyer; -1 indique que toutes les sous-chaînes sont renvoyées.
le troisieme terme y correspond
j'ai mis 3 afin que le split s'arrete apres le 2eme espace

pour t'en convaincre vois le fichier inclus et teste

en F liste originale (pour memoire)
en J la même liste (pour le test)

lancer les macros essai1 et essai2 (apres avoir remis en J la liste originale) et comparer les resultats (mentionnés en O et U)
 

Pièces jointes

Re : séparer du texte sur plusieurs

re

merci pierrejean pour ton explication, je ne connaissais pas cette possibilité, et je n'ai plus l'aide vba.

tu viens de m'ouvrir de nouveaux horizons.

salut à toi
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…