Récupérer une donnée dans une inputbox

Résolu
lana -  
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

Je cherche une méthode qui permet de récupérer le nom d'un fichier excel entré par un utilisateur via une inputbox pour ensuite l'appliquer automatiquement dans mes macros.
Voici ce que j'ai fait pour le moment:

Sub Ouvrir()

Dim fichier

fichier = InputBox("Entrez le nom du fichier")
ChDir "d:\Documents and Settings\docs infos"
Workbooks.Open Filename:=fichier

Workbooks(" & fichier.xls").Worksheets("Données Gr").Range("A1").EntireRow.Copy Workbooks("Essai.xls").Worksheets("Feuil1").Range("A1")

end sub

Mais cela ne fonctionne pas. Est-ce que quelqu'un sait comment faire pour appliquer la valeur de ma variable "fichier" dans mes macros sans avoir à la reécrire manuellement?

Merci ^^

1 réponse

pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 762
 
Bonjour,
Peut être comme ceci :
Workbooks(fichier).Worksheets("Données Gr").Range("A1").EntireRow.Copy Workbooks("Essai.xls").Worksheets("Feuil1").Range("A1") 
0
lana
 
J'ai fait comme tu as dit et du coup mon erreur se trouve au niveau du workbooks.open filename:=fichier. Sais-tu pourquoi?
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 762
 
Sais-tu pourquoi? Etant personnellement devin, proche de Nostradamus, je pense que si cela ne fonctionne pas, c'est qu'il y a une erreur...
Personnellement, lorsque je dois faire ouvrir un fichier par une macro, je procède comme ceci :
Sub Ouvrir() 
Dim Fichier As String
    Fichier = Application.GetOpenFilename(FileFilter:="(*.*),*.*" _
            , Title:="Sélectionnez le fichier")
    If Fichier = "Faux" Then 'pas de sélection faite
        Exit Sub
    End If
Workbooks.Open Filename:=Fichier
Fichier = ActiveWorkbook.Name
Workbooks(Fichier).Worksheets("Données Gr").Range("A1").EntireRow.Copy Workbooks("Essai.xls").Worksheets("Feuil1").Range("A1") 
end sub

Merci à Lermitte222 pour cette astuce
0
lana
 
T'en as de la chance d'être presque aussi fort que Nostradamus. Heureusement que tu m'en fais part également, je n'aurais pas pensé qu'il y avait une erreur..

J'obtiens le message d'erreur (l'indice n'appartient pas à la sélection) en écrivant ceci:

Option Explicit
Public fichier As String

Sub Ouvrir()
Dim ChDir As String

ChDir = "d:\Documents and Settings\docs infos\"
fichier = InputBox("Entrez le nom du fichier", "Téléchargement des données")
If fichier = "" Then Exit Sub
On Error GoTo NonTrouve
Workbooks.Open ChDir & fichier & ".xls"
Exit Sub
NonTrouve:
MsgBox "Fichier:" & fichier & ".xls non trouvé dans: " & ChDir

fichier = ActiveWorkbook.Name
Workbooks(fichier).Worksheets("Données Gr").Range("A1").EntireRow.Copy Workbooks("Essai.xls").Worksheets("Feuil1").Range("A1")

End Sub

il me surligne en jaune la procédure de copie de la ligne.
j'ai aussi essayé avec workbooks( fichier & ".xls") mais ça ne va pas non plus..

Merci en tout cas pour ton aide pijaku :)
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 762
 
ouplala!!!! C'est quoi ça : Dim ChDir As String ?????
Ma macro ne te convenait pas?
l'indice n'appartient pas à la sélection signifie qu'il n'arrive pas à atteindre soit le classeur, soit la feuille soit le range concerné...
Ta macro est sens dessus dessous...
Option Explicit  
Public fichier As String  

Sub Ouvrir()  
Dim ChDir As String '????????????????????????????????? 

ChDir = "d:\Documents and Settings\docs infos\"  
fichier = InputBox("Entrez le nom du fichier", "Téléchargement des données")  
If fichier = "" Then Exit Sub  
On Error GoTo NonTrouve  
Workbooks.Open ChDir & fichier & ".xls" 'tu ouvres le fichier et............ 
Exit Sub '..... tu quittes la macro?????? 
NonTrouve: 'par contre ici tu ne trouves pas le fichier 
MsgBox "Fichier:" & fichier & ".xls non trouvé dans: " & ChDir  

fichier = ActiveWorkbook.Name 'mais tu lui attribue un nom 
Workbooks(fichier).Worksheets("Données Gr").Range("A1").EntireRow.Copy Workbooks("Essai.xls").Worksheets("Feuil1").Range("A1")  

End Sub 

je t'ai mis des commentaires dans ton code.
En fait, ta macro n'effectue la copie de ligne que dans le cas ou le fichier n'a pas été trouvé...... Marche pas? Ah bon? Si vraiment ma macro te gène, essaie celle ci :
Option Explicit 
Public fichier As String 

Sub Ouvrir() 
Dim chemin As String 
chemin = "D:\Documents and Settings\docs infos\" 
ChDir chemin 
fichier = InputBox("Entrez le nom du fichier", "Téléchargement des données") 
If fichier = "" Then Exit Sub 
On Error GoTo NonTrouve 
Workbooks.Open fichier & ".xls" 
fichier = ActiveWorkbook.Name 
Workbooks(fichier).Worksheets("Données Gr").Range("A1").EntireRow.Copy Workbooks("Essai.xls").Worksheets("Feuil1").Range("A1") 
Exit Sub 
NonTrouve: 
MsgBox "Fichier:" & fichier & ".xls non trouvé dans: " & chemin 
End Sub 
 
0
lana
 
Merci pour tes indications Pijaku. Je vais devoir partir mais lundi je reprendrai ce que tu m'as écrit pour l'appliquer et je te tiendrai au courant!
bon week end
0