Identifier la dernière ligne pour echange de données entre c
Bonjour à tous le monde,
tout d'abord, je tenais à vous remercier de prendre le temps de me lire et de me donner un coup de main car je ne suis pas au top en VBA.
J'ai cherché sur votre forum et certains post m'on bien aidé pour entamer ma macro cependant, après quelques tests, j'ai rencontrer quelques difficultés.
Ce que j'ai commencé à faire :
J'ai créer une macro pour récupérer des données d'un classeur excel que j'exporte vers un autre (Cf. Code ci-dessous). Ces données se remplissent dans différentes colonnes que j'ai identifier par avance. Cependant, ce deuxième classeur ("Test-Dosier-Reception") à par endroit des casse (au sein de colonne) vide du coup lors que j'exporte mes données, les données se retrouvent sur la bonne colonne mais pas sur une seul et même ligne
Or, l'une des colonnes (la colonne B) du fichier "Test-Dosier-Reception" et rempli (n'a pas de vide) et suit la chronologie des données à exporter.
Ce que j'aimerais faire :
Je me demandais si il était possible d'identifier la dernière valeur de la colonne B du fichier "Test-Dosier-Reception" pour commencer a remplir les données à partir de cette ligne là.
Explication avec un exemple :
Par exemple, en B120 du fichier "Test-Dosier-Reception", j'ai une donnée, la macro lit toute la colonne identifie que la ligne B12, l'incrémente de 1 et commence a copier a la ligne suivante (B121)
Mon code :
Option Explicit
Sub Transfert()
Dim Chemin As String, Fichier As String
Dim Ws As Worksheet
Application.ScreenUpdating = False
Set Ws = Sheets("Feuil1")
Chemin = "C:\Users\299737\Desktop\"
Fichier = "Test-Dosier-Reception.xlsx"
If Dir(Chemin & Fichier) = "" Then
MsgBox "Le fichier " & Fichier & " est introuvable"
Exit Sub
End If
With Workbooks.Open(Chemin & Fichier)
With .Sheets("Feuil1")
Ws.Range("E9").Copy .Range("B" & Rows.Count).End(xlUp).Row.Offset(1, 0)
Ws.Range("E1").Copy .Range("C" & Rows.Count).End(xlUp).Row.Offset(1, 0)
Ws.Range("E2").Copy .Range("D" & Rows.Count).End(xlUp).Row.Offset(1, 0)
Ws.Range("F5").Copy .Range("E" & Rows.Count).End(xlUp).Row.Offset(1, 0)
Ws.Range("B9").Copy .Range("Y" & Rows.Count).End(xlUp).Row.Offset(1, 0)
End With
.Close savechanges:=True
End With
End SubAvez vous une idée, une proposition ?
Merci d'avance,
Guillaume
Bonsoir,
Et tu ne dis pas ce qu'il ne va pas dans ton code. S'il y avait le fichier qui va avec, c'est plus facile. Une astuce. Essaye de récupérer la dernière ligne de la colonne B dans une variable et utilise comme le paramètre de la ligne à coller.
Bonjour Raja,
Effectivement tu avais raison merci pour ton conseil !! J'ai réussi a faire la sélection en définissant une variable "derniereligne"
Je post mon code pour ceux qu'y aurais le même problème
Merci encore
Option Explicit
Sub Transfert()
Dim Chemin As String, Fichier As String
Dim Ws As Worksheet
Dim DerniereLigne As Long
If Range("E9").Value = "S. Forrat" Then
Application.ScreenUpdating = False
Set Ws = Sheets("Feuil1")
Chemin = "C:\"
Fichier = "Test-Dosier-Reception.xlsx"
If Dir(Chemin & Fichier) = "" Then
MsgBox "Le fichier " & Fichier & " est introuvable"
Exit Sub
End If
With Workbooks.Open(Chemin & Fichier)
DerniereLigne = Range("B" & Rows.Count).End(xlUp).Row 'Identifie la dernière ligne de la journalière et rempli a partir de là
With .Sheets("Feuil1")
Ws.Range("E9").Copy .Range("B" & DerniereLigne).Offset(1, 0)
Ws.Range("E1").Copy .Range("C" & DerniereLigne).Offset(1, 0)
Ws.Range("E2").Copy .Range("D" & DerniereLigne).Offset(1, 0)
Ws.Range("F5").Copy .Range("E" & DerniereLigne).Offset(1, 0)
End With
.Close savechanges:=True
End With
'Permet d'ouvrir la le fichier de reception
Workbooks.Open Filename:= _
"C:\" & Fichier
End If
End Sub