Microsoft 365 Importer des données d'un fichier excel à un autre avec adresse connue

sanae_J

XLDnaute Nouveau
Bonjour ,j'ai réussi à trouver un code qui permet d'importer des données d'un fichier source à un fichier destination .Le principe est le suivant j'ai mon fichier source dont la trajectoire est connue et qui comporte 3 feuilles ,avec ce code je peux copier juste les données de la feuille 2(main report) et les coller dans mon fichier destination (extraction PLM).Actuellement mon souhait c'est de ne pas figer le nom de fichier source vu qu'on pt avoir plusieurs fichiers dans cette trajectoire ,c'est à dire je souhaite avoir une boite de dialogue qui s'ouvre directement après avoir lancé la macro sur le lien du fichier et qui me permettra de choisir le fichier source avant d'exécuter le reste des opérations. Y-a-t-il un moyen d'adapter ce code à faire ça?
VB:
Sub ImportDonnées()
  ' Variables objet pour le classeur et feuille source
  Dim WbkS As Workbook, ShtS As Worksheet
  ' Autre variables
  Dim sPath As String, sFic As String
  Dim dLigS As Long
  ' Définir le chemin d'accès
  sPath = "\\Yvshn001\WZ0_SFTP\VELIZY\GAPE\00_Process_System\Project_Analysis\\"
  ' Définir le fichier source à ouvrir
  sFic = "P64_PLI-BOM-GAPE-01 CPV extraction Report x22POROx22.xlsx"
  ' Ouvrir le fichier source et définir le classeur
  Set WbkS = Workbooks.Open(sPath & sFic)
  ' Définir la feuille de travail
  Set ShtS = WbkS.Sheets("Main report")  ' Attention au nom de la feuille
  ' Dernière ligne remplie de la feuille source
  dlig = ShtS.Range("A" & Rows.count).End(xlUp).Row
  ' Copier / coller les données
  ShtS.Range("A1:AD" & dlig).Copy Destination:=ThisWorkbook.Sheets("Extraction PLM").Range("A6")
  ' Fermer le classeur source sans sauvegarder
  WbkS.Close Savechanges:=False
  ' Libérer les variables objet
  Set ShtS = Nothing: Set WbkS = Nothing
  Sheets("Extraction PLM").Activate
  MsgBox "Données PLM importées avec succès"
End Sub
 

st007

XLDnaute Barbatruc
VB:
Sub ImportDonnées()
  ' Variables objet pour le classeur et feuille source
  Dim WbkS As Workbook, ShtS As Worksheet
  ' Autre variables
  Dim sPath As String, sFic As String
  Dim dLigS As Long


   FichierData = Application.GetOpenFilename("Fichier Excel (*.xlsx), *.xlsx", , _
              "Selectionne ton fichier!")
  
    Workbooks.Open Filename:=FichierData, ReadOnly:=True
    Set Wbks = Application.Workbooks.Open(FichierData)
Set ShtS = WbkS.Sheets("Main report")  ' Attention au nom de la feuille
  ' Dernière ligne remplie de la feuille source
  dlig = ShtS.Range("A" & Rows.count).End(xlUp).Row
  ' Copier / coller les données
  ShtS.Range("A1:AD" & dlig).Copy Destination:=ThisWorkbook.Sheets("Extraction PLM").Range("A6")
  ' Fermer le classeur source sans sauvegarder
  WbkS.Close Savechanges:=False
  ' Libérer les variables objet
  Set ShtS = Nothing: Set WbkS = Nothing
  Sheets("Extraction PLM").Activate
  MsgBox "Données PLM importées avec succès"
End Sub
 

sanae_J

XLDnaute Nouveau
Merci pour ta réponse, je trouve que la trajectoire ne figure plus dans le code (sPath = "\\Yvshn001\WZ0_SFTP\VELIZY\GAPE\00_Process_System\Project_Analysis\\") du coup quand j'exécute le code , ile me renvoie pas directement vers ce chemin .Ou est ce que je dois la déclarer ?
 

sanae_J

XLDnaute Nouveau
Bonsoir, Je sais pas si c'est faisable, mais est ce possible d'ouvrir directement le chemin sans être obliger de le re saisir à chaque fois ? et même si je colle la trajectoire le reste du code ne s'exécute pas! je sais pourquoi. Merci
 

st007

XLDnaute Barbatruc
Bonjour,
je n'ai sans doutes pas tout compris à ta demande, mais essaye ceci,

