|
Le code généré
Sub Importation()
'
' Importation Macro
' Macro enregistrée le 05/09/2005 par Delenne Xavier
'
ChDir "F:\Pratique Excel VBA"
Workbooks.OpenText Filename:="F:\Pratique Excel VBA\Ord9711.txt", Origin:= _
xlMSDOS, StartRow:=4, DataType:=xlFixedWidth, FieldInfo:=Array(Array(0, 1) _
, Array(9, 1), Array(20, 1), Array(27, 1), Array(43, 1), Array(50, 1), Array(60, 1), Array( _
68, 1)), TrailingMinusNumbers:=True
ActiveWindow.WindowState = xlNormal
With ActiveWindow
.Width = 573
.Height = 336
.Top = 43.75
.Left = 25.75
End With
Sheets("Ord9711").Select
Sheets("Ord9711").Move Before:=Workbooks("importation.xls").Sheets(1)
Rows("2:2").Select
Selection.Delete Shift:=xlUp
End Sub
Explications :
ChDir "xxxxxx" est l'instruction de changement de directory (dossier disque)
Workbooks.OpenText est l'ouverture d'un fichier texte. OpenText est une "méthode" de l'objet Workbooks
Filename:="F:\......\Ord9711.txt" le paramètre de OpenText définissant le chemin du fichier à ouvrir,
De même Origin, StartRow, DataType,FieldInfo et TrailingMinusNumbers sont aussi des paramètres de cette méthode.
Ce sont les choix possibles dans l'assistant d'importation, par exemple les "Array" sont
le positionnement des colonnes gérés par les flèches dans l'étape 2.
Notez que l'instruction est faite sur plusiseurs lignes, les caractères permettant d'aller à ligne dans une instruction longue est
: "espace+underscore" ce que vous pouvez vérifier dans votre code : 
ActiveWindow.WindowState = xlNormal : redimensionne la fenêtre excel (clic sur )
La zone "With ActiveWindow" jusqu'à "End With" gére la dimension de la fenêtre et sa position à l'écran.
Sheets("Ord9711").Select : sélectionne la feuille "Ord9711"
Sheets("Ord9711").Move Before:=Workbooks("importation.xls").Sheets(1) déplace cette feuille dans notre classeur de macro avant la première feuille
Rows("2:2").Select &
Selection.Delete Shift:=xlUp respectivement selectionne et supprime la ligne 2 qui contient les "====="
Les modifications à apporter En examinant le code, nous pouvons voir que certains
paramètres d'instructions risquent de poser problème pour l'avenir. En effet le fichier importer ne sera pas tous
les mois "Ord9711", vraisemblablement, le mois prochain nous aurons Ord9712 et ainsi de suite. Hors nous retrouvons "Ord9711"
non seulement dans le chemin, mais aussi comme nom de classeur avant transfert dans "Importation", comme nom de feuille.
Nous pouvons voir aussi que les instructions de dimensionnement ne sont pas utile au fonctionnement, la
réduction de la feuille était juste une facilité visuelle pour que nous puissions faire glisser la feuille
Nous allons donc modifier ou supprimer certaines lignes du code pour obtenir le code suivant (j'ai inséré les
commentaires d'explication
Le code final
Sub Importation()
' Importation Macro
' Macro enregistrée le 05/09/2005 par Delenne Xavier
' Chdir n'est pas utile puisque nous ouvrons une boite de dialogue
' la méthode GetOpenFilename permet d'ouvrir une boite de dialogue
' pour choisir le chemin du fichier à ouvrir et elle renvoie le chemin complet
' incluant le nom du fichier qui sera stocké dans la variable MonChemin
Dim MonChemin As String
MonChemin = Application.GetOpenFilename("Text Files (*.txt), *.txt")
' nous remplaçons le chemin "F\...\Ord9711.txt" par MonChemin
Workbooks.OpenText Filename:=MonChemin, Origin:= _
xlMSDOS, StartRow:=4, DataType:=xlFixedWidth, FieldInfo:=Array(Array(0, 1) _
, Array(9, 1), Array(20, 1), Array(27, 1), Array(43, 1), Array(50, 1), _
Array(60, 1),Array(68, 1)), TrailingMinusNumbers:=True
' les commandes de redimensionnement ne sont pas utiles, elles sont supprimées
' Nous remplaçons aussi Sheets("Ord9711") par ActiveSheet (la feuille active)
' et n'avons pas besoin de la selectionner avant déplacement
ActiveSheet.Move Before:=Workbooks("importation.xls").Sheets(1)
'Nous regroupons enfin sur une seule instruction l'effacement de la ligne 2
Rows("2:2").Delete Shift:=xlUp
End Sub
|