Importer une feuille CSV dans un classeur VBA
Bonjour à Tous,
Ma mission est de copier les données de la feuille CSV et de les coller dans une autre feuille d'un autre document Excel. Le fichier CSV est copier sous le format Excel (séparateur ";").
Le code est presque bon !
Mais j'ai un message d'erreur
Erreur de compilation : Fonction ou variable attendue
C'est le .OpenText qui pose probleme dans cette partie du code
Set monclasseur = Workbooks.OpenText(Filename:=ListeFichier, Origin:=xlWindows, _
StartRow:=1, DataType:=xlDelimited, Local:=True, Semicolon:=True)
Quelqu'un peut m'aider svp ?
'Déclaration des Variables
Dim ListeFichier As Variant
Dim monclasseur As Workbook
'On desactive le presse papier et le raffraichissement de l'ecran
Application.CutCopyMode = False
Application.ScreenUpdating = False
'On efface les anciennes données
Sheets("Engin actuel (2)").Range("A1").CurrentRegion.Clear
'On récupere le fichier des données à copier
ListeFichier = Application.GetOpenFilename(Title:="Sélectionnez le fichier à ouvrir")
'Prévoir le cas du bouton annuler
If ListeFichier <> False Then
'On affecte le fichier selectionné
Set monclasseur = Workbooks.OpenText(Filename:=ListeFichier, Origin:=xlWindows, _
StartRow:=1, DataType:=xlDelimited, Local:=True, Semicolon:=True)
'On copie les donnees dans la feuille active
monclasseur.Sheets(1).Range("A1").CurrentRegion.Copy
'Activation de la page Valeurs Géo et Hauteur
ThisWorkbook.Sheets("Engin actuel (2)").Activate
'On colle les données dans la feuille active
ThisWorkbook.ActiveSheet.Range("A1").PasteSpecial
'On desactive les messages d'alerte de microsoft
Application.DisplayAlerts = False
'On ferme le classeur source
monclasseur.Close
'Reactivation de la page Fusion
ThisWorkbook.Sheets("Valeurs").Activate
End If
'On réactive le presse papier et le rafraichissement de l'image
Application.CutCopyMode = True
Application.ScreenUpdating = True
End Sub
Bonjour Dargaud,
Il semblerait que ce soit un bug VBA (toujours présent)
.OpenText n'accepte pas la mise entre parenthèses, il faut donc procéder ainis
'On affecte le fichier selectionné
Workbooks.OpenText Filename:=ListeFichier, Origin:=xlWindows, StartRow:=1, DataType:=xlDelimited, Local:=True, Semicolon:=True
Set MonClasseur = ActiveWorkbook
A tester
Ca fonctionne mille merci
Difficile de déceler des bugs étant un débutant
Bonjour, Dargaud et Bonjour Bruno M45 effectivement je viens de tester de mon coté
le Set MonClasseur plait pas à cet endroit.
Récupérer le nom du classeur ( monclasseur) aprés ouverture c'est je que j'ai trouvé aussi comme solution.
Par contre pour certains de mes csv j'ai du ajouté : Comma:=True
Sub Macro1()
ListeFichier = Application.GetOpenFilename(Title:="Sélectionnez le fichier à ouvrir")
If ListeFichier <> False Then
'On ouvre le fichier selectionné
Workbooks.OpenText Filename:=ListeFichier, Origin:=xlWindows, _
StartRow:=1, DataType:=xlDelimited, Local:=True, Semicolon:=True, Comma:=True
'on récupère l'info nom du fichier une fois ouvert
monclasseur = ActiveWorkbook.Name