Copier derniere ligne d'un onglet via un repertoire

dianbobo Messages postés 151 Date d'inscription mardi 20 avril 2010 Statut Membre Dernière intervention 15 juin 2014 - 7 juil. 2010 à 12:08
dianbobo Messages postés 151 Date d'inscription mardi 20 avril 2010 Statut Membre Dernière intervention 15 juin 2014 - 27 juil. 2010 à 14:30
bonjour ,
je cherche a faire la chose suivante mais je n'arrive pas au bout de peines
si vous voulez bien me donner un coup de main s'il vous plait
voila j'ai un claseur actif dans lequel je travail et je voudrai copier la derniere ligne non
vide du classeur le plus recent du repertoire que j'ai indiqué dans le code
a savoir dans le dossier Résultat économique ,dans lequel je vais cherché mon fichier contient plusieurs types de fichiers
tous ayant des noms commençant par la date exemple :
20100701 - Résultat Economique;
20100702 - Résultat Economique ;
20100705 - Résultat Economique
c'est des exemples de fichiers qui m'interresent
'mais mon objectif c'est d'aller dans le fichier le plus recent dans l'exemple (le plus recent est :20100705 - Résultat Economique) ensuite allez dans l'onglet Historik et copier la derniere
'ligne non vide de cet onglet:
voici mon code:
d'abord une fonction :
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

et enfin:
Sub toto_22()
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")

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)
'copie de la derniere ligne du tableau dans l'historique des var dans le résultat eco
    For I = 0 To 27
        ws.Cells(k, I + 1).Value = Workbooks("LeFichier").Worksheets(LaFeuille).Cells(k, I + 1).Value
    Next
    

        MsgBox NomPlusJeuneFichierByName(Chemin, motif)
End Sub



merci de votre aide

5 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
7 juil. 2010 à 12:31
Salut
Il te manque juste l'ouverture du fichier.
Actuellement, tu recherches le fichier dans un répertoire; tu obtiens donc une chaine avec son chemin et son nom.
Avant de vouloir lire ses cellules, il faut l'ouvrir (et le refermer ensuite ?)

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
dianbobo Messages postés 151 Date d'inscription mardi 20 avril 2010 Statut Membre Dernière intervention 15 juin 2014
7 juil. 2010 à 13:52
Merci bien de tes conseils et comment je fais moi debutant pour ouvrir et fermer le fichier?
'merci d'avance
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
7 juil. 2010 à 20:06
Comme d'habitude : Tu enregistres une macro pendant que tu fais la manip à la main avec un fichier bidon et tu auras le code nécessaire, il ne te restera plus qu'à remplacer le nom du fichier bidon par le tien.
0
dianbobo Messages postés 151 Date d'inscription mardi 20 avril 2010 Statut Membre Dernière intervention 15 juin 2014
22 juil. 2010 à 15:58
bonjour ,
voici mon code de l'enregistreur de macro
et comment je le modofie?
Sub Macro1()
'
' Macro1 Macro
'
' Touche de raccourci du clavier: Ctrl+m
'
    Workbooks("20100721 - Résultat Economique.xlsm").Connections.AddFromFile
    Workbooks.Open Filename:= _
        "S:\PGB\DER\_Commun\MBO\RESULTAT ECO  suivi quotidien\Résultat économique\20100721 - Résultat Economique.xlsm"
    ActiveWindow.ScrollWorkbookTabs Position:=xlLast
    Sheets("Historik").Select
    Range("A257:AB257").Select
    Selection.Copy
    Windows("Classeurvarparahist.xlsm").Activate
    ActiveWindow.SmallScroll Down:=-27
    Range("A1").Select
    ActiveSheet.Paste
End Sub



merci bien
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dianbobo Messages postés 151 Date d'inscription mardi 20 avril 2010 Statut Membre Dernière intervention 15 juin 2014
27 juil. 2010 à 14:30
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:
 Range("A(k) :AB(k)")

merci de votre aide
jai essayé comme ça :
Workbooks("LeFichier").Worksheets(LaFeuille).Range("Ak :ABk").Copy Worksheets("Feuil1").Range("A" & k)
mais ça marche pas
nb:
Set ws = wb.Worksheets("Feuil1") 
k = ws.Cells(Rows.Count, 4).End(xlUp).Row + 1 
LaFeuille = "Historik"

merci de votre aide
0
Rejoignez-nous