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

Importation d'un fichier texte

PMO2

XLDnaute Accro
Re : Importation d'un fichier texte

Bonjour,

Copiez le code suivant dans un module Standard
Code:
Sub aa()
Dim S As Worksheet
Dim R As Range
Dim var
Dim NbCol&
Dim i&
Dim j&
Dim cpt&
Dim Pos&
Dim T()
Dim A$
'---
Set S = Sheets("order_export")
Set R = S.Range("a1").CurrentRegion
R.Copy
Sheets.Add
Set S = ActiveSheet
S.Paste
'---
Set R = Selection
R.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
  TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
  Semicolon:=False, Comma:=True, Space:=False, Other:=False, _
  TrailingMinusNumbers:=True
'---
NbCol& = S.UsedRange.Columns.Count
Set R = R.Offset(0, 1)
R.Cut Destination:=R.Offset(0, NbCol& - 1)
'---
Set R = S.Range(S.Cells(1, NbCol& + 1), S.Cells(R.Rows.Count, NbCol& + 1))
R.TextToColumns Destination:=R.Cells(1, 1), DataType:=xlDelimited, _
  TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
  Semicolon:=False, Comma:=True, Space:=False, Other:=False, _
  TrailingMinusNumbers:=True
'---
Columns(2).Delete Shift:=xlToLeft
'######################################

Set R = S.[a1].CurrentRegion
var = R
'---
On Error Resume Next
For i& = 2 To UBound(var, 1) 'on saute la ligne des titres
  For j& = 5 To UBound(var, 2)
    If (j& - 2) Mod 3 = 0 Then
      A$ = Trim(var(i&, j&))
      If A$ = "" Then Exit For
      cpt& = cpt& + 1
      '--- Coordonnées client ---
      ReDim Preserve T(1 To 9, 1 To cpt&)
      T(1, cpt&) = var(i&, 1)
      T(2, cpt&) = var(i&, 3)
      T(3, cpt&) = var(i&, 4)
      '--- Quantité ---
      A$ = Trim(var(i&, j&))
      Pos& = InStr(1, A$, " ")
      T(4, cpt&) = Mid(A$, 1, InStr(1, A$, Pos& - 1))
      '--- Visuel ---
      A$ = Mid(A$, Pos& + 1)
      Pos& = InStr(1, A$, "(")
      T(5, cpt&) = Mid(A$, 1, Pos& - 1)
      '--- Type ---
      A$ = Mid(A$, Pos& + 1)
      Pos& = InStr(1, A$, " Color ") + Len(" Color ")
      A$ = Mid(A$, Pos&)
      Pos& = InStrRev(A$, ": ")
      T(6, cpt&) = Mid(A$, 1, Pos& - 1)
      '--- Couleur ---
      T(7, cpt&) = Mid(A$, Pos& + 2)
    ElseIf (j& - 3) Mod 3 = 0 Then
      '--- Taille ---
      A$ = Trim(var(i&, j&))
      Pos& = InStrRev(A$, ": ")
      T(8, cpt&) = A$ 'Mid(A$, Pos& + 2)
    ElseIf (j& - 4) Mod 3 = 0 Then
      '--- Packaging ---
      A$ = Trim(var(i&, j&))
      Pos& = InStrRev(A$, ": ")
      A$ = Mid(A$, Pos& + 2)
      Pos& = InStr(A$, " ")
      T(9, cpt&) = Mid(A$, 1, Pos& - 1)
    End If
  Next j&
Next i&
'--- Inscription ---
S.Cells.ClearContents
Set R = S.Range(S.Cells(1, 1), S.Cells(UBound(T, 2), UBound(T, 1)))
R = Application.WorksheetFunction.Transpose(T)
R.EntireColumn.AutoFit
End Sub
 

Pièces jointes

  • order_export_pmo.xlsm
    34.6 KB · Affichages: 39

msingle

XLDnaute Junior
Re : Importation d'un fichier texte

Incroyable travail!

C'est exactement ce qu'il me fallait.

J’apprécie particulièrement car la distribution des données n'était pas évidente, et la tâche fastidieuse.

Un grand merci pour tout, et une fois de plus, ceci prouve que ce site est vraiment fréquenté par des gens super sympas.
 

Discussions similaires

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