OVH Cloud OVH Cloud

Ouverture de classeur à partir d'une macro

10 réponses
Avatar
Angel
Bonjour messieurs dames,

Voilà mon souci que j'ai :
Je voudrais, lorsque je lance ma macro que j'ai faite, que vienne s'ouvrir une
boîte de dialogue me permettant d'aller choisir le classeur à ouvrir ET que le
nom de ce classeur soit enregistré dans une variable (après que le dit classeur
ait été ouvert).

J'ai essayé d'utiliser Workbooks.open, mais il faut lui spécifier le nom du
fichier que l'on désire ouvrir. Et moi, j'ai besoin d'en ouvrir un différent à
chaque fois.
Ca doit être possible, mais là je dois pas être en phase "possible", j'ai
cherché partout sans rien trouver (peut-être trop simple...)

Merci de votre soutien
;o)
--
+-+-+-+ Supprimer le texte entre # pour répondre si besoin +-+-+-+

10 réponses

Avatar
Pascal Engelmajer
Salut,
entre autre
Function choisirFichier()
Dim objShell, objFile, chemin
Set objShell = CreateObject("Shell.Application")
Set objFile = _
objShell.BrowseForFolder(&H0&, "Choisissez un fichier", &H4000)
On Error Resume Next
chemin = objFile.ParentFolder.ParseName(objFile.Title).Path & ""
If objFile.Title = "" Then
chemin = ""
End If
choisirFichier = chemin
End Function


--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
http://www.ilyapa.net/baseExcel
"Angel" <a_alonso@#NOSPAM#club-internet.fr> a écrit dans le message de news:
40b354a6$0$19635$
Bonjour messieurs dames,

Voilà mon souci que j'ai :
Je voudrais, lorsque je lance ma macro que j'ai faite, que vienne s'ouvrir
une

boîte de dialogue me permettant d'aller choisir le classeur à ouvrir ET
que le

nom de ce classeur soit enregistré dans une variable (après que le dit
classeur

ait été ouvert).

J'ai essayé d'utiliser Workbooks.open, mais il faut lui spécifier le nom
du

fichier que l'on désire ouvrir. Et moi, j'ai besoin d'en ouvrir un
différent à

chaque fois.
Ca doit être possible, mais là je dois pas être en phase "possible", j'ai
cherché partout sans rien trouver (peut-être trop simple...)

Merci de votre soutien
;o)
--
+-+-+-+ Supprimer le texte entre # pour répondre si besoin +-+-+-+




Avatar
tictok
J'ai une autre solution, mais il faut absolument donner un fichier sinon ca
plante (au passage, je voudrais bien savoir comment arreter la macro dans ce
cas genant).

CheminEtNom = Application.GetOpenFilename
If VarType(CheminEtNom) = vbBoolean Then _
MsgBox "Action annulée._
Else MsgBox ("Ouverture du fichier sélectionné : " & CheminEtNom)
Workbooks.Open (CheminEtNom)
Fichier = ActiveWorkbook.Name

De cette facon, tu ouvres le fichier selectionne et tu recuperes son nom
dans la variable Fichier.

Pascal, pourquoi ce code (qui marche) n'a pas besoin de Shell.Application et
consorts, alors que toi oui ?

"Pascal Engelmajer" escreveu na mensagem
news:#$8#
Salut,
entre autre
Function choisirFichier()
Dim objShell, objFile, chemin
Set objShell = CreateObject("Shell.Application")
Set objFile = _
objShell.BrowseForFolder(&H0&, "Choisissez un fichier", &H4000)
On Error Resume Next
chemin = objFile.ParentFolder.ParseName(objFile.Title).Path & ""
If objFile.Title = "" Then
chemin = ""
End If
choisirFichier = chemin
End Function


--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
http://www.ilyapa.net/baseExcel
"Angel" <a_alonso@#NOSPAM#club-internet.fr> a écrit dans le message de
news:

40b354a6$0$19635$
Bonjour messieurs dames,

Voilà mon souci que j'ai :
Je voudrais, lorsque je lance ma macro que j'ai faite, que vienne
s'ouvrir


