ouverture fichier texte et sélection zone

Le
Unss34
Bonjour,
une macro doit aller chercher des données dans un fichier texte
(nomfichier); voici le passage qui ouvre le fichier:

nomfichier = Application.GetOpenFilename
If VarType(nomfichier) = vbBoolean Then MsgBox "Action annulée" _
Workbooks.OpenText Filename:=nomfichier, Origin:= _
xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
xlDoubleQuote, ConsecutiveDelimiter:úlse, Tab:úlse,
Semicolon:úlse _
, Comma:úlse, Space:úlse, Other:=True, OtherChar:="", 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)),
TrailingMinusNumbers:=True

pas de pb jusque là, le fichier s'ouvre; quand je veux sélectionner la
plage:

Range("A2:I2").Select

j'ai une erreur 1004 alors que le focus est bien dans le fichier ouvert
j'ai rajouté:

windows(nomfichier).Activate

là j'ai une erreur "l'indice n'appartient pas à la sélection"
Pouvez-vous me dire ce qui ne va pas ?
Merci et bonne soirée
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
LSteph
Le #18797061
Bonjour,

Il manque le contexte et la définition de tout cela mais à l'évidence

.Select dans ce cas et presque toujours est une instruction inutile
Range de quelle feuille, théoriquement c'est celle active

Faudrait penser à cela...

donc
> windows(nomfichier).Activate
Essaye déjà Feuil1.Activate

mais ton select qui va suivre est qd même inutile!!!

Dis moi que tu as compris.


@+

--
lSteph


Unss34 a écrit :
Bonjour,
une macro doit aller chercher des données dans un fichier texte
(nomfichier); voici le passage qui ouvre le fichier:

nomfichier = Application.GetOpenFilename
If VarType(nomfichier) = vbBoolean Then MsgBox "Action annulée" _
Workbooks.OpenText Filename:=nomfichier, Origin:= _
xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
xlDoubleQuote, ConsecutiveDelimiter:úlse, Tab:úlse,
Semicolon:úlse _
, Comma:úlse, Space:úlse, Other:=True, OtherChar:="", 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)),
TrailingMinusNumbers:=True

pas de pb jusque là, le fichier s'ouvre; quand je veux sélectionner la
plage:

Range("A2:I2").Select

j'ai une erreur 1004 alors que le focus est bien dans le fichier ouvert
j'ai rajouté:

windows(nomfichier).Activate

là j'ai une erreur "l'indice n'appartient pas à la sélection"
Pouvez-vous me dire ce qui ne va pas ?
Merci et bonne soirée




LSteph
Le #18797201
...et selon une autre possibilité
comment lance tu ta macro;
un bouton un userform
il serait où le focus...?


...

Feuil1.Activate

[a1:i2].copy



Unss34 a écrit :
Bonjour,
une macro doit aller chercher des données dans un fichier texte
(nomfichier); voici le passage qui ouvre le fichier:

nomfichier = Application.GetOpenFilename
If VarType(nomfichier) = vbBoolean Then MsgBox "Action annulée" _
Workbooks.OpenText Filename:=nomfichier, Origin:= _
xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
xlDoubleQuote, ConsecutiveDelimiter:úlse, Tab:úlse,
Semicolon:úlse _
, Comma:úlse, Space:úlse, Other:=True, OtherChar:="", 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)),
TrailingMinusNumbers:=True

pas de pb jusque là, le fichier s'ouvre; quand je veux sélectionner la
plage:

Range("A2:I2").Select

j'ai une erreur 1004 alors que le focus est bien dans le fichier ouvert
j'ai rajouté:

windows(nomfichier).Activate

là j'ai une erreur "l'indice n'appartient pas à la sélection"
Pouvez-vous me dire ce qui ne va pas ?
Merci et bonne soirée




Unss34
Le #18797341
Merci LSteph

La ligne
Windows(nomfichier).Activate
provoque une erreur 9 l'indice n'appartient pas à la sélection

