copier derniere ligne

dianbobo

XLDnaute Junior
bonjour,

etant donné k la derniere ligne de la feuille ("Feuil1") ,je voudrais copier la derniere ligne
de la feuille "historik" sachant que cette ligne change chaque jour elle est toujours a "k+1"
comment bien definir le tableau :
HTML:
Range("A(k) :AB(k)")
merci de votre aide
jai essayé comme ça :


HTML:
Workbooks("LeFichier").Worksheets(LaFeuille).Range("A"& k :"AB"& k).Copy Worksheets("Feuil1").Range("A" & k)
mais ça marche pas

nb:


HTML:
Set ws = wb.Worksheets("Feuil1")
k = ws.Cells(Rows.Count, 4).End(xlUp).Row + 1
LaFeuille = "Historik"
merci de votre aide
 

dianbobo

XLDnaute Junior
Re : copier derniere ligne

pour bien voir mon code le voici ci dessous :

HTML:
Function NomPlusJeuneFichierByName(Chemin As String, PatternNomFichier As String) As String

    Dim Fso              As FileSystemObject
    Dim Fichier          As File
    Dim PlusJeuneFichier As File

    Set Fso = CreateObject("scripting.filesystemobject")
    For Each Fichier In Fso.GetFolder(Chemin).Files
        If Fichier.Name Like PatternNomFichier _
        Then
            If PlusJeuneFichier Is Nothing Then
                Set PlusJeuneFichier = Fichier
            ElseIf Fichier.Name > PlusJeuneFichier.Name Then
                Set PlusJeuneFichier = Fichier
            End If
        End If
    Next
    ' // Résultat
    If PlusJeuneFichier Is Nothing Then
        NomPlusJeuneFichierByName = ""
    Else
        NomPlusJeuneFichierByName = PlusJeuneFichier.Path
    End If
End Function

HTML:
Sub recherche_resultat_eco()
Dim i As Long
Dim k As Long
Dim Chemin As String, LaFeuille As String, LeFichier As String
Dim motif  As String
Dim wb As Workbook
Dim ws As Worksheet
Dim lacellule
Set wb = Workbooks("Classeurvarparahist")
Set ws = wb.Worksheets("Feuil1")
k = ws.Cells(Rows.Count, 4).End(xlUp).Row + 1
LaFeuille = "Historik"

motif = "######## - Résultat Economique"
Chemin = "S:\PGB\DER\_Commun\MBO\RESULTAT ECO  suivi quotidien\Résultat économique"
LeFichier = NomPlusJeuneFichierByName(Chemin, motif)
Workbooks("LeFichier").Worksheets(LaFeuille).Range("A" & k & ":AB" & k).Copy Worksheets("Feuil1").Range("A" & k)
MsgBox NomPlusJeuneFichierByName(Chemin, motif)
End Sub

dans ce code il s'agit de copier la derniere ligne via un chemin comme defini ci-dessus
j'ai essayé comme tu viens de me le dire mais j'ai une erreur

"l'indice n'appartient pas a la selection "
l'ereur se trouve ici:
HTML:
Workbooks("LeFichier").Worksheets(LaFeuille).Range("A" & k & ":AB" & k).Copy Worksheets("Feuil1").Range("A" & k)

merci de votre aide
 

dianbobo

XLDnaute Junior
Re : copier derniere ligne

je viens de relancer le code malheureusement le probleme persiste
oui le dossier scanné contient bien des fichiers dont le nom est sou.s la forme :
"######## - Résultat Economique" mais # est un chiffre entre 0 et 9
et non de 1 à 9

merci bien
 

Pierrot93

XLDnaute Barbatruc
Re : copier derniere ligne

Bonjour,

pas tout suivi, mais "lefichier" étant une variable, peut être codé ainsi (sans les guillemets) :

Code:
Workbooks(LeFichier).Worksheets(LaFeuille).Range

par contre n'acceptera pas le chemin du fichier avec le nom..

bonne fin d'après midi
@+
 

Pierrot93

XLDnaute Barbatruc
Re : copier derniere ligne

Re,

ceci fonctionne chez moi, attention j'ai modifié certains noms.... et supprimer certaines lignes pour pouvoir tester....

Code:
Function NomPlusJeuneFichierByName(Chemin As String, PatternNomFichier As String) As String

    Dim Fso              As Object
    Dim Fichier          As Object
    Dim PlusJeuneFichier As String

    Set Fso = CreateObject("scripting.filesystemobject")
    For Each Fichier In Fso.GetFolder(Chemin).Files
        If Fichier.Name Like PatternNomFichier Then
            PlusJeuneFichier = Fichier.Name
        End If
    Next
    ' // Résultat
    If PlusJeuneFichier = "" Then
        NomPlusJeuneFichierByName = ""
    Else
        NomPlusJeuneFichierByName = PlusJeuneFichier
    End If
End Function
Sub recherche_resultat_eco()
Dim i As Long
Dim k As Long
Dim Chemin As String, LaFeuille As String, LeFichier As String
Dim motif  As String
Dim wb As Workbook
Dim ws As Worksheet
LaFeuille = "Feuil1"

motif = "######## - Résultat Economique*"
Chemin = "C:\MesDocs\Excel\Test\"
LeFichier = NomPlusJeuneFichierByName(Chemin, motif)
Workbooks(LeFichier).Worksheets(LaFeuille).Range("A" & k & ":AB" & k).Copy Worksheets("Feuil1").Range("A" & k)
MsgBox NomPlusJeuneFichierByName(Chemin, motif)
End Sub
 

