OVH Cloud OVH Cloud

Macro ouvrant un fichier

8 réponses
Avatar
Thierry
J'ai une macro qui teste la présence d'un fichier au nom précis parmis les
fichiers excel déjà ouvert. Si elle ne le trouve pas, alors elle l'ouvre.
Malheureusement, la macro s'arrête d'elle-même alors que d'autres opérations
sont à faire après. J'utilise :
Workbooks.Open FileName:= "c:\NomDeMonFichier"

Merci de m'aider

8 réponses

Avatar
papou
Bonjour
Ne sahcant pas comment tu fais ton test dans les fenêtres actives, voici une
manière de procéder :
Sub OuvrirFichier()
Dim LeRep$
LeRep = ThisWorkbook.Path
Const NomFic$ = "Tests22022005.xls"
Dim LaFen As Window
Dim Trouve As Boolean
For Each LaFen In Application.Windows
If LaFen.Caption = NomFic Then
Trouve = True
LaFen.Activate: Exit For
Else: Trouve = False: End If
Next LaFen
If Not Trouve Then _
Workbooks.Open (LeRep & Application.PathSeparator & NomFic)
End Sub

Cordialement
Pascal

"Thierry" a écrit dans le message de
news:
J'ai une macro qui teste la présence d'un fichier au nom précis parmis les
fichiers excel déjà ouvert. Si elle ne le trouve pas, alors elle l'ouvre.
Malheureusement, la macro s'arrête d'elle-même alors que d'autres
opérations
sont à faire après. J'utilise :
Workbooks.Open FileName:= "c:NomDeMonFichier"

Merci de m'aider


Avatar
anonymousA
bonjour,

une méthode pour rechercher un fichier dont on ne connait pas l'emplacement
et ensuite l'ouvrir. Faut-il bien sur qu'il soit comptaible avec une
ouverture sous Excel sinon faut employer d'autres moyens pour l'ouverture.
Dans ce qui suit ,on cherche à faire ouvrir au user un type de fichier bine
précis. pour le fso.GetFile(filetoopen) qui ici teste qu'il s'agit d'un
fichier texte ou d'un doc sans extension , on peut bien sur remplacer <>
"File" par different de "Feuille de calcul Microsoft Excel".

Set fso = CreateObject("Scripting.FileSystemObject")

ctrl1 = False

While ctrl1 = False
Set filetopen = Nothing
filetoopen = Application.GetOpenFilename
If filetoopen <> false Then
If (fso.GetFile(filetoopen).Type <> "File" And
fso.GetFile(filetoopen).Type <> "Document texte") Then
MsgBox "Vous avez choisi un fichier dont le type n'est pas document
texte ou sans extension" & Chr(13) & "vous devez choisir un autre fichier ou
Annuler"
Else
ctrl1 = True
End If
Else
Set fso = Nothing
With Application
.DisplayAlerts = True
.ScreenUpdating = True
.AskToUpdateLinks = True
.EnableCancelKey = xlInterrupt
End With
Exit Sub
End If
Wend

Set fso = Nothing


Workbooks.OpenText Filename:=filetoopen, Origin:=xlWindows, Tab:=True,
Other:=True, OtherChar:="!"

il y a bien sur plus simple.ci-dessous , extrait de l'aide d'Excel

fileToOpen = Application _
.GetOpenFilename("Text Files (*.txt), *.txt")
If fileToOpen <> False Then
MsgBox "Open " & fileToOpen
End If

A+


J'ai une macro qui teste la présence d'un fichier au nom précis parmis les
fichiers excel déjà ouvert. Si elle ne le trouve pas, alors elle l'ouvre.
Malheureusement, la macro s'arrête d'elle-même alors que d'autres opérations
sont à faire après. J'utilise :
Workbooks.Open FileName:= "c:NomDeMonFichier"

Merci de m'aider


Avatar
Thierry
Salut Papou, merci de ton aide.
Mon test est simplissime :
On Error GoTo TraitementErreur
Windows("NomDeMonFichier").Activate
ensuite, la macro fait différents copier-coller entre le fichier
NomDeMonFichier et le fichier actif où se trouve la macro et se finit par un
Exit Sub. Ensuite, il y a :

TraitementErreur:
Workbooks.Open Filename:= "C:ssrépertoireNomDeMonFichier"
Windows("FichierActif").Activate
Range("A1").Select
End Sub
Mais, la macro s'arrête juste après avoir ouvert NomDeMonFichier et j'ai à
l'écran le fichier NomDeMonFichier au lieu d'être sur le fichier FichierActif
à la cellule A1.
C'est idem avec ta méthode.