Il s'agit d'ouvrir un fichier d'inscription en ligne dont le nom est
variable: je le récupère dans "nomfichier" (par exemple "escalade.txt")
la feuille a le même nom que le fichier, ici "escalade"
il s'agit de copier toutes les données de la feuille sans la ligne 1 qui
comprend les noms des champs pour les coller dans le fichier qui doit les
recevoir, dans la feuille Inscriptions; voici le code complet:

message = MsgBox("Dans la fenêtre suivante, sélectionnez le fichier des
inscriptions en ligne (vous devrez éventuellement naviguer dans les
répertoires pour retrouver ce fichier s'il n'est pas dans le répertoire par
défaut) puis cliquez sur 'Ouvrir'", vbYes)

nomfichier = Application.GetOpenFilename
If VarType(nomfichier) = vbBoolean Then MsgBox "Action annulée" _
Workbooks.OpenText Filename:=nomfichier, Origin:= _
xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
xlDoubleQuote, ConsecutiveDelimiter:úlse, Tab:úlse,
Semicolon:úlse _
, Comma:úlse, Space:úlse, Other:=True, OtherChar:="", 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)),
TrailingMinusNumbers:=True

Windows(nomfichier).Activate
Range("A2:I2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Windows(nomclasseur).Activate
Sheets("Import").Activate
'Application.ScreenUpdating = False
Range("A2").Select
ActiveSheet.Paste
Application.CutCopyMode = False

"LSteph"
Bonjour,

Il manque le contexte et la définition de tout cela mais à l'évidence

.Select dans ce cas et presque toujours est une instruction inutile
Range de quelle feuille, théoriquement c'est celle active

Faudrait penser à cela...

donc
> windows(nomfichier).Activate
Essaye déjà Feuil1.Activate

mais ton select qui va suivre est qd même inutile!!!

Dis moi que tu as compris.


@+

--
lSteph


Unss34 a écrit :
Bonjour,
une macro doit aller chercher des données dans un fichier texte
(nomfichier); voici le passage qui ouvre le fichier:

nomfichier = Application.GetOpenFilename
If VarType(nomfichier) = vbBoolean Then MsgBox "Action annulée" _
Workbooks.OpenText Filename:=nomfichier, Origin:= _
xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
xlDoubleQuote, ConsecutiveDelimiter:úlse, Tab:úlse,
Semicolon:úlse _
, Comma:úlse, Space:úlse, Other:=True, OtherChar:="",
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)),
TrailingMinusNumbers:=True

pas de pb jusque là, le fichier s'ouvre; quand je veux sélectionner la
plage:

Range("A2:I2").Select

j'ai une erreur 1004 alors que le focus est bien dans le fichier ouvert
j'ai rajouté:

windows(nomfichier).Activate

là j'ai une erreur "l'indice n'appartient pas à la sélection"
Pouvez-vous me dire ce qui ne va pas ?
Merci et bonne soirée





Unss34
Le #18797591
Stop !
La macro était lancée par un CommandButton, donc il fallait la référence de
la feuille à chaque fois.
Avec un bouton de macro "normal" pas besoin;
Merci LSteph, tu m'as mis sur la voie.
Bonne fin de soirée

"Unss34" %
Merci LSteph

La ligne
Windows(nomfichier).Activate
provoque une erreur 9 l'indice n'appartient pas à la sélection

Il s'agit d'ouvrir un fichier d'inscription en ligne dont le nom est
variable: je le récupère dans "nomfichier" (par exemple "escalade.txt")
la feuille a le même nom que le fichier, ici "escalade"
il s'agit de copier toutes les données de la feuille sans la ligne 1 qui
comprend les noms des champs pour les coller dans le fichier qui doit les
recevoir, dans la feuille Inscriptions; voici le code complet:

