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

  • Initiateur de la discussion Initiateur de la discussion kexcel
  • 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 !

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
 
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
 
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
 
- 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

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