Thierry


Bonjour
Ne sahcant pas comment tu fais ton test dans les fenêtres actives, voici une
manière de procéder :
Sub OuvrirFichier()
Dim LeRep$
LeRep = ThisWorkbook.Path
Const NomFic$ = "Tests22022005.xls"
Dim LaFen As Window
Dim Trouve As Boolean
For Each LaFen In Application.Windows
If LaFen.Caption = NomFic Then
Trouve = True
LaFen.Activate: Exit For
Else: Trouve = False: End If
Next LaFen
If Not Trouve Then _
Workbooks.Open (LeRep & Application.PathSeparator & NomFic)
End Sub

Cordialement
Pascal

"Thierry" a écrit dans le message de
news:
J'ai une macro qui teste la présence d'un fichier au nom précis parmis les
fichiers excel déjà ouvert. Si elle ne le trouve pas, alors elle l'ouvre.
Malheureusement, la macro s'arrête d'elle-même alors que d'autres
opérations
sont à faire après. J'utilise :
Workbooks.Open FileName:= "c:NomDeMonFichier"

Merci de m'aider







Avatar
anonymousA
ben , ce qui est normal, c'est que la macro ne s'execute pas plus loin que
la fin du traitement de l'erreur TraitementErreur puisqu'il n'y a pas
d'instruction Resume ni Resume etiquette pour le faire revenir à l'endroit du
débranchement, c.à.d quand il se plante sur
Windows("NomDeMonFichier").Activate qui bien sur n'est pas ouvert.
Par contre, ce qu'il y a de surprenant, c'est qu'à l'écran, tu n'aies pas
FichierActif qui soit en 1er plan à la fin du traitement de l'erreru car il
lui a été passé la méthode Activate , sauf s'il y a d'autres instructions.

A+

ce


Salut Papou, merci de ton aide.
Mon test est simplissime :
On Error GoTo TraitementErreur
Windows("NomDeMonFichier").Activate
ensuite, la macro fait différents copier-coller entre le fichier
NomDeMonFichier et le fichier actif où se trouve la macro et se finit par un
Exit Sub. Ensuite, il y a :

TraitementErreur:
Workbooks.Open Filename:= "C:ssrépertoireNomDeMonFichier"
Windows("FichierActif").Activate
Range("A1").Select
End Sub
Mais, la macro s'arrête juste après avoir ouvert NomDeMonFichier et j'ai à
l'écran le fichier NomDeMonFichier au lieu d'être sur le fichier FichierActif
à la cellule A1.
C'est idem avec ta méthode.

Thierry


Bonjour
Ne sahcant pas comment tu fais ton test dans les fenêtres actives, voici une
manière de procéder :
Sub OuvrirFichier()
Dim LeRep$
LeRep = ThisWorkbook.Path
Const NomFic$ = "Tests22022005.xls"
Dim LaFen As Window
Dim Trouve As Boolean
For Each LaFen In Application.Windows
If LaFen.Caption = NomFic Then
Trouve = True
LaFen.Activate: Exit For
Else: Trouve = False: End If
Next LaFen
If Not Trouve Then _
Workbooks.Open (LeRep & Application.PathSeparator & NomFic)
End Sub

Cordialement
Pascal

"Thierry" a écrit dans le message de
news:
J'ai une macro qui teste la présence d'un fichier au nom précis parmis les
fichiers excel déjà ouvert. Si elle ne le trouve pas, alors elle l'ouvre.
Malheureusement, la macro s'arrête d'elle-même alors que d'autres
opérations
sont à faire après. J'utilise :
Workbooks.Open FileName:= "c:NomDeMonFichier"

Merci de m'aider









Avatar
Thierry
Salut anonymousA, merci de ton aide
Avec ma méthode, la macro s'arrêtait juste après l'ouverture de
NomDeMonFichier, même avec des GoTo Etiquette ou des Resume Etiquette pour
renvoyer l'exécution de la macro juste après la détection de l'erreur.
Du coup, j'ai repris la méthode de Papou qui traite le risque d'erreur avec
If...Then pour éviter des renvois à des étiquettes qui pourraient faire
s'arrêter la macro. Mais là encore la macro s'arrête juste après avoir fait
Workbook.Open.

Je suis du genre patient, mais là, je crois que Excel commence par me sortir
par les yeux !

Thierry.