message = MsgBox("Dans la fenêtre suivante, sélectionnez le fichier des
inscriptions en ligne (vous devrez éventuellement naviguer dans les
répertoires pour retrouver ce fichier s'il n'est pas dans le répertoire
par défaut) puis cliquez sur 'Ouvrir'", vbYes)

nomfichier = Application.GetOpenFilename
If VarType(nomfichier) = vbBoolean Then MsgBox "Action annulée" _
Workbooks.OpenText Filename:=nomfichier, Origin:= _
xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
xlDoubleQuote, ConsecutiveDelimiter:úlse, Tab:úlse,
Semicolon:úlse _
, Comma:úlse, Space:úlse, Other:=True, OtherChar:="",
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)),
TrailingMinusNumbers:=True

Windows(nomfichier).Activate
Range("A2:I2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Windows(nomclasseur).Activate
Sheets("Import").Activate
'Application.ScreenUpdating = False
Range("A2").Select
ActiveSheet.Paste
Application.CutCopyMode = False

"LSteph"
Bonjour,

Il manque le contexte et la définition de tout cela mais à l'évidence

.Select dans ce cas et presque toujours est une instruction inutile
Range de quelle feuille, théoriquement c'est celle active

Faudrait penser à cela...

donc
> windows(nomfichier).Activate
Essaye déjà Feuil1.Activate

mais ton select qui va suivre est qd même inutile!!!

Dis moi que tu as compris.


@+

--
lSteph


Unss34 a écrit :
Bonjour,
une macro doit aller chercher des données dans un fichier texte
(nomfichier); voici le passage qui ouvre le fichier:

nomfichier = Application.GetOpenFilename
If VarType(nomfichier) = vbBoolean Then MsgBox "Action annulée" _
Workbooks.OpenText Filename:=nomfichier, Origin:= _
xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
xlDoubleQuote, ConsecutiveDelimiter:úlse, Tab:úlse,
Semicolon:úlse _
, Comma:úlse, Space:úlse, Other:=True, OtherChar:="",
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)),
TrailingMinusNumbers:=True

pas de pb jusque là, le fichier s'ouvre; quand je veux sélectionner la
plage:

Range("A2:I2").Select

j'ai une erreur 1004 alors que le focus est bien dans le fichier ouvert
j'ai rajouté:

windows(nomfichier).Activate

là j'ai une erreur "l'indice n'appartient pas à la sélection"
Pouvez-vous me dire ce qui ne va pas ?
Merci et bonne soirée








LSteph
Le #18797581
? pourquoi réécrire tout cela j'ai compris , lis la réponse!
Si tu n'as pas compris dis moi quoi
mais d'abord essaye..

'...
Feuil1.Activate
[a1:i2].Copy Workbooks(nomclasseur).Worksheets("Import").[a2]

'...



Unss34 a écrit :
Merci LSteph

La ligne
Windows(nomfichier).Activate
provoque une erreur 9 l'indice n'appartient pas à la sélection

Il s'agit d'ouvrir un fichier d'inscription en ligne dont le nom est
variable: je le récupère dans "nomfichier" (par exemple "escalade.txt")
la feuille a le même nom que le fichier, ici "escalade"
il s'agit de copier toutes les données de la feuille sans la ligne 1 qui
comprend les noms des champs pour les coller dans le fichier qui doit les
recevoir, dans la feuille Inscriptions; voici le code complet:

message = MsgBox("Dans la fenêtre suivante, sélectionnez le fichier des
inscriptions en ligne (vous devrez éventuellement naviguer dans les
répertoires pour retrouver ce fichier s'il n'est pas dans le répertoire par
défaut) puis cliquez sur 'Ouvrir'", vbYes)

nomfichier = Application.GetOpenFilename
If VarType(nomfichier) = vbBoolean Then MsgBox "Action annulée" _
Workbooks.OpenText Filename:=nomfichier, Origin:= _
xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
xlDoubleQuote, ConsecutiveDelimiter:úlse, Tab:úlse,
Semicolon:úlse _
, Comma:úlse, Space:úlse, Other:=True, OtherChar:="", 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)),
TrailingMinusNumbers:=True

