Copier-Coller des données d'un fichier different à l'aide d'une macro

kev1

XLDnaute Nouveau
Bonjour,

je souhaiterais effectuer l'action suivante à l'aide d'une macro.
J'aimerais que lorsque j'appuie sur le bouton du ficher HFJ, la fenetre ouvrir d'Excel s'affiche à l'ecran et que je puisse selectionner le fichier HFJ-7 (le nom change en fonction des jours) puis copie les données de l'onglet "History_Forecast DD" et colle dans l'onglet "History & Forecast D-7" du fichier HFJ

Merci de votre aide
 

Pièces jointes

  • HFJ.xlsm
    103 KB · Affichages: 23
  • HFJ-7.xlsm
    100.2 KB · Affichages: 34
  • HFJ.xlsm
    103 KB · Affichages: 26
  • HFJ.xlsm
    103 KB · Affichages: 25

don_pets

XLDnaute Occasionnel
Re : Copier-Coller des données d'un fichier different à l'aide d'une macro

'llo

Voici mon idée :

' Importer
Dim nom$, WBKSource As Workbook
With Application.FileDialog(msoFileDialogOpen)
.Title = "Yeaaa choose your Fichier"
.Filters.Clear
.Filters.Add "Ton Tableur", "*.xlsX*, *.Xlsm*, *.Xls*"
.AllowMultiSelect = False
If .Show <> 0 Then
nom = .SelectedItems(1)
Set WBKSource = Workbooks.Open(nom)
With WBKSource
.ActiveSheet.Copy Before:=ThisWorkbook.Sheets(1)
.Close False
End With
Else
MsgBox "Boaaa t'veux rien !", , "dô_Ôb": Exit Sub
End If
End With

' Renommer l'onglet '
temp = ThisWorkbook.Sheets(1).Name

' Le placer à la fin '
Sheets(temp).Move after:=Sheets(Sheets.Count)

' Copier Coller le contenu
Sheets(temp).Activate
ActiveSheet.UsedRange.Select
Selection.Copy

Sheets("History & Forecast D-7").Activate
Sheets("History & Forecast D-7").Range("A65536").End(xlUp).Offset(1, 0).Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False

' Supprimer l'onglet inutile
Application.DisplayAlerts = False
Sheets(temp).Delete
Application.DisplayAlerts = True
 

don_pets

XLDnaute Occasionnel
Re : Copier-Coller des données d'un fichier different à l'aide d'une macro

explications :
- En un tu sélectionnes le fichier que tu souhaites importer
- En 2, il va en copier le contenu pour le coller dans un onglet temp
- En 3, il le colle à la suite de ton onglet -7
- Et enfin, il supprime l'onglet temporaire

Cela te semble-t-il coller à ta demande ?
 

kev1

XLDnaute Nouveau
Re : Copier-Coller des données d'un fichier different à l'aide d'une macro

Je suis debutant en VBA. Peux tu me guider pas à pas pour savoir où je dois ecrire la commande ou bien m'envoyer le fichier directement avec la macro?

Merci
 

don_pets

XLDnaute Occasionnel
Re : Copier-Coller des données d'un fichier different à l'aide d'une macro

Voilà,

Pour info, tu cliques juste le bouton de l'onglet accueil, et il va lancer automatiquement la macro
 

Pièces jointes

  • HFJ.xlsm
    195.8 KB · Affichages: 28
  • HFJ.xlsm
    195.8 KB · Affichages: 38
  • HFJ.xlsm
    195.8 KB · Affichages: 34

Robert

XLDnaute Barbatruc
Repose en paix
Re : Copier-Coller des données d'un fichier different à l'aide d'une macro

Bonsoir le fil, bonsoir le forum,

J'avais commencé à plancher dessus, puis j'ai dû interrompre alors que j'avais presque terminé... C'est très similaire au code de don_pets mais j'envoie quand même puisque j'avais pris la peine de commenter le code...
Tu n'as pas précisé si, quand tu collais les valeurs, c'était en effaçant les anciennes ou en les plaçant en dessous de celles-ci. Tu adapteras selon, je t'ai laissé les indications pour...
Le code :

Code:
Sub Bouton1_Cliquer()
Dim CD As Workbook 'déclare la variable CD (Classeur Destination)
Dim OD As Object 'déclare la variable OD (Onglet Destination)
Dim CH As String 'déclare la variable CH (Chemin d'accès)
Dim F As Boolean 'déclare la variable F (Fichier)
Dim CS As Workbook 'déclare la variable CS (Classeur Source)
Dim OS As Object 'déclare la variable OS (Onglet Source)
Dim DEST As Range 'déclare la variable DEST (cellule de DESTination)

Set CD = ThisWorkbook 'définit le classeur de destination CD
Set OD = CD.Sheets("History & Forecast D-7") 'définit l'onglet de destination OD
CH = CD.Path 'définit le chemin CH
'affiche la boîte de dialogue "Ouvrir" avec comme dossier par défaut le dossier contenant ce fichier et
'avec comme liste tous les fichiers .xlsm commençant par "HFJ-"
F = Application.Dialogs(xlDialogOpen).Show(CH & "\HFJ-*.xlsm")
If F = True Then 'condition 1 : si un fichier est ouvert
    Set CS = ActiveWorkbook 'définit le classeur source CS
    On Error Resume Next 'gestion des erreurs (en cas d'erreur passe à la ligne suivante)
    Set OS = CS.Sheets("History_Forecast DD") 'définit l'onglet source OS (génère une erreur si cet onglet n'existe pas)
    If Err <> 0 Then 'condition 2 : si une erreur a été générée
        Err.Clear 'efface l'erreur
        MsgBox "Le fichier ouvert n'est pas valide !" 'message
        ActiveWorkbook.Close SaveChanges:=False 'ferme le fichier
        Exit Sub 'sort de la procédure
    End If 'fin de la condition 2
Else 'sinon (condition 1)
    Exit Sub 'sort de la procédure
End If 'fin de la condition 1

'si tu veux effacer les anciennes données (enlève l'apostrophe des deux lignes en dessous et supprime les trois lignes plus bas)
'OD.Cells.ClearContents
'OS.Cells.Copy OD.Range("A1")

'si tu veux garder les anciennes données (supprime les lignes commentées du dessus)           - 1
Set DEST = OD.Cells(Application.Rows.Count, 1).End(xlUp).Offset(2, 0) '                       - 2
OS.Range("A1").CurrentRegion.Copy DEST '                                                      - 3

CS.Close SaveChanges:=False 'ferme le fichier sans enregister
End Sub
Le fichier :
 

Pièces jointes

  • HFJ.xlsm
    112.1 KB · Affichages: 22
  • HFJ.xlsm
    112.1 KB · Affichages: 28
  • HFJ.xlsm
    112.1 KB · Affichages: 29

Robert

XLDnaute Barbatruc
Repose en paix
Re : Copier-Coller des données d'un fichier different à l'aide d'une macro

Bonjour le fil, bonjour le forum,

J'ai encore beaucoup de progrès à faire !
Arf !!! moi aussi...

J'ai pas bien compris ta question... (format de mail ?).
Pour que les lignes de codes apparaissent tel que je l'ai fait, il faut aller en mode avancé en cliquant sur le bouton Aller en mode mode avancé (comme quoi il n'y a pas de hasard...). Là, tu sélectionnes le code et tu cliques sur le bouton # (balises CODE), ou tu cliques d'abord sur le bouton # et tu colles ton code entre les deux balises.
Par contre, dans ce format CODE plus de couleur possible autre que le noir...

 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
311 733
Messages
2 082 015
Membres
101 867
dernier inscrit
XFPRO