une
boîte de dialogue me permettant d'aller choisir le classeur à ouvrir ET
que le

nom de ce classeur soit enregistré dans une variable (après que le dit
classeur

ait été ouvert).

J'ai essayé d'utiliser Workbooks.open, mais il faut lui spécifier le nom
du

fichier que l'on désire ouvrir. Et moi, j'ai besoin d'en ouvrir un
différent à

chaque fois.
Ca doit être possible, mais là je dois pas être en phase "possible",
j'ai


cherché partout sans rien trouver (peut-être trop simple...)

Merci de votre soutien
;o)
--
+-+-+-+ Supprimer le texte entre # pour répondre si besoin +-+-+-+








Avatar
Pascal Engelmajer
Salut,
avec On Error ...
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
http://www.ilyapa.net/baseExcel
"tictok" a écrit dans le message de news:

J'ai une autre solution, mais il faut absolument donner un fichier sinon
ca

plante (au passage, je voudrais bien savoir comment arreter la macro dans
ce

cas genant).

CheminEtNom = Application.GetOpenFilename
If VarType(CheminEtNom) = vbBoolean Then _
MsgBox "Action annulée._
Else MsgBox ("Ouverture du fichier sélectionné : " & CheminEtNom)
Workbooks.Open (CheminEtNom)
Fichier = ActiveWorkbook.Name

De cette facon, tu ouvres le fichier selectionne et tu recuperes son nom
dans la variable Fichier.

Pascal, pourquoi ce code (qui marche) n'a pas besoin de Shell.Application
et

consorts, alors que toi oui ?

"Pascal Engelmajer" escreveu na
mensagem

news:#$8#
Salut,
entre autre
Function choisirFichier()
Dim objShell, objFile, chemin
Set objShell = CreateObject("Shell.Application")
Set objFile = _
objShell.BrowseForFolder(&H0&, "Choisissez un fichier", &H4000)
On Error Resume Next
chemin = objFile.ParentFolder.ParseName(objFile.Title).Path & ""
If objFile.Title = "" Then
chemin = ""
End If
choisirFichier = chemin
End Function


--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
http://www.ilyapa.net/baseExcel
"Angel" <a_alonso@#NOSPAM#club-internet.fr> a écrit dans le message de
news:

40b354a6$0$19635$
Bonjour messieurs dames,

Voilà mon souci que j'ai :
Je voudrais, lorsque je lance ma macro que j'ai faite, que vienne
s'ouvrir


une
boîte de dialogue me permettant d'aller choisir le classeur à ouvrir
ET



que le
nom de ce classeur soit enregistré dans une variable (après que le dit
classeur

ait été ouvert).

J'ai essayé d'utiliser Workbooks.open, mais il faut lui spécifier le
nom



du
fichier que l'on désire ouvrir. Et moi, j'ai besoin d'en ouvrir un
différent à

chaque fois.
Ca doit être possible, mais là je dois pas être en phase "possible",
j'ai


cherché partout sans rien trouver (peut-être trop simple...)

Merci de votre soutien
;o)
--
+-+-+-+ Supprimer le texte entre # pour répondre si besoin +-+-+-+












Avatar
tictok
C'est vrai. Merci !


"Pascal Engelmajer" escreveu na mensagem
news:
Salut,
avec On Error ...
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
http://www.ilyapa.net/baseExcel
"tictok" a écrit dans le message de news:

J'ai une autre solution, mais il faut absolument donner un fichier sinon
ca

plante (au passage, je voudrais bien savoir comment arreter la macro
dans


ce
cas genant).

CheminEtNom = Application.GetOpenFilename
If VarType(CheminEtNom) = vbBoolean Then _
MsgBox "Action annulée._
Else MsgBox ("Ouverture du fichier sélectionné : " & CheminEtNom)
Workbooks.Open (CheminEtNom)
Fichier = ActiveWorkbook.Name

De cette facon, tu ouvres le fichier selectionne et tu recuperes son nom
dans la variable Fichier.