Windows(nomfichier).Activate
Range("A2:I2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Windows(nomclasseur).Activate
Sheets("Import").Activate
'Application.ScreenUpdating = False
Range("A2").Select
ActiveSheet.Paste
Application.CutCopyMode = False

"LSteph"
Bonjour,

Il manque le contexte et la définition de tout cela mais à l'évidence

.Select dans ce cas et presque toujours est une instruction inutile
Range de quelle feuille, théoriquement c'est celle active

Faudrait penser à cela...

donc
windows(nomfichier).Activate


Essaye déjà Feuil1.Activate

mais ton select qui va suivre est qd même inutile!!!

Dis moi que tu as compris.


@+

--
lSteph


Unss34 a écrit :
Bonjour,
une macro doit aller chercher des données dans un fichier texte
(nomfichier); voici le passage qui ouvre le fichier:

nomfichier = Application.GetOpenFilename
If VarType(nomfichier) = vbBoolean Then MsgBox "Action annulée" _
Workbooks.OpenText Filename:=nomfichier, Origin:= _
xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
xlDoubleQuote, ConsecutiveDelimiter:úlse, Tab:úlse,
Semicolon:úlse _
, Comma:úlse, Space:úlse, Other:=True, OtherChar:="",
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)),
TrailingMinusNumbers:=True

pas de pb jusque là, le fichier s'ouvre; quand je veux sélectionner la
plage:

Range("A2:I2").Select

j'ai une erreur 1004 alors que le focus est bien dans le fichier ouvert
j'ai rajouté:

windows(nomfichier).Activate

là j'ai une erreur "l'indice n'appartient pas à la sélection"
Pouvez-vous me dire ce qui ne va pas ?
Merci et bonne soirée








LSteph
Le #18797681
..ou encore pour le cas suggèré

'...
Feuil1.Activate
Range("i1", [a65536].End(xlUp).Address).Copy _
Workbooks("Classeur2").Worksheets("Import").[a2]
'...

Unss34 a écrit :
Merci LSteph

La ligne
Windows(nomfichier).Activate
provoque une erreur 9 l'indice n'appartient pas à la sélection

Il s'agit d'ouvrir un fichier d'inscription en ligne dont le nom est
variable: je le récupère dans "nomfichier" (par exemple "escalade.txt")
la feuille a le même nom que le fichier, ici "escalade"
il s'agit de copier toutes les données de la feuille sans la ligne 1 qui
comprend les noms des champs pour les coller dans le fichier qui doit les
recevoir, dans la feuille Inscriptions; voici le code complet:

message = MsgBox("Dans la fenêtre suivante, sélectionnez le fichier des
inscriptions en ligne (vous devrez éventuellement naviguer dans les
répertoires pour retrouver ce fichier s'il n'est pas dans le répertoire par
défaut) puis cliquez sur 'Ouvrir'", vbYes)

nomfichier = Application.GetOpenFilename
If VarType(nomfichier) = vbBoolean Then MsgBox "Action annulée" _
Workbooks.OpenText Filename:=nomfichier, Origin:= _
xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
xlDoubleQuote, ConsecutiveDelimiter:úlse, Tab:úlse,
Semicolon:úlse _
, Comma:úlse, Space:úlse, Other:=True, OtherChar:="", 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)),
TrailingMinusNumbers:=True

Windows(nomfichier).Activate
Range("A2:I2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Windows(nomclasseur).Activate
Sheets("Import").Activate
'Application.ScreenUpdating = False
Range("A2").Select
ActiveSheet.Paste
Application.CutCopyMode = False

"LSteph"
Bonjour,

Il manque le contexte et la définition de tout cela mais à l'évidence

.Select dans ce cas et presque toujours est une instruction inutile
Range de quelle feuille, théoriquement c'est celle active

Faudrait penser à cela...

donc
windows(nomfichier).Activate


Essaye déjà Feuil1.Activate

mais ton select qui va suivre est qd même inutile!!!

Dis moi que tu as compris.


@+

--
lSteph


Unss34 a écrit :
Bonjour,
une macro doit aller chercher des données dans un fichier texte
(nomfichier); voici le passage qui ouvre le fichier:

nomfichier = Application.GetOpenFilename
If VarType(nomfichier) = vbBoolean Then MsgBox "Action annulée" _
Workbooks.OpenText Filename:=nomfichier, Origin:= _
xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
xlDoubleQuote, ConsecutiveDelimiter:úlse, Tab:úlse,
Semicolon:úlse _
, Comma:úlse, Space:úlse, Other:=True, OtherChar:="",
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)),
TrailingMinusNumbers:=True