ben , ce qui est normal, c'est que la macro ne s'execute pas plus loin que
la fin du traitement de l'erreur TraitementErreur puisqu'il n'y a pas
d'instruction Resume ni Resume etiquette pour le faire revenir à l'endroit du
débranchement, c.à.d quand il se plante sur
Windows("NomDeMonFichier").Activate qui bien sur n'est pas ouvert.
Par contre, ce qu'il y a de surprenant, c'est qu'à l'écran, tu n'aies pas
FichierActif qui soit en 1er plan à la fin du traitement de l'erreru car il
lui a été passé la méthode Activate , sauf s'il y a d'autres instructions.

A+

ce


Salut Papou, merci de ton aide.
Mon test est simplissime :
On Error GoTo TraitementErreur
Windows("NomDeMonFichier").Activate
ensuite, la macro fait différents copier-coller entre le fichier
NomDeMonFichier et le fichier actif où se trouve la macro et se finit par un
Exit Sub. Ensuite, il y a :

TraitementErreur:
Workbooks.Open Filename:= "C:ssrépertoireNomDeMonFichier"
Windows("FichierActif").Activate
Range("A1").Select
End Sub
Mais, la macro s'arrête juste après avoir ouvert NomDeMonFichier et j'ai à
l'écran le fichier NomDeMonFichier au lieu d'être sur le fichier FichierActif
à la cellule A1.
C'est idem avec ta méthode.

Thierry


Bonjour
Ne sahcant pas comment tu fais ton test dans les fenêtres actives, voici une
manière de procéder :
Sub OuvrirFichier()
Dim LeRep$
LeRep = ThisWorkbook.Path
Const NomFic$ = "Tests22022005.xls"
Dim LaFen As Window
Dim Trouve As Boolean
For Each LaFen In Application.Windows
If LaFen.Caption = NomFic Then
Trouve = True
LaFen.Activate: Exit For
Else: Trouve = False: End If
Next LaFen
If Not Trouve Then _
Workbooks.Open (LeRep & Application.PathSeparator & NomFic)
End Sub

Cordialement
Pascal

"Thierry" a écrit dans le message de
news:
J'ai une macro qui teste la présence d'un fichier au nom précis parmis les
fichiers excel déjà ouvert. Si elle ne le trouve pas, alors elle l'ouvre.
Malheureusement, la macro s'arrête d'elle-même alors que d'autres
opérations
sont à faire après. J'utilise :
Workbooks.Open FileName:= "c:NomDeMonFichier"

Merci de m'aider











Avatar
anonymousA
re,

si tu veux, envoie ton fichier sur ma BAL ainsi que le fichier qui est censé
devoir s'ouvrir.Je te le traiterai demain matin.
par ailleurs,sur quelle version de SE et d'Excel es-tu ? et enfin y a t-il
dans le répertoire un fichier du même nom mais avec une extension différente ?

A+


Salut anonymousA, merci de ton aide
Avec ma méthode, la macro s'arrêtait juste après l'ouverture de
NomDeMonFichier, même avec des GoTo Etiquette ou des Resume Etiquette pour
renvoyer l'exécution de la macro juste après la détection de l'erreur.
Du coup, j'ai repris la méthode de Papou qui traite le risque d'erreur avec
If...Then pour éviter des renvois à des étiquettes qui pourraient faire
s'arrêter la macro. Mais là encore la macro s'arrête juste après avoir fait
Workbook.Open.

Je suis du genre patient, mais là, je crois que Excel commence par me sortir
par les yeux !

Thierry.



ben , ce qui est normal, c'est que la macro ne s'execute pas plus loin que
la fin du traitement de l'erreur TraitementErreur puisqu'il n'y a pas
d'instruction Resume ni Resume etiquette pour le faire revenir à l'endroit du
débranchement, c.à.d quand il se plante sur
Windows("NomDeMonFichier").Activate qui bien sur n'est pas ouvert.
Par contre, ce qu'il y a de surprenant, c'est qu'à l'écran, tu n'aies pas
FichierActif qui soit en 1er plan à la fin du traitement de l'erreru car il
lui a été passé la méthode Activate , sauf s'il y a d'autres instructions.

A+

ce


Salut Papou, merci de ton aide.
Mon test est simplissime :
On Error GoTo TraitementErreur
Windows("NomDeMonFichier").Activate
ensuite, la macro fait différents copier-coller entre le fichier
NomDeMonFichier et le fichier actif où se trouve la macro et se finit par un
Exit Sub. Ensuite, il y a :