Pascal, pourquoi ce code (qui marche) n'a pas besoin de
Shell.Application


et
consorts, alors que toi oui ?

"Pascal Engelmajer" escreveu na
mensagem

news:#$8#
Salut,
entre autre
Function choisirFichier()
Dim objShell, objFile, chemin
Set objShell = CreateObject("Shell.Application")
Set objFile = _
objShell.BrowseForFolder(&H0&, "Choisissez un fichier",
&H4000)



On Error Resume Next
chemin = objFile.ParentFolder.ParseName(objFile.Title).Path & ""
If objFile.Title = "" Then
chemin = ""
End If
choisirFichier = chemin
End Function


--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
http://www.ilyapa.net/baseExcel
"Angel" <a_alonso@#NOSPAM#club-internet.fr> a écrit dans le message de
news:

40b354a6$0$19635$
Bonjour messieurs dames,

Voilà mon souci que j'ai :
Je voudrais, lorsque je lance ma macro que j'ai faite, que vienne
s'ouvrir


une
boîte de dialogue me permettant d'aller choisir le classeur à ouvrir
ET



que le
nom de ce classeur soit enregistré dans une variable (après que le
dit




classeur
ait été ouvert).

J'ai essayé d'utiliser Workbooks.open, mais il faut lui spécifier le
nom



du
fichier que l'on désire ouvrir. Et moi, j'ai besoin d'en ouvrir un
différent à

chaque fois.
Ca doit être possible, mais là je dois pas être en phase "possible",
j'ai


cherché partout sans rien trouver (peut-être trop simple...)

Merci de votre soutien
;o)
--
+-+-+-+ Supprimer le texte entre # pour répondre si besoin +-+-+-+
















Avatar
tictok
En fait, pour eviter l'erreur et force l'utilisateur a selectionner un
fichier, j'avais pense a une boucle Until comme :
CheminEtNom=1
Do Until CheminEtNom <> "False"
CheminEtNom = Application.GetOpenFilename
If VarType(CheminEtNom) = vbBoolean Then _
MsgBox "Action annulée._
Else MsgBox ("Ouverture du fichier sélectionné : " & CheminEtNom)
Loop
Workbooks.Open (CheminEtNom)
Fichier = ActiveWorkbook.Name

Car si aucun fichier n'est selectionne, CheminEtNom vaut "False".
Le probleme est que ca ne marche pas. Une mauvaise initialisation ?

"Pascal Engelmajer" escreveu na mensagem
news:
Salut,
avec On Error ...
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
http://www.ilyapa.net/baseExcel


Avatar
Pascal Engelmajer
Salut,
'il faut de préférence déclarer les variables
Dim cheminEtNom As Variant
Dim fichier As String
cheminEtNom = False
Do Until cheminEtNom <> False 'et non "false"
cheminEtNom = Application.GetOpenFilename
If VarType(cheminEtNom) = vbBoolean Then
MsgBox "Action annulée."
Else
MsgBox ("Ouverture du fichier sélectionné : " & cheminEtNom)
End If
Loop
Workbooks.Open (cheminEtNom)
fichier = ActiveWorkbook.Name
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
http://www.ilyapa.net/baseExcel
"tictok" a écrit dans le message de news:
#
En fait, pour eviter l'erreur et force l'utilisateur a selectionner un
fichier, j'avais pense a une boucle Until comme :
CheminEtNom=1
Do Until CheminEtNom <> "False"
CheminEtNom = Application.GetOpenFilename
If VarType(CheminEtNom) = vbBoolean Then _
MsgBox "Action annulée._
Else MsgBox ("Ouverture du fichier sélectionné : " & CheminEtNom)
Loop
Workbooks.Open (CheminEtNom)
Fichier = ActiveWorkbook.Name

Car si aucun fichier n'est selectionne, CheminEtNom vaut "False".
Le probleme est que ca ne marche pas. Une mauvaise initialisation ?

"Pascal Engelmajer" escreveu na
mensagem

news:
Salut,
avec On Error ...
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
http://www.ilyapa.net/baseExcel