pas de pb jusque là, le fichier s'ouvre; quand je veux sélectionner la
plage:

Range("A2:I2").Select

j'ai une erreur 1004 alors que le focus est bien dans le fichier ouvert
j'ai rajouté:

windows(nomfichier).Activate

là j'ai une erreur "l'indice n'appartient pas à la sélection"
Pouvez-vous me dire ce qui ne va pas ?
Merci et bonne soirée








LSteph
Le #18797671
non pas stop
vire aussi ces inutiles select de ton code et il sera propre
;o))

Unss34 a écrit :
Stop !
La macro était lancée par un CommandButton, donc il fallait la référence de
la feuille à chaque fois.
Avec un bouton de macro "normal" pas besoin;
Merci LSteph, tu m'as mis sur la voie.
Bonne fin de soirée

"Unss34" %
Merci LSteph

La ligne
Windows(nomfichier).Activate
provoque une erreur 9 l'indice n'appartient pas à la sélection

Il s'agit d'ouvrir un fichier d'inscription en ligne dont le nom est
variable: je le récupère dans "nomfichier" (par exemple "escalade.txt")
la feuille a le même nom que le fichier, ici "escalade"
il s'agit de copier toutes les données de la feuille sans la ligne 1 qui
comprend les noms des champs pour les coller dans le fichier qui doit les
recevoir, dans la feuille Inscriptions; voici le code complet:

message = MsgBox("Dans la fenêtre suivante, sélectionnez le fichier des
inscriptions en ligne (vous devrez éventuellement naviguer dans les
répertoires pour retrouver ce fichier s'il n'est pas dans le répertoire
par défaut) puis cliquez sur 'Ouvrir'", vbYes)

nomfichier = Application.GetOpenFilename
If VarType(nomfichier) = vbBoolean Then MsgBox "Action annulée" _
Workbooks.OpenText Filename:=nomfichier, Origin:= _
xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
xlDoubleQuote, ConsecutiveDelimiter:úlse, Tab:úlse,
Semicolon:úlse _
, Comma:úlse, Space:úlse, Other:=True, OtherChar:="",
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)),
TrailingMinusNumbers:=True

Windows(nomfichier).Activate
Range("A2:I2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Windows(nomclasseur).Activate
Sheets("Import").Activate
'Application.ScreenUpdating = False
Range("A2").Select
ActiveSheet.Paste
Application.CutCopyMode = False

"LSteph"
Bonjour,

Il manque le contexte et la définition de tout cela mais à l'évidence

.Select dans ce cas et presque toujours est une instruction inutile
Range de quelle feuille, théoriquement c'est celle active

Faudrait penser à cela...

donc
windows(nomfichier).Activate


Essaye déjà Feuil1.Activate

mais ton select qui va suivre est qd même inutile!!!

Dis moi que tu as compris.


@+

--
lSteph


Unss34 a écrit :
Bonjour,
une macro doit aller chercher des données dans un fichier texte
(nomfichier); voici le passage qui ouvre le fichier:

nomfichier = Application.GetOpenFilename
If VarType(nomfichier) = vbBoolean Then MsgBox "Action annulée" _
Workbooks.OpenText Filename:=nomfichier, Origin:= _
xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
xlDoubleQuote, ConsecutiveDelimiter:úlse, Tab:úlse,
Semicolon:úlse _
, Comma:úlse, Space:úlse, Other:=True, OtherChar:="",
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)),
TrailingMinusNumbers:=True

