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

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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
 
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 ?
 
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
 
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
 
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 ,
 
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,
 
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
 
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 ?
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour