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

Résolu
lana -  
pijaku Messages postés 13513 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

  1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    Bonjour,
    Peut être comme ceci :
    Workbooks(fichier).Worksheets("Données Gr").Range("A1").EntireRow.Copy Workbooks("Essai.xls").Worksheets("Feuil1").Range("A1") 
    0
    1. 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
    2. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      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
    3. 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
    4. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      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
    5. 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