Lancer macro dans une autre feuille

Bonjour,

J’ai cette macro pour Copier Coller dans un autre fichier la dernière cellule vide d’un fichier.

Tout marche à merveille, si je copie une seconde fois les données, j’ai un message qui m’indique « Les données du…ont déjà été reportées ».

Sub MiseAjour()

    On Error GoTo ouvrirDoc
    With Workbooks("REPORTING TRESORERIE.xlsx").Sheets("Tréso")
        derDte = .Cells(Rows.Count, "A").End(xlUp).Value
        If derDte = Cells(2, "A").Value Then
            MsgBox "Les données du " & derDte & " ont déjà été reportées !", 16
            End
        Else
            Sheets("Tréso").Select
            Range("A2:M" & Range("A" & Rows.Count).End(xlUp).Row).Copy
.Cells(Rows.Count, "A").End(xlUp)(2).PasteSpecial Paste:=xlPasteValues
        End If
    End With
    MsgBox "Mise à jour effectuée avec succès !"
    Exit Sub
ouvrirDoc:
    MsgBox "Ouvrez le fichier ''REPORTING TRESORERIE ''", 16
End Sub

Le problème est apparu lorsque j’ai lancé cette macro dans une autre feuille. Le Copier-Coller s’effectue bien, mais je n’ai plus le message que « Les données du…ont déjà été reportées ».

Sub MiseAjour()

    On Error GoTo ouvrirDoc
    With Workbooks("REPORTING TRESORERIE.xlsx").Sheets("Tréso")
        derDte = .Cells(Rows.Count, "A").End(xlUp).Value
        If derDte = Cells(2, "A").Value Then
            MsgBox "Les données du " & derDte & " ont déjà été reportées !", 16
            End
        Else
            Sheets("Tréso").Select
            Range("A2:M" & Range("A" & Rows.Count).End(xlUp).Row).Copy
.Cells(Rows.Count, "A").End(xlUp)(2).PasteSpecial Paste:=xlPasteValues
        End If
    End With
    MsgBox "Mise à jour effectuée avec succès !"
    Exit Sub
ouvrirDoc:
    MsgBox "Ouvrez le fichier ''REPORTING TRESORERIE ''", 16
End Sub

Que faut-il changer dans la seconde macro ?

Merci.

Re,

Ton code effectue la copie de la plage A2:Mx de la feuille active et le collage de ces valeurs dans la feuille "Tréso" du classeur "REPORTING TRESORERIE.xlsx", à partir de la première cellule vide de la colonne A.

Le message que tu cites apparait si la valeur de la dernière cellule renseignée dans la colonne A de la feuille "Tréso" du classeur "REPORTING TRESORERIE.xlsx" est identique à celle de la cellule A2 de la feuille active.

La logique voudrait que tu compares la valeur de la dernière cellule renseignée dans la colonne A de la feuille "Tréso" du classeur "REPORTING TRESORERIE.xlsx" à celle de la dernière cellule renseignée dans la colonne A de la feuille active, non ?

A+

Lorsque je lance la macro dans le nouveau classeur que j'ai mis, je peux le lancer autant de fois cette macro sans que j'ai le message comme quoi je l'ai déjà traité : "Les données du ...ont déjà été reportées".

Que contient la cellule A2 de la feuille active ?

Peux-tu joindre un fichier exemple avec le contenu de la feuille "Tréso" et le contenu de la feuille du classeur actif ?

A+

Bonjour à toi Frangy,

Je te joins les 2 fichiers.

Bonjour,

Essaie comme cela

Sub MiseAjour()
Dim WsS As Worksheet, WsC As Worksheet
Dim DerDte As Date
    On Error GoTo ouvrirDoc
    Set WsS = ThisWorkbook.Worksheets("Tréso") 'Feuille source
    Set WsC = Workbooks("REPORTING TRESORERIE.xlsx").Sheets("Tréso") 'Feuille cible
    Application.ScreenUpdating = False
    DerDte = WsC.Cells(Rows.Count, "A").End(xlUp).Value
    If DerDte = WsS.Cells(2, "A").Value Then
        MsgBox "Les données du " & DerDte & " ont déjà été reportées !", 16
        End
    Else
        WsS.Range("A2:M" & WsS.Range("A" & Rows.Count).End(xlUp).Row).Copy
        WsC.Cells(Rows.Count, "A").End(xlUp)(2).PasteSpecial Paste:=xlPasteValues
    End If
    Application.CutCopyMode = xlCopy
    MsgBox "Mise à jour effectuée avec succès !"
    Set WsC = Nothing: Set WsS = Nothing
    Exit Sub
ouvrirDoc:
    MsgBox "Ouvrez le fichier ''REPORTING TRESORERIE ''", 16
End Sub

A+

un grand merci à toi ! C'est ce que je voulais.

Rechercher des sujets similaires à "lancer macro feuille"