[RESOLU][VBA] Copier données d'un fichier vers dernière ligne d'un autre

Whivez

XLDnaute Nouveau
Bonjour,

En parcourant le forum, j'ai trouvé une macro correspondant que j'ai adapté à mon besoin, que voici:
Copier les données d'un fichier à (nom aléatoire) vers la dernière ligne d'un fichier base de données.

En gros:
Sélection du fichier "source" via message box
renommage de nom de feuille (pour facilité ma macro)
Sélection de la plage de données, c'est à dire de la ligne A5 jusqu'à la case vide
Copie
Collage dans le fichier base de données, dans l'onglet "bdd" dans la première case vide

Ma macro:
Code:
Sub CopieColleWbk()
  Dim WbkS As Workbook  ' Classeur source
  Dim WbkD As Workbook  ' Classeur de Destination
  Dim Sht As Worksheet ' Feuille source
  Dim VPathFic As String
  
  ' Demander de choisir le classeur Source
  MsgBox "Merci de sélectionner le classeur source !"
  ' Choisir le fichier à ouvrir
  VPathFic = ChoixFichier()
  ' Si aucun fichier, alors sortir
  If VPathFic = "" Then Exit Sub
  ' Sinon ouvrir le classeur
  Workbooks.Open VPathFic
  ' Définir le classeur source
  Set WbkS = ActiveWorkbook
  ' Renommer la feuille
ActiveSheet.Name = "Feuil1"
  ' activation classeur destination
Windows("tableau de bord.xlsx").Activate
Sheets("Bdd").Select
  ' Définir le classeur de Destination
  Set WbkD = ActiveWorkbook
  ' Effectuer la copie / collage
    WbkS.Sheets(Feuil1).Range("A5:A" & [C65535].End(xlUp).Row).Copy Destination:=WbkD.Sheets(bdd).Range("A5:A" & [A65536].End(xlUp).Row + 1)
  ' Message de fin
  MsgBox "La copie du classeur source vers le calsseur de destination est terminée"
  ' effacer les variables objet
  Set Sht = Nothing
  Set WbkD = Nothing
  Set WbkS = Nothing
End Sub
Function ChoixFichier()
Dim fd As FileDialog
Dim vrtSelectedItem As Variant
  Set fd = Application.FileDialog(msoFileDialogOpen)
  With fd
    If .Show = -1 Then
      ChoixFichier = fd.SelectedItems(1)
    Else
      ChoixFichier = ""
    End If
  End With
  Set fd = Nothing
End Function

J'ai cependant une erreur à la ligne:
Code:
    WbkS.Sheets(Feuil1).Range("A5:A" & [C65535].End(xlUp).Row).Copy Destination:=WbkD.Sheets(bdd).Range("A5:A" & [A65536].End(xlUp).Row + 1)

Qu'es-ce qui ne va pas dans ma macro ?

Merci d'avance de votre aide
 
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : [VBA] Copier données d'un fichier vers dernière ligne d'un autre

Bonjour,

peut être préciser partout nom classeur et feuille :
Code:
WbkS.Sheets(Feuil1).Range("A5:A" & WbkS.Sheets(Feuil1).[C65535].End(xlUp).Row).Copy _
    Destination:=WbkD.Sheets(bdd).Range("A5:A" & WbkD.Sheets(bdd).[A65536].End(xlUp).Row + 1)
bonne journée
@+
 

Pierrot93

XLDnaute Barbatruc
Re : [VBA] Copier données d'un fichier vers dernière ligne d'un autre

Re,

bah la destination commence à A5... essaie peut être ainsi :
Code:
WbkS.Sheets("Feuil1").Range("A5:A" & WbkS.Sheets("Feuil1").[C65535].End(xlUp).Row).Copy _
    Destination:=WbkD.Sheets("bdd").[A65536].End(xlUp)(2))
 

Whivez

XLDnaute Nouveau
Re : [VBA] Copier données d'un fichier vers dernière ligne d'un autre

Effectivement ça marche mieux !! Merci beaucoup !

Autre soucis par contre, il copie les données en dessous de mon tableau... Je ne comprend pas pourquoi !
Je joins mes fichiers pour plus de compréhension (j'ai modifié le code en cours de route...)

encore merci de ta rapidité :)
 

Pièces jointes

  • tableau de bord.xlsm
    289.4 KB · Affichages: 148
  • fichier source).xlsx
    10 KB · Affichages: 118
  • tableau de bord.xlsm
    289.4 KB · Affichages: 188
  • tableau de bord.xlsm
    289.4 KB · Affichages: 178

Pierrot93

XLDnaute Barbatruc
Re : [VBA] Copier données d'un fichier vers dernière ligne d'un autre

Re,


Autre soucis par contre, il copie les données en dessous de mon tableau... Je ne comprend pas pourquoi !

bah normal puisque maintenant :
Code:
Destination:=WbkD.Sheets("bdd").[A65536].End(xlUp)(2))

A priori tu ne voulais pas remplacer les données existantes....
 

Whivez

XLDnaute Nouveau
Re : [VBA] Copier données d'un fichier vers dernière ligne d'un autre

Non, en fait ce que je voulais dire, c'est que j'ai crée un tableau vide (pour en faire un TCD).
Du coup la macro copie les valeurs sous mon tableau, malgré que celui-ci soit vide.
 

Pierrot93

XLDnaute Barbatruc
Re : [VBA] Copier données d'un fichier vers dernière ligne d'un autre

Re,

peux pas tester, pas 2007 sous le coude, mais en forcant la cellule de destination A5

Code:
Destination:=WbkD.Sheets("bdd").[A5]
 

Whivez

XLDnaute Nouveau
Re : [VBA] Copier données d'un fichier vers dernière ligne d'un autre

Là ça copie bien dans le tableau, pas de problème, mais on annule la copie en dernière ligne du tableau du coup.

En fait je t'explique:
Je reçois un fichier de données chaque semaine, et avec cette macro je souhaite récupérer ces données pour compléter ma base de données.
Je souhaite en faire un TCD pour l'analyse de l'analyse de données.

PS: J'ai essayé en remplissant le tableau: même soucis
 

Pierrot93

XLDnaute Barbatruc
Re : [VBA] Copier données d'un fichier vers dernière ligne d'un autre

Re,

As tu vu le post #11... sinon si tu veux constituer une base de données préférable de commencer tes titres de colonnes à la ligne 1.... malheureusement pas 2007 sous le coude pour tester avec des tableaux, que le module conversion sous 2003, et le modèle d'objet à changer avec 2007....
 

Whivez

XLDnaute Nouveau
Re : [VBA] Copier données d'un fichier vers dernière ligne d'un autre

Oui oui bien vu, j'ai d'ailleurs supprimé les lignes vides (et inutiles) et remplies les lignes vides de mon tableau.
Mais rien n'y fait malheureusement...
Je vais continuer à creuser via des recherches G**gle et sur le forum voir si j'arrive à trouver quelque chose concernant ce soucis.
Je te remercie déjà pour m'avoir débloquer la macro, jusqu'ici j'arrivais même pas à l’exécuter !
 

Discussions similaires

Haut Bas