dianbobo

XLDnaute Junior
Re : copier derniere ligne

apres remodification ,j'ai le code ci-dessous
si je ne me trompe pas bien sur

HTML:
Function NomPlusJeuneFichierByName(Chemin As String, PatternNomFichier As String) As String

    Dim Fso              As Object
    Dim Fichier          As Object
    Dim PlusJeuneFichier As String

    Set Fso = CreateObject("scripting.filesystemobject")
    For Each Fichier In Fso.GetFolder(Chemin).Files
        If Fichier.Name Like PatternNomFichier Then
            PlusJeuneFichier = Fichier.Name
        End If
    Next
    ' // Résultat
    If PlusJeuneFichier = "" Then
        NomPlusJeuneFichierByName = ""
    Else
        NomPlusJeuneFichierByName = PlusJeuneFichier
    End If
End Function
HTML:
Sub recherche_resultat_eco()
Dim i As Long
Dim k As Long
Dim Chemin As String, LaFeuille As String, LeFichier As String
Dim motif  As String
Dim wb As Workbook
Dim ws As Worksheet
Set wb = Workbooks("Classeurvarparahist")
Set ws = wb.Worksheets("Feuil1")
LaFeuille = "Historik"
k = ws.Cells(Rows.Count, 4).End(xlUp).Row + 1
motif = "######## - Résultat Economique*"
Chemin = "S:\PGB\DER\_Commun\MBO\RESULTAT ECO  suivi quotidien\Résultat économique"
LeFichier = NomPlusJeuneFichierByName(Chemin, motif)
Workbooks(LeFichier).Worksheets(LaFeuille).Range("A" & k & ":AB" & k).Copy Worksheets("Feuil1").Range("A" & k)
MsgBox NomPlusJeuneFichierByName(Chemin, motif)
End Sub

mais chez mois en faisant F8 j'ai bien le bon nom de fichier
(LeFichier="20100726 - Résultat Economique")
mais lorsque j'arrive ici:
HTML:
Workbooks(LeFichier).Worksheets(LaFeuille).Range("A" & k & ":AB" & k).Copy Worksheets("Feuil1").Range("A" & k)

le code plante "erreur: l'indice n'appartient pas a la selection"

là j'avoue que je sais plus quoi faire
merci de votre aide
 

Pierrot93

XLDnaute Barbatruc
Re : copier derniere ligne

Re,

essaye toujours avec F8, en testant la ligne ainsi :

Code:
Workbooks(LeFichier).Worksheets(LaFeuille).Range("A1").Value = 123

A noter également qu'il faut que le classeur "lefichier" soit ouvert lors de la copie....
Sinon dans ton code tu initialise cette variable, mais tu ne t'en sers pas...
Code:
Set ws = wb.Worksheets("Feuil1")

tu copies directement sur le classeur actif..
Code:
Worksheets("Feuil1").Range
 

dianbobo

XLDnaute Junior
Re : copier derniere ligne

Bonjour tout le monde comme l'avait dit Pierrot93 hier il faut bien que le classeur dans lequel
je copie les données soit ouvert ,alors je voudrai bien l'ouvrir mais de façon automatique
et j'ai ajouté dans mon code :

HTML:
Workbooks.Open Filename:="S:\PGB\DER\_Commun\MBO\RESULTAT ECO  suivi quotidien\Résultat économique\LeFichier"
ActiveWindow.Close

ça donne ceci :
HTML:
Sub recherche_resultat_eco()
Dim i As Long
Dim k As Long
Dim Chemin As String, LaFeuille As String, LeFichier As String
Dim motif  As String
Dim wb As Workbook
Dim ws As Worksheet
Set wb = Workbooks("Classeurvarparahist")
Set ws = wb.Worksheets("Feuil1")
    LaFeuille = "Historik"
    
    k = ws.Cells(Rows.Count, 4).End(xlUp).Row + 1
    motif = "######## - Résultat Economique*"
    Chemin = "S:\PGB\DER\_Commun\MBO\RESULTAT ECO  suivi quotidien\Résultat économique\"
    LeFichier = NomPlusJeuneFichierByName(Chemin, motif)
 Workbooks.Open Filename:="S:\PGB\DER\_Commun\MBO\  _
RESULTAT ECO  suivi quotidien\Résultat économique\LeFichier"
    For i = 1 To 28
        ws.Cells(k, i).Formula = Workbooks(LeFichier).Worksheets(LaFeuille).Cells(k, i).Value
    Next
    ActiveWindow.Close
    MsgBox NomPlusJeuneFichierByName(Chemin, motif)
End Sub

mais on me dit :"S:\PGB\DER\_Commun\MBO\RESULTAT ECO suivi quotidien\Résultat économique\LeFichier"
est introuvable
en faisant F8 mon code bloc au niveau de :
HTML:
Workbooks.Open Filename:="S:\PGB\DER\_Commun\MBO\  _
RESULTAT ECO  suivi quotidien\Résultat économique\LeFichier"
car "LeFichier" n'est pas remplacé par son nom a savoir
LeFichier=NomPlusJeuneFichierByName(Chemin, motif)="20100727 - Résultat Economique"

comment faire pour ouvrir LeFichier avant ma boucle for...... et le fermer apres ma boucle for

merci de votre aide
 

Statistiques des forums

Discussions
312 613
Messages
2 090 233
Membres
104 456
dernier inscrit
mango53200