XL 2010 Actions à appliquer à plusieurs feuilles d'un classeur

kexcel

XLDnaute Nouveau
Bonjour à tous

Voici ma situation :

J'ai un classeur Excel qui contient 60 feuilles.
J'ai utlisé ce code pour regrouper toutes mes fichiers .txt en un seul classeur :

Sub GetSheets()
Path = "C:\Users\dt\Desktop\[..]\"
Filename = Dir(Path & "*.txt")
Do While Filename <> ""
Workbooks.Open Filename:=Path & Filename, ReadOnly:=True
For Each Sheet In ActiveWorkbook.Sheets
Sheet.Copy After:=ThisWorkbook.Sheets(1)
Next Sheet
Workbooks(Filename).Close
Filename = Dir()
Loop
End Sub

Toutes les feuilles ont le mêmes format (mêmes nombre de lignes/colonnes, seules les données changent). Ces feuilles sont issues d'un .txt avec des données "brutes".
Je cherche un code qui me permet de convertir (avec l'outil Assistant Conversion) le contenu de chaque feuille en tableau avec comme séparateur un espace, et ce appliqué à toutes les feuilles (répéter l'opération 60 fois me prend beaucoup trop de temps).

Merci pour votre aide :)

Kevin
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour Kexcel, bonjour le forum,

Peut-être comme ça
:
VB:
Sub Macro1()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim DL As Long 'déclare la variable DL (Dernière Ligne)

For Each O In Sheets 'boucle sur tous les onglets du classeur
  DL = O.Cells(Application.Rows.Count, "A").End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne A de l'onglet O
  'convertis les données en tableau avec l'espace comme séparateur
  O.Range("A1:A" & DL).CurrentRegion.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
  TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
  Semicolon:=False, Comma:=False, Space:=True, Other:=False, FieldInfo _
  :=Array(Array(1, 1), Array(2, 1), Array(3, 1)), TrailingMinusNumbers:=True
Next O 'prochain onglet de la source
End Sub
 

kexcel

XLDnaute Nouveau
Bonjour Robert,

Lorsque j'exécute la commande, j'ai un message d'erreur d'exécution '1004' qui me dit qu'aucune donnée à convertir n'a été sélectionnée. Le bouton Débogage me surligne en jaune la partie suivante (en gras italique souligné) :

Sub Macro1()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim DL As Long 'déclare la variable DL (Dernière Ligne)

For Each O In Sheets 'boucle sur tous les onglets du classeur
DL = O.Cells(Application.Rows.Count, "A").End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne A de l'onglet O
'convertis les données en tableau avec l'espace comme séparateur
O.Range("A1:A" & DL).CurrentRegion.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
Semicolon:=False, Comma:=False, Space:=True, Other:=False, FieldInfo _
:=Array(Array(1, 1), Array(2, 1), Array(3, 1)), TrailingMinusNumbers:=True

Next O 'prochain onglet de la source
End Sub

Je ne m'y connait pas très bien en VBA.. j'ai sans doute loupé une étape..

En te remerciant,

Kevin
 

Discussions similaires

Réponses
1
Affichages
6 K
Compte Supprimé 979
C

Statistiques des forums

Discussions
312 107
Messages
2 085 360
Membres
102 874
dernier inscrit
Petro2611