Avatar
tictok
J'ai pris "False" pour initialiser CheminEtNom et ca a super bien marche !
Je vais tout de meme essayer ton code.

"Pascal Engelmajer" escreveu na mensagem
news:
Salut,
'il faut de préférence déclarer les variables
Dim cheminEtNom As Variant
Dim fichier As String
cheminEtNom = False
Do Until cheminEtNom <> False 'et non "false"
cheminEtNom = Application.GetOpenFilename
If VarType(cheminEtNom) = vbBoolean Then
MsgBox "Action annulée."
Else
MsgBox ("Ouverture du fichier sélectionné : " & cheminEtNom)
End If
Loop
Workbooks.Open (cheminEtNom)
fichier = ActiveWorkbook.Name
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
http://www.ilyapa.net/baseExcel
"tictok" a écrit dans le message de news:
#
En fait, pour eviter l'erreur et force l'utilisateur a selectionner un
fichier, j'avais pense a une boucle Until comme :
CheminEtNom=1
Do Until CheminEtNom <> "False"
CheminEtNom = Application.GetOpenFilename
If VarType(CheminEtNom) = vbBoolean Then _
MsgBox "Action annulée._
Else MsgBox ("Ouverture du fichier sélectionné : " & CheminEtNom)
Loop
Workbooks.Open (CheminEtNom)
Fichier = ActiveWorkbook.Name

Car si aucun fichier n'est selectionne, CheminEtNom vaut "False".
Le probleme est que ca ne marche pas. Une mauvaise initialisation ?

"Pascal Engelmajer" escreveu na
mensagem

news:
Salut,
avec On Error ...
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
http://www.ilyapa.net/baseExcel










Avatar
Pascal Engelmajer
Salut,
sur maintenant le test est bon
Until CheminEtNom <> "False"
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
http://www.ilyapa.net/baseExcel
"tictok" a écrit dans le message de news:
#
J'ai pris "False" pour initialiser CheminEtNom et ca a super bien marche !
Je vais tout de meme essayer ton code.

"Pascal Engelmajer" escreveu na
mensagem

news:
Salut,
'il faut de préférence déclarer les variables
Dim cheminEtNom As Variant
Dim fichier As String
cheminEtNom = False
Do Until cheminEtNom <> False 'et non "false"
cheminEtNom = Application.GetOpenFilename
If VarType(cheminEtNom) = vbBoolean Then
MsgBox "Action annulée."
Else
MsgBox ("Ouverture du fichier sélectionné : " & cheminEtNom)
End If
Loop
Workbooks.Open (cheminEtNom)
fichier = ActiveWorkbook.Name
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
http://www.ilyapa.net/baseExcel
"tictok" a écrit dans le message de news:
#
En fait, pour eviter l'erreur et force l'utilisateur a selectionner un
fichier, j'avais pense a une boucle Until comme :
CheminEtNom=1
Do Until CheminEtNom <> "False"
CheminEtNom = Application.GetOpenFilename
If VarType(CheminEtNom) = vbBoolean Then _
MsgBox "Action annulée._
Else MsgBox ("Ouverture du fichier sélectionné : " & CheminEtNom)
Loop
Workbooks.Open (CheminEtNom)
Fichier = ActiveWorkbook.Name

Car si aucun fichier n'est selectionne, CheminEtNom vaut "False".
Le probleme est que ca ne marche pas. Une mauvaise initialisation ?

"Pascal Engelmajer" escreveu na
mensagem

news:
Salut,
avec On Error ...
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il
va."




Sénèque.
http://www.ilyapa.net/excel
http://www.ilyapa.net/baseExcel














Avatar
tictok
J'ai pris "False" pour initialiser CheminEtNom et ca a super bien marche !
Mais avec ton code, j'ai bien l'affichage de la MsgBox, ce qui est plus
"propre" . Merci beaucoup !
Encore une fois, Pascal trouve reponse a toutes les questions (c'est un Dieu
:D ).