VB:
Sub ImportDonnées()
    ' Variables objet pour le classeur et feuille source
    Dim WbkS        As Workbook, ShtS As Worksheet
    ' Autre variables
    Dim sPath       As String, sFic As String, Rep As String
    
    Dim dLigS       As Long
    
    Rep = "\\Yvshn001\WZ0_SFTP\VELIZY\GAPE\00_Process_System\Project_Analysis\\"
    Application.Dialogs(xlDialogOpen).Show Rep
    
    FichierData = Application.GetOpenFilename("Fichier Excel (*.xlsx), *.xlsx", , _
                  "Selectionne ton fichier!")
    
    Workbooks.Open Filename:=FichierData, ReadOnly:=True
    Set WbkS = Application.Workbooks.Open(FichierData)
    Set ShtS = WbkS.Sheets("Main report")        ' Attention au nom de la feuille
    ' Dernière ligne remplie de la feuille source
    dlig = ShtS.Range("A" & Rows.Count).End(xlUp).Row
    ' Copier / coller les données
    ShtS.Range("A1:AD" & dlig).Copy Destination:=ThisWorkbook.Sheets("Extraction PLM").Range("A6")
    ' Fermer le classeur source sans sauvegarder
    WbkS.Close Savechanges:=False
    ' Libérer les variables objet
    Set ShtS = Nothing: Set WbkS = Nothing
    Sheets("Extraction PLM").Activate
    MsgBox "Données PLM importées avec succès"
End Sub
 

sanae_J

XLDnaute Nouveau
Bonjour , merci beaucoup pour ta réactivité et ton aide. J'ai essayé le code mais une fois je sélectionne le fichier excel voulu dans la trajectoire prédéfinie : \\Yvshn001\WZ0_SFTP\VELIZY\GAPE\00_Process_System\Project_Analysis\\ et je clique sur ouvrir le reste du code ne s'exécute pas ,à savoir le fait d'aller directement dans la feuille "main report" copier les données et les coller dans ma feuille de destination " Extraction PLM".Je parle surtt de cette partie du code :
VB:
Set WbkS = Application.Workbooks.Open(FichierData)
    Set ShtS = WbkS.Sheets("Main report")        ' Attention au nom de la feuille
    ' Dernière ligne remplie de la feuille source
    dlig = ShtS.Range("A" & Rows.Count).End(xlUp).Row
    ' Copier / coller les données
    ShtS.Range("A1:AD" & dlig).Copy Destination:=ThisWorkbook.Sheets("Extraction PLM").Range("A6")
    ' Fermer le classeur source sans sauvegarder
    WbkS.Close Savechanges:=False
    ' Libérer les variables objet
    Set ShtS = Nothing: Set WbkS = Nothing
    Sheets("Extraction PLM").Activate
    MsgBox "Données PLM importées avec succès"
End Sub
je suis débutante en VBA du coup excusez moi si j'ai pas bien éclaircit les choses ,
 

st007

XLDnaute Barbatruc
Attention à l'hothographe du nom de l'onglet, il faut bien sure qu'il existe
Dans l'éditeur vba, Deboguage - Pas à pas détaillé F8, les lignes jaunissent à mesure de l'exécution, vois ce que la macro ne fait pas,
 

sanae_J

XLDnaute Nouveau
J'ai vérifié l'orthographe ,c'est bon pour le nom des feuilles .Le premier code que j'ai partagé s'exécutait sans erreur .Dans le code que vous venez de partager la ligne qui jaunisse c'est cette ligne : Workbooks.Open Filename:=FichierData, ReadOnly:=True
 

st007

XLDnaute Barbatruc
Comme le chemin réseau ne fonctionne bien sure pas chez moi, il me demande par 2 fois d'ouvrir mon fichier (ici classeur 2) si tu modifie le classeur 2, enregistre et ferme.
Ouvre classeur1 et execute la macro .....
 

Pièces jointes

  • Classeur1.xlsm
    17.9 KB · Affichages: 5
  • Classeur2.xlsx
    10.8 KB · Affichages: 4

sanae_J

XLDnaute Nouveau
Merci beaucoup pour votre aide, les données s'importent finalement avec succès , je voudrais juste savoir la différence entre les deux boites de dialogues "ouvrir" et "sélectionner ton fichier!" ,est ce qu'on peut pas avoir juste une seule pour sélectionner directement le fichier ?
Et est ce que je peux figer l'écran sur le fichier destination pour ne pas avoir le fichier source qui s'affiche à chaque fois ?
 

Discussions similaires