TraitementErreur:
Workbooks.Open Filename:= "C:ssrépertoireNomDeMonFichier"
Windows("FichierActif").Activate
Range("A1").Select
End Sub
Mais, la macro s'arrête juste après avoir ouvert NomDeMonFichier et j'ai à
l'écran le fichier NomDeMonFichier au lieu d'être sur le fichier FichierActif
à la cellule A1.
C'est idem avec ta méthode.

Thierry


Bonjour
Ne sahcant pas comment tu fais ton test dans les fenêtres actives, voici une
manière de procéder :
Sub OuvrirFichier()
Dim LeRep$
LeRep = ThisWorkbook.Path
Const NomFic$ = "Tests22022005.xls"
Dim LaFen As Window
Dim Trouve As Boolean
For Each LaFen In Application.Windows
If LaFen.Caption = NomFic Then
Trouve = True
LaFen.Activate: Exit For
Else: Trouve = False: End If
Next LaFen
If Not Trouve Then _
Workbooks.Open (LeRep & Application.PathSeparator & NomFic)
End Sub

Cordialement
Pascal

"Thierry" a écrit dans le message de
news:
J'ai une macro qui teste la présence d'un fichier au nom précis parmis les
fichiers excel déjà ouvert. Si elle ne le trouve pas, alors elle l'ouvre.
Malheureusement, la macro s'arrête d'elle-même alors que d'autres
opérations
sont à faire après. J'utilise :
Workbooks.Open FileName:= "c:NomDeMonFichier"

Merci de m'aider













Avatar
Thierry
Ok merci de ton aide précieuse. Je travaille sous Windows NT 98 et Excel 97.
Dans le répertoire cible, je n'ai que des fichiers en .xls sous la forme "SEM
a.xls" où "a" est le numéro de la semaine.

Comment dois-je faire pour t'envoyer mes fichiers ?
Thierry.




re,

si tu veux, envoie ton fichier sur ma BAL ainsi que le fichier qui est censé
devoir s'ouvrir.Je te le traiterai demain matin.
par ailleurs,sur quelle version de SE et d'Excel es-tu ? et enfin y a t-il
dans le répertoire un fichier du même nom mais avec une extension différente ?

A+


Salut anonymousA, merci de ton aide
Avec ma méthode, la macro s'arrêtait juste après l'ouverture de
NomDeMonFichier, même avec des GoTo Etiquette ou des Resume Etiquette pour
renvoyer l'exécution de la macro juste après la détection de l'erreur.
Du coup, j'ai repris la méthode de Papou qui traite le risque d'erreur avec
If...Then pour éviter des renvois à des étiquettes qui pourraient faire
s'arrêter la macro. Mais là encore la macro s'arrête juste après avoir fait
Workbook.Open.

Je suis du genre patient, mais là, je crois que Excel commence par me sortir
par les yeux !

Thierry.



ben , ce qui est normal, c'est que la macro ne s'execute pas plus loin que
la fin du traitement de l'erreur TraitementErreur puisqu'il n'y a pas
d'instruction Resume ni Resume etiquette pour le faire revenir à l'endroit du
débranchement, c.à.d quand il se plante sur
Windows("NomDeMonFichier").Activate qui bien sur n'est pas ouvert.
Par contre, ce qu'il y a de surprenant, c'est qu'à l'écran, tu n'aies pas
FichierActif qui soit en 1er plan à la fin du traitement de l'erreru car il
lui a été passé la méthode Activate , sauf s'il y a d'autres instructions.

A+

ce


Salut Papou, merci de ton aide.
Mon test est simplissime :
On Error GoTo TraitementErreur
Windows("NomDeMonFichier").Activate
ensuite, la macro fait différents copier-coller entre le fichier
NomDeMonFichier et le fichier actif où se trouve la macro et se finit par un
Exit Sub. Ensuite, il y a :

TraitementErreur:
Workbooks.Open Filename:= "C:ssrépertoireNomDeMonFichier"
Windows("FichierActif").Activate
Range("A1").Select
End Sub
Mais, la macro s'arrête juste après avoir ouvert NomDeMonFichier et j'ai à
l'écran le fichier NomDeMonFichier au lieu d'être sur le fichier FichierActif
à la cellule A1.
C'est idem avec ta méthode.

Thierry


Bonjour
Ne sahcant pas comment tu fais ton test dans les fenêtres actives, voici une
manière de procéder :
Sub OuvrirFichier()
Dim LeRep$
LeRep = ThisWorkbook.Path
Const NomFic$ = "Tests22022005.xls"
Dim LaFen As Window
Dim Trouve As Boolean
For Each LaFen In Application.Windows
If LaFen.Caption = NomFic Then
Trouve = True
LaFen.Activate: Exit For
Else: Trouve = False: End If
Next LaFen
If Not Trouve Then _
Workbooks.Open (LeRep & Application.PathSeparator & NomFic)
End Sub

