Se connecter avec
S'enregistrer | Connectez-vous

probleme importation fichier .txt sous Excel

Dernière réponse : dans Programmation

Bonjour je réussi a importer en VBA un fichier texte sous Excel mais il ne veux pas que je l'instancie dans une variable

voila mon ocde
  1. Workbooks.OpenText Filename:="c:\fichier.txt", _
  2. Origin:=xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
  3. xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False _
  4. , Comma:=False, Space:=False, Other:=True, OtherChar:="|", FieldInfo _
  5. :=Array(Array(1, 1), Array(2, 2), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
  6. Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1 _
  7. ), Array(14, 1), Array(15, 1), Array(16, 1)), TrailingMinusNumbers:=True


et voila ce que j'aimerais faire


  1. dim wbfile as workbook
  2. set wbfile = Workbooks.OpenText Filename:="c:\fichier.txt", _
  3. Origin:=xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
  4. xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False _
  5. , Comma:=False, Space:=False, Other:=True, OtherChar:="|", FieldInfo _
  6. :=Array(Array(1, 1), Array(2, 2), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
  7. Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1 _
  8. ), Array(14, 1), Array(15, 1), Array(16, 1)), TrailingMinusNumbers:=True


il me surligne Filename et met en rouge tout le code

Si quelqu'un peut m'expliquer pourquoi merci d'avance
Lassé par la pub ? Créez un compte
Expert Programmation

Parce que tu confonds fonction et procédure.
Une procédure ne renvoie pas de paramètre, une fonction en renvoie obligatoirement.

Or le VB est un langage exécrable où les fonctions peuvent fonctionner comme des procédures :
  1. Workbooks.OpenText Filename:="c:\fichier.txt"
  2. Set wb = Workbooks.OpenText("c:\fichier.txt")


Enjoy !

Spoiler
J'adore ton code. Zéro Select, zéro ActiveTruc, zéro Paste
;) 
Expert Programmation

Citation :
une fonction en renvoie obligatoirement
qu'il faut mettre dans une variable.

L'exemple est clair. Les deux façons de faire sont bonnes :
Citation :

  1. Workbooks.OpenText Filename:="c:\fichier.txt"
  2. Set wb = Workbooks.OpenText(Filename:="c:\fichier.txt")
Expert Programmation

Bon, alors zeb va retourner se coucher et il va passer tout le we au lit pour se reposer. Avant, il va juste écrire ceci :

L'exemple est clair. Les trois façons de faire sont bonnes :
Citation :

  1. Workbooks.OpenText Filename:="c:\fichier.txt"
  2. Workbooks.OpenText "c:\fichier.txt"
  3. Set wb = Workbooks.OpenText("c:\fichier.txt")


j'ai tapé ca

  1. Set wbfile = Workbooks.OpenText(Filename:="c:\fichier.txt", _
  2. Origin:=xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
  3. xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False _
  4. , Comma:=False, Space:=False, Other:=True, OtherChar:="|", FieldInfo _
  5. :=Array(Array(1, 1), Array(2, 2), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
  6. Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1 _
  7. ), Array(14, 1), Array(15, 1), Array(16, 1)), TrailingMinusNumbers:=True)


il me dis erreur dans la compilation variable ou fonction attendue
Expert Programmation

Ben faut taper ça :
  1. Set wbfile = Workbooks.OpenText("c:\fichier.txt", xlMSDOS, 1, xlDelimited, xlDoubleQuote, _
  2. False, False, False, False, False, True, "|", _
  3. Array(Array(1, 1), Array(2, 2), Array(3, 1), Array(4, 1), _
  4. Array(5, 1), Array(6, 1), Array(7, 1), Array(8, 1), _
  5. Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), _
  6. Array(13, 1), Array(14, 1), Array(15, 1), Array(16, 1)), _
  7. True)


Mais ça peut suffire. J'ai juste viré les param par défaut :
  1. Set wbfile = Workbooks.OpenText("c:\fichier.txt", xlMSDOS, , xlDelimited, xlDoubleQuote,,,,,, True, "|", _
  2. Array(Array(1, 1), Array(2, 2), Array(3, 1), Array(4, 1), _
  3. Array(5, 1), Array(6, 1), Array(7, 1), Array(8, 1), _
  4. Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), _
  5. Array(13, 1), Array(14, 1), Array(15, 1), Array(16, 1)))

Sinon j'ai cette solution mais c'est pas beau

  1. Workbooks.OpenText Filename:=NomFichierAlertes, _
  2. Origin:=xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
  3. xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False _
  4. , Comma:=False, Space:=False, Other:=True, OtherChar:="|", FieldInfo _
  5. :=Array(Array(1, 1), Array(2, 2), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
  6. Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1 _
  7. ), Array(14, 1), Array(15, 1), Array(16, 1)), TrailingMinusNumbers:=True
  8. Columns("B:B").ColumnWidth = 22.29
  9. Set wbfile = ActiveWorkbook
Lassé par la pub ? Créez un compte