"Pascal Engelmajer" escreveu na mensagem
news:
Salut,
'il faut de préférence déclarer les variables
Dim cheminEtNom As Variant
Dim fichier As String
cheminEtNom = False
Do Until cheminEtNom <> False 'et non "false"
cheminEtNom = Application.GetOpenFilename
If VarType(cheminEtNom) = vbBoolean Then
MsgBox "Action annulée."
Else
MsgBox ("Ouverture du fichier sélectionné : " & cheminEtNom)
End If
Loop
Workbooks.Open (cheminEtNom)
fichier = ActiveWorkbook.Name
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
http://www.ilyapa.net/baseExcel
"tictok" a écrit dans le message de news:
#
En fait, pour eviter l'erreur et force l'utilisateur a selectionner un
fichier, j'avais pense a une boucle Until comme :
CheminEtNom=1
Do Until CheminEtNom <> "False"
CheminEtNom = Application.GetOpenFilename
If VarType(CheminEtNom) = vbBoolean Then _
MsgBox "Action annulée._
Else MsgBox ("Ouverture du fichier sélectionné : " & CheminEtNom)
Loop
Workbooks.Open (CheminEtNom)
Fichier = ActiveWorkbook.Name

Car si aucun fichier n'est selectionne, CheminEtNom vaut "False".
Le probleme est que ca ne marche pas. Une mauvaise initialisation ?

"Pascal Engelmajer" escreveu na
mensagem

news:
Salut,
avec On Error ...
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
http://www.ilyapa.net/baseExcel










Avatar
Angel
Sans vouloir me vanter, je vous trouve un peu géniaux, les mecs.
;oD
Merci encore

--
"tictok" a écrit dans le message de
news:
| J'ai pris "False" pour initialiser CheminEtNom et ca a super bien marche !
| Mais avec ton code, j'ai bien l'affichage de la MsgBox, ce qui est plus
| "propre" . Merci beaucoup !
| Encore une fois, Pascal trouve reponse a toutes les questions (c'est un Dieu
| :D ).
|
| "Pascal Engelmajer" escreveu na mensagem
| news:
| > Salut,
| > 'il faut de préférence déclarer les variables
| > Dim cheminEtNom As Variant
| > Dim fichier As String
| > cheminEtNom = False
| > Do Until cheminEtNom <> False 'et non "false"
| > cheminEtNom = Application.GetOpenFilename
| > If VarType(cheminEtNom) = vbBoolean Then
| > MsgBox "Action annulée."
| > Else
| > MsgBox ("Ouverture du fichier sélectionné : " & cheminEtNom)
| > End If
| > Loop
| > Workbooks.Open (cheminEtNom)
| > fichier = ActiveWorkbook.Name
| > --
| > Amicalement.
| > Pascal
| > "il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
| > Sénèque.
| > http://www.ilyapa.net/excel
| > http://www.ilyapa.net/baseExcel
| > "tictok" a écrit dans le message de news:
| > #
| > > En fait, pour eviter l'erreur et force l'utilisateur a selectionner un
| > > fichier, j'avais pense a une boucle Until comme :
| > > CheminEtNom=1
| > > Do Until CheminEtNom <> "False"
| > > CheminEtNom = Application.GetOpenFilename
| > > If VarType(CheminEtNom) = vbBoolean Then _
| > > MsgBox "Action annulée._
| > > Else MsgBox ("Ouverture du fichier sélectionné : " & CheminEtNom)
| > > Loop
| > > Workbooks.Open (CheminEtNom)
| > > Fichier = ActiveWorkbook.Name
| > >
| > > Car si aucun fichier n'est selectionne, CheminEtNom vaut "False".
| > > Le probleme est que ca ne marche pas. Une mauvaise initialisation ?
| > >
| > > "Pascal Engelmajer" escreveu na
| > mensagem
| > > news:
| > > > Salut,
| > > > avec On Error ...
| > > > --
| > > > Amicalement.
| > > > Pascal
| > > > "il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
| > > > Sénèque.
| > > > http://www.ilyapa.net/excel
| > > > http://www.ilyapa.net/baseExcel
| > >
| > >
| >
| >
|
|