Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Macro copier données selon condition

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Anto35200

XLDnaute Occasionnel
Bonjour,

J'ai une macro qui me permets de copier les données d'une plage de cellules vers un autre fichier.
La macro copie ne copie les données qu'une fois, sinon il y a un message. Je souhaiterai inclure dans le code de la macro, que si on est le le 1er jour de la semaine, donc lundi, elle me copie 3 fois ces données.

Par avance, merci.

HTML:
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
 
Re : Macro copier données selon condition

Bonjour

sans classeur pour tester, une proposition:

Code:
Dim WsS As Worksheet, WsC As Worksheet
Dim DerDte As Date
Dim Fin as Byte, i as Byte

    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
        If Format(Date, "dddd") = "lundi" Then  ' si nous sommes lundi
            Fin = 3                                        ' 
        Else
            Fin = 1
        End If
        For i = 1 To Fin  ' copie en 1 fois si pas lundi et 3 fois si lundi
           WsS.Range("A2:M" & WsS.Range("A" & Rows.Count).End(xlUp).Row).Copy
           WsC.Cells(Rows.Count, "A").End(xlUp)(2).PasteSpecial Paste:=xlPasteValues
        Next i
    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+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
692
Réponses
5
Affichages
839
Réponses
9
Affichages
830
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…