Besoin d'aide

Mouty David

XLDnaute Nouveau
Bonjour,

Je cherche a extraire différents nombre d'une cellule en les séparant
Voici comment sont mes données :

A1 : 09 / 06 / 02 / 19 TK2+P2 Cig et j'aimerai que cela donne B1 09, C1 06, D1 02 et E1 19

Quelqu'un peut-il m'aider

Merci à vous
 

Iznogood1

XLDnaute Impliqué
Bonjour,

peux-tu préciser :
Le contenu commence-t-il toujours par un nombre ?
Les nombres cherchés sont-ils tous séparés par " / " ?
Les "/" sont-ils toujours entourés d'espaces ?

Enfin, peux-tu supprimer ton message de 8 heures ce matin pour conserver un forume clair ?
 

Mouty David

XLDnaute Nouveau
Bonjour,

Merci pour votre réponse,
Chaque nombre est séparé en effet par " / " avec espace sauf le dernier. Les mentions TK et P peuvent aussi se retrouver entre la suite de nombre si jamais selon la commandes des filiales. (Pour info cette suite de nombre correspond à des filiales pour un chargement de camions et TK comme P représente une sorte de marchandise) je cherche à isoler les filiales afin de définir par la suite quel fournisseur de transport serait le meilleurs marché sachant qu'une filiales de l'ensemble (la plus chère ) définira le prix.

Pour le premier message, je vais l'enlever

A bientôt
 

Mouty David

XLDnaute Nouveau
Bonjour à tous

J'apprécie votre aide. J'arrive maintenant à séparer en quelque clic les données via convertir.
Malgré cela, y a t'il un moyen d'effectuer cette conversion de façon automatique sur plusieurs lignes.
Voila par exemple comment je peux récupérer des données pour cette après-midi.
L'idée serait de coller ces infos dans un fichier et qu'automatiquement chaque ligne soit triées.

Merci Bcp

Tour
09 / 06 / 02 / 19 TK2+P2 Cig
21 TK1+P2 Cig / 23 TK2+P2 Cig
62 TK1+P1 Cig / 24 TK1 Cig
25 TK1+P1 Cig / 64 TK1+P2
74 TK1+P1 / 60 TK1 / 76 TKAtt
77 TK1 / 11 TKP2 Cig
18 TK2+P3 / 51 TK1+P1 / + 41 TK2+P2$
39 TK1+P2 Cig / 53 TK2+P2$
53 / 41 Cig / + 18 / Swissclima
 

job75

XLDnaute Barbatruc
Re,

- les données étant en Feuil1 créer une Feuil2 et collez-y les données sources

- sur Feuil2, touches Ctrl+H pour supprimer les "/" puis les "+"

- onglet DONNÉES => Convertir avec comme séparateur l'espace et restitution en A1

- touche F5 => Cellules => sélectionner les constantes textes de Feuil2

- clic droit => Supprimer en décalant vers la gauche.

A+
 

job75

XLDnaute Barbatruc
Re,

Du VBA pour automatiser tout ça :
Code:
Sub Convertir()
With Feuil2.Cells
  .Clear 'RAZ
  [A:A].Copy .Cells(1)
  .Replace "/", ""
  .Replace "+", ""
  .Columns(1).TextToColumns .Cells(1), xlDelimited, Space:=True
  On Error Resume Next
  .SpecialCells(xlCellTypeConstants, 2).ClearContents
  .SpecialCells(xlCellTypeBlanks).Delete xlToLeft
  .ColumnWidth = 10.71 '.Columns.AutoFit
  .Parent.Activate
End With
End Sub
Fichier joint.

A+
 

Pièces jointes

  • Convertir(1).xlsm
    24.2 KB · Affichages: 29

job75

XLDnaute Barbatruc
Re,

En fait il n'y a pas besoin de supprimer les "/" et "+" puisque les valeurs textes sont supprimées :
Code:
Sub Convertir()
With Feuil2.Cells
  .Clear 'RAZ
  [A:A].Copy .Cells(1)
  .Columns(1).TextToColumns .Cells(1), xlDelimited, Space:=True
  On Error Resume Next
  .SpecialCells(xlCellTypeConstants, 2).ClearContents 'valeurs textes
  .SpecialCells(xlCellTypeBlanks).Delete xlToLeft 'cellules vides
  .ColumnWidth = 10.71 '.Columns.AutoFit
  .Parent.Activate
End With
End Sub
Fichier (2).

A+
 

Pièces jointes

  • Convertir(2).xlsm
    24.2 KB · Affichages: 26

job75

XLDnaute Barbatruc
Bonjour Mouty David, JM, le forum,

Avec l'argument ConsecutiveDelimiter à True c'est plus rapide :
Code:
Sub Convertir()
With Feuil2.Cells
  .Clear 'RAZ
  [A:A].Copy .Cells(1)
  .Columns(1).TextToColumns .Cells(1), xlDelimited, ConsecutiveDelimiter:=True, Space:=True
  On Error Resume Next
  .SpecialCells(xlCellTypeConstants, 2).Delete xlToLeft 'valeurs textes
  .ColumnWidth = 10.71 '.Columns.AutoFit
  .Parent.Activate
End With
End Sub
Fichier (3).

J'ai testé sur 9999 lignes avec Win10 - Excel 2013 :

- fichier (2) => 17,4 secondes

- fichier (3) => 13,4 secondes.

Bonne journée.
 

Pièces jointes

  • Convertir(3).xlsm
    24.2 KB · Affichages: 25

job75

XLDnaute Barbatruc
Re,

Avec des tableaux VBA c'est beaucoup plus rapide que SpecialCells :
Code:
Sub Convertir()
Dim dur#, t, ncol%, rest(), i&, n%, j%
dur = Timer
With Feuil2 'CodeName
  .Cells.Clear 'RAZ
  [A:A].Copy .Cells(1)
  .Columns(1).TextToColumns .Cells(1), xlDelimited, ConsecutiveDelimiter:=True, Space:=True
  With .Range("A1:A2", .UsedRange) 'au moins 2 cellules
    t = .Value
    ncol = UBound(t, 2)
    ReDim rest(1 To UBound(t), 1 To ncol)
    For i = 1 To UBound(t)
      n = 0
      For j = 1 To ncol
        If IsNumeric(t(i, j)) Then
          n = n + 1
          rest(i, n) = t(i, j)
        End If
    Next j, i
    .Value = rest
    .ColumnWidth = 10.71 '.Columns.AutoFit
  End With
  .Activate
End With
MsgBox "Durée " & Format(Timer - dur, "0.00 \s")
End Sub
Fichier (4), sur 9999 lignes => 0,34 seconde.

A+
 

Pièces jointes

  • Convertir(4).xlsm
    94.8 KB · Affichages: 30

Discussions similaires

Réponses
7
Affichages
534
Réponses
15
Affichages
2 K

Statistiques des forums

Discussions
312 241
Messages
2 086 522
Membres
103 241
dernier inscrit
Peyo33