Cordialement
Pascal

"Thierry" a écrit dans le message de
news:
J'ai une macro qui teste la présence d'un fichier au nom précis parmis les
fichiers excel déjà ouvert. Si elle ne le trouve pas, alors elle l'ouvre.
Malheureusement, la macro s'arrête d'elle-même alors que d'autres
opérations
sont à faire après. J'utilise :
Workbooks.Open FileName:= "c:NomDeMonFichier"

Merci de m'aider















Avatar
anonymousA


c'est quand tu veux .

A+


Ok merci de ton aide précieuse. Je travaille sous Windows NT 98 et Excel 97.
Dans le répertoire cible, je n'ai que des fichiers en .xls sous la forme "SEM
a.xls" où "a" est le numéro de la semaine.

Comment dois-je faire pour t'envoyer mes fichiers ?
Thierry.





re,

si tu veux, envoie ton fichier sur ma BAL ainsi que le fichier qui est censé
devoir s'ouvrir.Je te le traiterai demain matin.
par ailleurs,sur quelle version de SE et d'Excel es-tu ? et enfin y a t-il
dans le répertoire un fichier du même nom mais avec une extension différente ?

A+



Salut anonymousA, merci de ton aide
Avec ma méthode, la macro s'arrêtait juste après l'ouverture de
NomDeMonFichier, même avec des GoTo Etiquette ou des Resume Etiquette pour
renvoyer l'exécution de la macro juste après la détection de l'erreur.
Du coup, j'ai repris la méthode de Papou qui traite le risque d'erreur avec
If...Then pour éviter des renvois à des étiquettes qui pourraient faire
s'arrêter la macro. Mais là encore la macro s'arrête juste après avoir fait
Workbook.Open.

Je suis du genre patient, mais là, je crois que Excel commence par me sortir
par les yeux !

Thierry.




ben , ce qui est normal, c'est que la macro ne s'execute pas plus loin que
la fin du traitement de l'erreur TraitementErreur puisqu'il n'y a pas
d'instruction Resume ni Resume etiquette pour le faire revenir à l'endroit du
débranchement, c.à.d quand il se plante sur
Windows("NomDeMonFichier").Activate qui bien sur n'est pas ouvert.
Par contre, ce qu'il y a de surprenant, c'est qu'à l'écran, tu n'aies pas
FichierActif qui soit en 1er plan à la fin du traitement de l'erreru car il
lui a été passé la méthode Activate , sauf s'il y a d'autres instructions.

A+

ce



Salut Papou, merci de ton aide.
Mon test est simplissime :
On Error GoTo TraitementErreur
Windows("NomDeMonFichier").Activate
ensuite, la macro fait différents copier-coller entre le fichier
NomDeMonFichier et le fichier actif où se trouve la macro et se finit par un
Exit Sub. Ensuite, il y a :

TraitementErreur:
Workbooks.Open Filename:= "C:ssrépertoireNomDeMonFichier"
Windows("FichierActif").Activate
Range("A1").Select
End Sub
Mais, la macro s'arrête juste après avoir ouvert NomDeMonFichier et j'ai à
l'écran le fichier NomDeMonFichier au lieu d'être sur le fichier FichierActif
à la cellule A1.
C'est idem avec ta méthode.

Thierry



Bonjour
Ne sahcant pas comment tu fais ton test dans les fenêtres actives, voici une
manière de procéder :
Sub OuvrirFichier()
Dim LeRep$
LeRep = ThisWorkbook.Path
Const NomFic$ = "Tests22022005.xls"
Dim LaFen As Window
Dim Trouve As Boolean
For Each LaFen In Application.Windows
If LaFen.Caption = NomFic Then
Trouve = True
LaFen.Activate: Exit For
Else: Trouve = False: End If
Next LaFen
If Not Trouve Then _
Workbooks.Open (LeRep & Application.PathSeparator & NomFic)
End Sub

Cordialement
Pascal

"Thierry" a écrit dans le message de
news:

J'ai une macro qui teste la présence d'un fichier au nom précis parmis les
fichiers excel déjà ouvert. Si elle ne le trouve pas, alors elle l'ouvre.
Malheureusement, la macro s'arrête d'elle-même alors que d'autres
opérations
sont à faire après. J'utilise :
Workbooks.Open FileName:= "c:NomDeMonFichier"

Merci de m'aider