Utilisation d'un fichier excel fermé dans un fichier excel ouver

Résolu
Hugues -  
 Hugues -
Bonjour,



Je souhaiterais transférer une plage de donnée d'un fichier excel fermé vers un fichier excel ouvert.
Le problème c'est aussi que le nom du fichier excel appelé dépends d'un choix dans le premier fichier,

Est-ce possible ?

Merci à tous !

5 réponses

  1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    Le problème c'est aussi que le nom du fichier excel appelé dépends d'un choix dans le premier fichier,

    Le premier fichier est celui qui est ouvert ???
    0
    1. Hugues
       
      En effet,

      L'utilisateur entre un nom dans le fichier ouvert, le but est de récupérer les données d'un fichier fermé du même nom que l'entrée dans le fichier ouvert...
      0
    2. Hugues
       
      Oui j'ai déjà eu 20 h d'enseignement dessus, cependant nous n'avons jamais parlé de communications entre les fichiers, je vais voir votre tutoriel
      0
  2. Hugues
     
    Ce que je souhaite faire semble correspondre à cette macro car elle est utilisée sur un autre fichier que je n'ai pas crée mais que j'utilise.

    En revanche je n'arrive pas à utiliser cette macro sur mon tableur... Quelles sont les modifications à apporter (chemin du fichier...) et où doit-je les faire ?

    Sub recupdonnees()

    1-Application.ScreenUpdating = False
    2-Application.DisplayAlerts = False

    3-'Récupération de données

    4-Nom_fichier = ActiveWorkbook.Name
    5- Windows(Nom_fichier).Activate
    6- chemin = ActiveWorkbook.Path
    7- 'Sheets("Carac. capteur").Visible = True
    8- 'Sheets("résultats h-h").Visible = True

    9- Sheets("Carac. capteur").Select

    10- ZoneClimatique = Range("E7").Value

    11- 'Récupérer les données climatiques
    12-Workbooks.Open (chemin & "\Météo 2012\" & ZoneClimatique)
    13-recup = ActiveWorkbook.Name

    14-Range("K3:K8762,O3:O8762,P3:P8762,M3:M8762,N3:N8762,R3:R8762,S3:S8762").Select
    15- Selection.Copy
    16- Workbooks(Nom_fichier).Activate

    17- Sheets("résultats h-h").Select
    18- Range("K3").Select
    19- Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

    20- Workbooks(recup).Close savechanges:=False
    21-Workbooks(Nom_fichier).Activate

    22- Sheets("Carac. capteur").Select
    23- Application.ScreenUpdating = False

    'Fin récupération donnée
    End Sub
    0
  3. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    ici:
    6- chemin = ActiveWorkbook.Path
    en mettre le chemin reel sur disque: "C:\monrepertoire\"

    ou
    en remplacent chemin par le chemin reel sur disque
    12-Workbooks.Open (chemin & "\Météo 2012\" & ZoneClimatique)
    0
  4. Hugues
     
    Après le chemin remplacé et la plage de donnée copiée, où doit-je écrire pour la copier sur mon fichier ouvert ?

    Je crois que mes connaissances en vba sont très juste pour mon problème ...
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Re,

    pouvez-vous mettres vos fichiers (celui qui doit etre ouvert et celui qui doit etre ferme) a dispo (passez par les MP si vous le voulez)

    il faut passer par un site de pièce jointe tel que cjoint.com

    Allez sur ce site : https://www.cjoint.com/
    Clic sur parcourir,
    Cherche ton fichier,
    clic sur ouvrir,
    Clic sur "Créer le lien cjoint",
    Copier le lien,
    Revenir ici le coller dans une réponse...
    0
    1. Hugues
       
      Merci bcp pour tes réponses,

      Les fichiers sont interne à l'entreprise j'ai donc fais des fichiers factices qui correspondent au problème;
      Le fichier de base (1) :
      http://cjoint.com/?EDoqVLEULzL

      L'utilisateur choisit sa zone climatique ici H1a ou H2b

      Ensuite je souhaiterais récupérer les données de ces fichiers (2) (données de taille identiques A1:T8764) :

      http://cjoint.com/?EDormOmOfjI

      http://cjoint.com/?EDorngI76LO

      En fonction de l'entrée de l'utilisateur dans le fichier de base (1) , on récupère les donnée du fichiers (2) qui comporte le nom entré par l'utilisateur.
      On copie ensuite les données dans la feuille nommée "Calcul" sur les cellules A5:T8769.
      0
    2. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717 > Hugues
       
      Bonjour,
      Je recupere vos fichier et vous tiens au courant

      A+
      0
    3. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717 > f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention  
       
      Bonjour,

      un exemple en ouvrant le fichier selectionne: https://www.cjoint.com/c/EDqjiI3tRem

      pourquoi voulez-vous que ce soit fichier ferme ?????
      0
    4. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717 > f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention  
       
      Re,

      un exemple fichier ferme: https://www.cjoint.com/c/EDqkw7OBk2K

      pensez a changez le chemin sur le disque pour le fichier
      0
    5. Hugues
       
      Cela fonctionne !
      Merci beaucoup pour ton aide et ton temps passé !
      Voici donc le code qui a fonctionné pour moi :

      Private Sub Worksheet_Change(ByVal Target As Range)
          If Not Application.Intersect(Target, Range("B2")) Is Nothing And Target.Count = 1 And Target <> Empty Then
              Application.ScreenUpdating = False
              Classeur = Target
              Workbooks.Open ("Chemin d'accès\" & Classeur & ".xls")
              TInfos = Worksheets(Classeur).Range("A1:T8764")
              ThisWorkbook.Worksheets("Calculs").Range("A5:T8769") = TInfos
              Workbooks(Classeur & ".xls").Close
              Worksheets("Calculs").Activate
          End If
          Application.ScreenUpdating = True
      End Sub
      0