pas de pb jusque là, le fichier s'ouvre; quand je veux sélectionner la
plage:

Range("A2:I2").Select

j'ai une erreur 1004 alors que le focus est bien dans le fichier ouvert
j'ai rajouté:

windows(nomfichier).Activate

là j'ai une erreur "l'indice n'appartient pas à la sélection"
Pouvez-vous me dire ce qui ne va pas ?
Merci et bonne soirée











Unss34
Le #18797891
Parfait, je sais qu'il faut éviter les select, mais je ne maîtrise pas
encore, car j'utilise souvent l'enregistreur de macro pour apprendre...
Merci encore


"LSteph"
..ou encore pour le cas suggèré

'...
Feuil1.Activate
Range("i1", [a65536].End(xlUp).Address).Copy _
Workbooks("Classeur2").Worksheets("Import").[a2]
'...

Unss34 a écrit :
Merci LSteph

La ligne
Windows(nomfichier).Activate
provoque une erreur 9 l'indice n'appartient pas à la sélection

Il s'agit d'ouvrir un fichier d'inscription en ligne dont le nom est
variable: je le récupère dans "nomfichier" (par exemple "escalade.txt")
la feuille a le même nom que le fichier, ici "escalade"
il s'agit de copier toutes les données de la feuille sans la ligne 1 qui
comprend les noms des champs pour les coller dans le fichier qui doit les
recevoir, dans la feuille Inscriptions; voici le code complet:

message = MsgBox("Dans la fenêtre suivante, sélectionnez le fichier des
inscriptions en ligne (vous devrez éventuellement naviguer dans les
répertoires pour retrouver ce fichier s'il n'est pas dans le répertoire
par défaut) puis cliquez sur 'Ouvrir'", vbYes)

nomfichier = Application.GetOpenFilename
If VarType(nomfichier) = vbBoolean Then MsgBox "Action annulée" _
Workbooks.OpenText Filename:=nomfichier, Origin:= _
xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
xlDoubleQuote, ConsecutiveDelimiter:úlse, Tab:úlse,
Semicolon:úlse _
, Comma:úlse, Space:úlse, Other:=True, OtherChar:="",
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)),
TrailingMinusNumbers:=True

Windows(nomfichier).Activate
Range("A2:I2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Windows(nomclasseur).Activate
Sheets("Import").Activate
'Application.ScreenUpdating = False
Range("A2").Select
ActiveSheet.Paste
Application.CutCopyMode = False

"LSteph"
Bonjour,

Il manque le contexte et la définition de tout cela mais à l'évidence

.Select dans ce cas et presque toujours est une instruction inutile
Range de quelle feuille, théoriquement c'est celle active

Faudrait penser à cela...

donc
windows(nomfichier).Activate


Essaye déjà Feuil1.Activate

mais ton select qui va suivre est qd même inutile!!!

Dis moi que tu as compris.


@+

--
lSteph


Unss34 a écrit :
Bonjour,
une macro doit aller chercher des données dans un fichier texte
(nomfichier); voici le passage qui ouvre le fichier:

nomfichier = Application.GetOpenFilename
If VarType(nomfichier) = vbBoolean Then MsgBox "Action annulée" _
Workbooks.OpenText Filename:=nomfichier, Origin:= _
xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier:=
_
xlDoubleQuote, ConsecutiveDelimiter:úlse, Tab:úlse,
Semicolon:úlse _
, Comma:úlse, Space:úlse, Other:=True, OtherChar:="",
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)),
TrailingMinusNumbers:=True

pas de pb jusque là, le fichier s'ouvre; quand je veux sélectionner la
plage:

Range("A2:I2").Select

j'ai une erreur 1004 alors que le focus est bien dans le fichier ouvert
j'ai rajouté:

windows(nomfichier).Activate

là j'ai une erreur "l'indice n'appartient pas à la sélection"
Pouvez-vous me dire ce qui ne va pas ?
Merci et bonne soirée










Publicité
Poster une réponse
Anonyme