Microsoft 365 Importer via vba les données et la mise en forme d'une feuille dans un autre classeur

Jefflet

XLDnaute Nouveau
Bonjour à toutes et tous,

Je suis à la recherche d'une macro qui me permettrait d'importer les données présentes sur une feuille tout en gardant la mise en forme dans une feuille nommée CIBLE
Lorsque l'utilisateur active la macro sur le fichier cible cela lui importe l'ensemble des informations du fichier source (données et source)
En exemple le fichier source et cible.

Merci à vous,

Jean-François
 

Pièces jointes

  • CIBLE.xlsx
    8.2 KB · Affichages: 4
  • SOURCE.xlsx
    16.8 KB · Affichages: 4

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir,
Lorsque l'utilisateur active la macro sur le fichier cible cela lui importe l'ensemble des informations du fichier source (données et source)
Cela revient à copier la feuille de Source vers Cible.
Un essai en PJ, les deux fichier doivent être dans le même dossier, avec :
VB:
Sub Importer()
    Application.ScreenUpdating = False
    NomFichier = "Source.xlsx"
    FichierCourant = ThisWorkbook.Name
    Workbooks.Open ThisWorkbook.Path & "\" & NomFichier
    Workbooks(FichierCourant).Activate
    Set Source = Workbooks(NomFichier)
    Set Cible = Workbooks(FichierCourant)
    Source.Sheets("Source").Copy after:=Cible.Sheets(Worksheets.Count)  ' Copie la feuille source
    Application.CutCopyMode = False
    Workbooks(NomFichier).Close Savechanges:=False                      ' Ferme le fichier source sans enregistrer
    Application.DisplayAlerts = False
    Sheets("Source").Delete                                             ' Supprime la feuille Source
    ActiveSheet.Name = "Source"                                         ' Renomme la nouvelle feuille Source
    Application.ScreenUpdating = True
    Application.EnableEvents = True
End Sub
 

Pièces jointes

  • CIBLE.xlsm
    14.8 KB · Affichages: 3

Jefflet

XLDnaute Nouveau
Et quand les deux fichiers ne se trouvent pas dans le même dossier ?
Je souhaite avoir un dossier sur un serveur partagé et l'autre sur mon drive

Merci à vous
Bonsoir,

Cela revient à copier la feuille de Source vers Cible.
Un essai en PJ, les deux fichier doivent être dans le même dossier, avec :
VB:
Sub Importer()
    Application.ScreenUpdating = False
    NomFichier = "Source.xlsx"
    FichierCourant = ThisWorkbook.Name
    Workbooks.Open ThisWorkbook.Path & "\" & NomFichier
    Workbooks(FichierCourant).Activate
    Set Source = Workbooks(NomFichier)
    Set Cible = Workbooks(FichierCourant)
    Source.Sheets("Source").Copy after:=Cible.Sheets(Worksheets.Count)  ' Copie la feuille source
    Application.CutCopyMode = False
    Workbooks(NomFichier).Close Savechanges:=False                      ' Ferme le fichier source sans enregistrer
    Application.DisplayAlerts = False
    Sheets("Source").Delete                                             ' Supprime la feuille Source
    ActiveSheet.Name = "Source"                                         ' Renomme la nouvelle feuille Source
    Application.ScreenUpdating = True
    Application.EnableEvents = True
End Sub
 

Jefflet

XLDnaute Nouveau
Bonjour,

Merci beaucoup pour l'aide.
Comme vous avez pu le constater je suis novice sur le sujet, pourriez-vous m'écrire le code avec les liens dans la formule svp car quand je le réalise cela ne fonctionne pas.

Merci à vous,


Le nom du fichier source est source.xlsm et cible.xlsm

exemple de lien pour les inclure dans le code
https://adressedufichiersource
https://adressedufichiercible

Merci à vous,

Jefflet

Sub Importer()
Application.ScreenUpdating = False
NomFichier = "Source.xlsx"
FichierCourant = ThisWorkbook.Name
Workbooks.Open ThisWorkbook.Path & "\" & NomFichier
Workbooks(FichierCourant).Activate
Set Source = Workbooks(NomFichier)
Set Cible = Workbooks(FichierCourant)
Source.Sheets("Source").Copy after:=Cible.Sheets(Worksheets.Count) ' Copie la feuille source
Application.CutCopyMode = False
Workbooks(NomFichier).Close Savechanges:=False ' Ferme le fichier source sans enregistrer
Application.DisplayAlerts = False
Sheets("Source").Delete ' Supprime la feuille Source
ActiveSheet.Name = "Source" ' Renomme la nouvelle feuille Source
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 105
Messages
2 085 350
Membres
102 870
dernier inscrit
Armisa