Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

ouverture fichier texte et sélection zone

8 réponses
Avatar
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:=False, Tab:=False,
Semicolon:=False _
, Comma:=False, Space:=False, 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

8 réponses

Avatar
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




Avatar
LSteph
...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




Avatar
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" a écrit dans le message de news:

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





Avatar
Unss34
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" <unss34(a_enlever)@free.fr> a écrit dans le message de news:
%
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" a écrit dans le message de news:

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








Avatar
LSteph
? 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" a écrit dans le message de news:

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








Avatar
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" a écrit dans le message de news:

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








Avatar
LSteph
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" <unss34(a_enlever)@free.fr> a écrit dans le message de news:
%
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" a écrit dans le message de news:

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











Avatar
Unss34
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" a écrit dans le message de news:

..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" a écrit dans le message de news:

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