Appliquer une macro sur tous les onglets d'un classeur


#1

Bonjour a tous

J’ai crée une macro pour convertir la colonne A d’un onglet (séparateur point virgule) dont voici le code:

Sub Convertir_colonne()

Columns("A:A").Select
Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=True, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1 _
), Array(14, 1)), TrailingMinusNumbers:=True
End Sub

J’ai essayé de faire une boucle “for each” afin d’appliquer la macro à tous les onglets mais ça ne fonctionne pas, voila la macro:

Dim ws As Worksheet

For Each ws In Worksheets

Sheets(ws.Name).Cells(1, 1).Select
Selection.TextToColumns Destination:=Sheets(ws.Name).Cells(1, 1), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=True, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1 _
), Array(14, 1)), TrailingMinusNumbers:=True

Next
End Sub

Merci pour votre aide


#2

Bonsoir,
Ou avez vous mis la macro?
Si c’est dans une feuille (onglet), c’est normal
Plutôt la mettre dans le ThisWorkbook avec une boucle pour tous les onglets à convertir