Copier Coller ne fonctionne pas
Résoluyg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour
Ma macro ci dessous actualise la feuille "Données" mais ne copie colle pas la cette feuille actualisée, elle copie colle l'ancienne version, il faut que je la lance une seconde fois pour le copie colle fonctionne correctement. Chose surprenant quand je lance ma macro au pas à pas, en revanche elle fonctionne.
J'ai essayé de voir du coté du presse papier avec ce code mais je n'obtiens pas de meilleurs résultats
J'ai également essayé de voir avec Application.CutCopyMode = False ou Application.CutCopyMode = XlCopy mais sans succès
Merci de votre aide
Cdt
RG
Public Declare Function OuvrirPressEPapiers Lib "user32" Alias "OpenClipboard" (ByVal hwnd As Long) As Long
Public Declare Function ViderPressePapiers Lib "user32" Alias "EmptyClipboard" () As Long
Public Declare Function FermerPressePapiers Lib "user32" Alias "CloseClipboard" () As Long
Public Function NettoyerPressePapiers()
OuvrirPressEPapiers (0&)
ViderPressePapiers
FermerPressePapiers
End Function
Sub TestNettoyerPressePapiers()
Call NettoyerPressePapiers
End Sub
Sub Macro1() Dim AnneeValue_XL As Integer Dim MoisValue_XL As Integer Sheets("Données").Visible = True ' Sheets("DonnéesCopie").Visible = True ' Sheets("DonnéesCopie").Delete ' Application.Calculate Application.CutCopyMode = False Sheets("Données").Select Range("D10").Select ActiveWorkbook.RefreshAll Sheets(Array("Janvier", "Fevrier", "Mars", "Avril", "Mai", "Juin", "Juillet", "Aout", "Septembre", "Octobre", "Novembre", "Decembre")).Select Range("A100:P100").Select Selection.Copy Range(Selection, Selection.End(xlUp)).Select Range("A5:P100").Select Range("A100").Activate ActiveSheet.Paste 'Application.CutCopyMode = False Sheets("Données").Select FinalRow = Cells(Rows.Count, 1).End(xlUp).Row For x = 2 To FinalRow TypeValue = Cells(x, 2).Value AnneeValue = Cells(x, 7).Value MoisValue = Cells(x, 8).Value MoisValue_XL = Cells(1, 16).Value AnneeValue_XL = Cells(1, 15).Value If TypeValue = "Entrées CDD" And MoisValue = MoisValue_XL And AnneeValue = AnneeValue_XL Then Cells(x, 3).Resize(1, 4).Copy Sheets("Janvier").Select NextRow = Cells(Rows.Count, 1).End(xlUp).Row + 1 Cells(NextRow, 1).Select ActiveSheet.Paste Sheets("Données").Select ElseIf TypeValue = "Entrées CDI" And MoisValue = MoisValue_XL And AnneeValue = AnneeValue_XL Then Cells(x, 3).Resize(1, 4).Copy Sheets("Janvier").Select NextRow = Cells(Rows.Count, 5).End(xlUp).Row + 1 Cells(NextRow, 5).Select ActiveSheet.Paste Sheets("Données").Select ElseIf TypeValue = "Sorties CDD" And MoisValue = MoisValue_XL And AnneeValue = AnneeValue_XL Then Cells(x, 3).Resize(1, 4).Copy Sheets("Janvier").Select NextRow = Cells(Rows.Count, 9).End(xlUp).Row + 1 Cells(NextRow, 9).Select ActiveSheet.Paste Sheets("Données").Select ElseIf TypeValue = "Sorties CDI" And MoisValue = MoisValue_XL And AnneeValue = AnneeValue_XL Then Cells(x, 3).Resize(1, 4).Copy Sheets("Janvier").Select NextRow = Cells(Rows.Count, 13).End(xlUp).Row + 1 Cells(NextRow, 13).Select ActiveSheet.Paste Sheets("Données").Select End If MoisValue_XL = Cells(2, 16).Value If TypeValue = "Entrées CDD" And MoisValue = MoisValue_XL And AnneeValue = AnneeValue_XL Then Cells(x, 3).Resize(1, 4).Copy Sheets("Fevrier").Select NextRow = Cells(Rows.Count, 1).End(xlUp).Row + 1 Cells(NextRow, 1).Select ActiveSheet.Paste Sheets("Données").Select ElseIf TypeValue = "Entrées CDI" And MoisValue = MoisValue_XL And AnneeValue = AnneeValue_XL Then Cells(x, 3).Resize(1, 4).Copy Sheets("Fevrier").Select NextRow = Cells(Rows.Count, 5).End(xlUp).Row + 1 Cells(NextRow, 5).Select ActiveSheet.Paste Sheets("Données").Select ElseIf TypeValue = "Sorties CDD" And MoisValue = MoisValue_XL And AnneeValue = AnneeValue_XL Then Cells(x, 3).Resize(1, 4).Copy Sheets("Fevrier").Select NextRow = Cells(Rows.Count, 9).End(xlUp).Row + 1 Cells(NextRow, 9).Select ActiveSheet.Paste Sheets("Données").Select ElseIf TypeValue = "Sorties CDI" And MoisValue = MoisValue_XL And AnneeValue = AnneeValue_XL Then Cells(x, 3).Resize(1, 4).Copy Sheets("Fevrier").Select NextRow = Cells(Rows.Count, 13).End(xlUp).Row + 1 Cells(NextRow, 13).Select ActiveSheet.Paste Sheets("Données").Select End If MoisValue_XL = Cells(3, 16).Value If TypeValue = "Entrées CDD" And MoisValue = MoisValue_XL And AnneeValue = AnneeValue_XL Then Cells(x, 3).Resize(1, 4).Copy Sheets("Mars").Select NextRow = Cells(Rows.Count, 1).End(xlUp).Row + 1 Cells(NextRow, 1).Select ActiveSheet.Paste Sheets("Données").Select ElseIf TypeValue = "Entrées CDI" And MoisValue = MoisValue_XL And AnneeValue = AnneeValue_XL Then Cells(x, 3).Resize(1, 4).Copy Sheets("Mars").Select NextRow = Cells(Rows.Count, 5).End(xlUp).Row + 1 Cells(NextRow, 5).Select ActiveSheet.Paste Sheets("Données").Select ElseIf TypeValue = "Sorties CDD" And MoisValue = MoisValue_XL And AnneeValue = AnneeValue_XL Then Cells(x, 3).Resize(1, 4).Copy Sheets("Mars").Select NextRow = Cells(Rows.Count, 9).End(xlUp).Row + 1 Cells(NextRow, 9).Select ActiveSheet.Paste Sheets("Données").Select ElseIf TypeValue = "Sorties CDI" And MoisValue = MoisValue_XL And AnneeValue = AnneeValue_XL Then Cells(x, 3).Resize(1, 4).Copy Sheets("Mars").Select NextRow = Cells(Rows.Count, 13).End(xlUp).Row + 1 Cells(NextRow, 13).Select ActiveSheet.Paste Sheets("Données").Select End If MoisValue_XL = Cells(4, 16).Value If TypeValue = "Entrées CDD" And MoisValue = MoisValue_XL And AnneeValue = AnneeValue_XL Then Cells(x, 3).Resize(1, 4).Copy Sheets("Avril").Select NextRow = Cells(Rows.Count, 1).End(xlUp).Row + 1 Cells(NextRow, 1).Select ActiveSheet.Paste Sheets("Données").Select ElseIf TypeValue = "Entrées CDI" And MoisValue = MoisValue_XL And AnneeValue = AnneeValue_XL Then Cells(x, 3).Resize(1, 4).Copy Sheets("Avril").Select NextRow = Cells(Rows.Count, 5).End(xlUp).Row + 1 Cells(NextRow, 5).Select ActiveSheet.Paste Sheets("Données").Select ElseIf TypeValue = "Sorties CDD" And MoisValue = MoisValue_XL And AnneeValue = AnneeValue_XL Then Cells(x, 3).Resize(1, 4).Copy Sheets("Avril").Select NextRow = Cells(Rows.Count, 9).End(xlUp).Row + 1 Cells(NextRow, 9).Select ActiveSheet.Paste Sheets("Données").Select ElseIf TypeValue = "Sorties CDI" And MoisValue = MoisValue_XL And AnneeValue = AnneeValue_XL Then Cells(x, 3).Resize(1, 4).Copy Sheets("Avril").Select NextRow = Cells(Rows.Count, 13).End(xlUp).Row + 1 Cells(NextRow, 13).Select ActiveSheet.Paste Sheets("Données").Select End If MoisValue_XL = Cells(5, 16).Value If TypeValue = "Entrées CDD" And MoisValue = MoisValue_XL And AnneeValue = AnneeValue_XL Then Cells(x, 3).Resize(1, 4).Copy Sheets("Mai").Select NextRow = Cells(Rows.Count, 1).End(xlUp).Row + 1 Cells(NextRow, 1).Select ActiveSheet.Paste Sheets("Données").Select ElseIf TypeValue = "Entrées CDI" And MoisValue = MoisValue_XL And AnneeValue = AnneeValue_XL Then Cells(x, 3).Resize(1, 4).Copy Sheets("Mai").Select NextRow = Cells(Rows.Count, 5).End(xlUp).Row + 1 Cells(NextRow, 5).Select ActiveSheet.Paste Sheets("Données").Select ElseIf TypeValue = "Sorties CDD" And MoisValue = MoisValue_XL And AnneeValue = AnneeValue_XL Then Cells(x, 3).Resize(1, 4).Copy Sheets("Mai").Select NextRow = Cells(Rows.Count, 9).End(xlUp).Row + 1 Cells(NextRow, 9).Select ActiveSheet.Paste Sheets("Données").Select ElseIf TypeValue = "Sorties CDI" And MoisValue = MoisValue_XL And AnneeValue = AnneeValue_XL Then Cells(x, 3).Resize(1, 4).Copy Sheets("Mai").Select NextRow = Cells(Rows.Count, 13).End(xlUp).Row + 1 Cells(NextRow, 13).Select ActiveSheet.Paste Sheets("Données").Select End If MoisValue_XL = Cells(6, 16).Value If TypeValue = "Entrées CDD" And MoisValue = MoisValue_XL And AnneeValue = AnneeValue_XL Then Cells(x, 3).Resize(1, 4).Copy Sheets("Juin").Select NextRow = Cells(Rows.Count, 1).End(xlUp).Row + 1 Cells(NextRow, 1).Select ActiveSheet.Paste Sheets("Données").Select ElseIf TypeValue = "Entrées CDI" And MoisValue = MoisValue_XL And AnneeValue = AnneeValue_XL Then Cells(x, 3).Resize(1, 4).Copy Sheets("Juin").Select NextRow = Cells(Rows.Count, 5).End(xlUp).Row + 1 Cells(NextRow, 5).Select ActiveSheet.Paste Sheets("Données").Select ElseIf TypeValue = "Sorties CDD" And MoisValue = MoisValue_XL And AnneeValue = AnneeValue_XL Then Cells(x, 3).Resize(1, 4).Copy Sheets("Juin").Select NextRow = Cells(Rows.Count, 9).End(xlUp).Row + 1 Cells(NextRow, 9).Select ActiveSheet.Paste Sheets("Données").Select ElseIf TypeValue = "Sorties CDI" And MoisValue = MoisValue_XL And AnneeValue = AnneeValue_XL Then Cells(x, 3).Resize(1, 4).Copy Sheets("Juin").Select NextRow = Cells(Rows.Count, 13).End(xlUp).Row + 1 Cells(NextRow, 13).Select ActiveSheet.Paste Sheets("Données").Select End If MoisValue_XL = Cells(7, 16).Value If TypeValue = "Entrées CDD" And MoisValue = MoisValue_XL And AnneeValue = AnneeValue_XL Then Cells(x, 3).Resize(1, 4).Copy Sheets("Juillet").Select NextRow = Cells(Rows.Count, 1).End(xlUp).Row + 1 Cells(NextRow, 1).Select ActiveSheet.Paste Sheets("Données").Select ElseIf TypeValue = "Entrées CDI" And MoisValue = MoisValue_XL And AnneeValue = AnneeValue_XL Then Cells(x, 3).Resize(1, 4).Copy Sheets("Juillet").Select NextRow = Cells(Rows.Count, 5).End(xlUp).Row + 1 Cells(NextRow, 5).Select ActiveSheet.Paste Sheets("Données").Select ElseIf TypeValue = "Sorties CDD" And MoisValue = MoisValue_XL And AnneeValue = AnneeValue_XL Then Cells(x, 3).Resize(1, 4).Copy Sheets("Juillet").Select NextRow = Cells(Rows.Count, 9).End(xlUp).Row + 1 Cells(NextRow, 9).Select ActiveSheet.Paste Sheets("Données").Select ElseIf TypeValue = "Sorties CDI" And MoisValue = MoisValue_XL And AnneeValue = AnneeValue_XL Then Cells(x, 3).Resize(1, 4).Copy Sheets("Juillet").Select NextRow = Cells(Rows.Count, 13).End(xlUp).Row + 1 Cells(NextRow, 13).Select ActiveSheet.Paste Sheets("Données").Select End If MoisValue_XL = Cells(8, 16).Value If TypeValue = "Entrées CDD" And MoisValue = MoisValue_XL And AnneeValue = AnneeValue_XL Then Cells(x, 3).Resize(1, 4).Copy Sheets("Aout").Select NextRow = Cells(Rows.Count, 1).End(xlUp).Row + 1 Cells(NextRow, 1).Select ActiveSheet.Paste Sheets("Données").Select ElseIf TypeValue = "Entrées CDI" And MoisValue = MoisValue_XL And AnneeValue = AnneeValue_XL Then Cells(x, 3).Resize(1, 4).Copy Sheets("Aout").Select NextRow = Cells(Rows.Count, 5).End(xlUp).Row + 1 Cells(NextRow, 5).Select ActiveSheet.Paste Sheets("Données").Select ElseIf TypeValue = "Sorties CDD" And MoisValue = MoisValue_XL And AnneeValue = AnneeValue_XL Then Cells(x, 3).Resize(1, 4).Copy Sheets("Aout").Select NextRow = Cells(Rows.Count, 9).End(xlUp).Row + 1 Cells(NextRow, 9).Select ActiveSheet.Paste Sheets("Données").Select ElseIf TypeValue = "Sorties CDI" And MoisValue = MoisValue_XL And AnneeValue = AnneeValue_XL Then Cells(x, 3).Resize(1, 4).Copy Sheets("Aout").Select NextRow = Cells(Rows.Count, 13).End(xlUp).Row + 1 Cells(NextRow, 13).Select ActiveSheet.Paste Sheets("Données").Select End If MoisValue_XL = Cells(9, 16).Value If TypeValue = "Entrées CDD" And MoisValue = MoisValue_XL And AnneeValue = AnneeValue_XL Then Cells(x, 3).Resize(1, 4).Copy Sheets("Septembre").Select NextRow = Cells(Rows.Count, 1).End(xlUp).Row + 1 Cells(NextRow, 1).Select ActiveSheet.Paste Sheets("Données").Select ElseIf TypeValue = "Entrées CDI" And MoisValue = MoisValue_XL And AnneeValue = AnneeValue_XL Then Cells(x, 3).Resize(1, 4).Copy Sheets("Septembre").Select NextRow = Cells(Rows.Count, 5).End(xlUp).Row + 1 Cells(NextRow, 5).Select ActiveSheet.Paste Sheets("Données").Select ElseIf TypeValue = "Sorties CDD" And MoisValue = MoisValue_XL And AnneeValue = AnneeValue_XL Then Cells(x, 3).Resize(1, 4).Copy Sheets("Septembre").Select NextRow = Cells(Rows.Count, 9).End(xlUp).Row + 1 Cells(NextRow, 9).Select ActiveSheet.Paste Sheets("Données").Select ElseIf TypeValue = "Sorties CDI" And MoisValue = MoisValue_XL And AnneeValue = AnneeValue_XL Then Cells(x, 3).Resize(1, 4).Copy Sheets("Septembre").Select NextRow = Cells(Rows.Count, 13).End(xlUp).Row + 1 Cells(NextRow, 13).Select ActiveSheet.Paste Sheets("Données").Select End If MoisValue_XL = Cells(10, 16).Value If TypeValue = "Entrées CDD" And MoisValue = MoisValue_XL And AnneeValue = AnneeValue_XL Then Cells(x, 3).Resize(1, 4).Copy Sheets("Octobre").Select NextRow = Cells(Rows.Count, 1).End(xlUp).Row + 1 Cells(NextRow, 1).Select ActiveSheet.Paste Sheets("Données").Select ElseIf TypeValue = "Entrées CDI" And MoisValue = MoisValue_XL And AnneeValue = AnneeValue_XL Then Cells(x, 3).Resize(1, 4).Copy Sheets("Octobre").Select NextRow = Cells(Rows.Count, 5).End(xlUp).Row + 1 Cells(NextRow, 5).Select ActiveSheet.Paste Sheets("Données").Select ElseIf TypeValue = "Sorties CDD" And MoisValue = MoisValue_XL And AnneeValue = AnneeValue_XL Then Cells(x, 3).Resize(1, 4).Copy Sheets("Octobre").Select NextRow = Cells(Rows.Count, 9).End(xlUp).Row + 1 Cells(NextRow, 9).Select ActiveSheet.Paste Sheets("Données").Select ElseIf TypeValue = "Sorties CDI" And MoisValue = MoisValue_XL And AnneeValue = AnneeValue_XL Then Cells(x, 3).Resize(1, 4).Copy Sheets("Octobre").Select NextRow = Cells(Rows.Count, 13).End(xlUp).Row + 1 Cells(NextRow, 13).Select ActiveSheet.Paste Sheets("Données").Select End If MoisValue_XL = Cells(11, 16).Value If TypeValue = "Entrées CDD" And MoisValue = MoisValue_XL And AnneeValue = AnneeValue_XL Then Cells(x, 3).Resize(1, 4).Copy Sheets("Novembre").Select NextRow = Cells(Rows.Count, 1).End(xlUp).Row + 1 Cells(NextRow, 1).Select ActiveSheet.Paste Sheets("Données").Select ElseIf TypeValue = "Entrées CDI" And MoisValue = MoisValue_XL And AnneeValue = AnneeValue_XL Then Cells(x, 3).Resize(1, 4).Copy Sheets("Novembre").Select NextRow = Cells(Rows.Count, 5).End(xlUp).Row + 1 Cells(NextRow, 5).Select ActiveSheet.Paste Sheets("Données").Select ElseIf TypeValue = "Sorties CDD" And MoisValue = MoisValue_XL And AnneeValue = AnneeValue_XL Then Cells(x, 3).Resize(1, 4).Copy Sheets("Novembre").Select NextRow = Cells(Rows.Count, 9).End(xlUp).Row + 1 Cells(NextRow, 9).Select ActiveSheet.Paste Sheets("Données").Select ElseIf TypeValue = "Sorties CDI" And MoisValue = MoisValue_XL And AnneeValue = AnneeValue_XL Then Cells(x, 3).Resize(1, 4).Copy Sheets("Novembre").Select NextRow = Cells(Rows.Count, 13).End(xlUp).Row + 1 Cells(NextRow, 13).Select ActiveSheet.Paste Sheets("Données").Select End If MoisValue_XL = Cells(12, 16).Value If TypeValue = "Entrées CDD" And MoisValue = MoisValue_XL And AnneeValue = AnneeValue_XL Then Cells(x, 3).Resize(1, 4).Copy Sheets("Decembre").Select NextRow = Cells(Rows.Count, 1).End(xlUp).Row + 1 Cells(NextRow, 1).Select ActiveSheet.Paste Sheets("Données").Select ElseIf TypeValue = "Entrées CDI" And MoisValue = MoisValue_XL And AnneeValue = AnneeValue_XL Then Cells(x, 3).Resize(1, 4).Copy Sheets("Decembre").Select NextRow = Cells(Rows.Count, 5).End(xlUp).Row + 1 Cells(NextRow, 5).Select ActiveSheet.Paste Sheets("Données").Select ElseIf TypeValue = "Sorties CDD" And MoisValue = MoisValue_XL And AnneeValue = AnneeValue_XL Then Cells(x, 3).Resize(1, 4).Copy Sheets("Decembre").Select NextRow = Cells(Rows.Count, 9).End(xlUp).Row + 1 Cells(NextRow, 9).Select ActiveSheet.Paste Sheets("Données").Select ElseIf TypeValue = "Sorties CDI" And MoisValue = MoisValue_XL And AnneeValue = AnneeValue_XL Then Cells(x, 3).Resize(1, 4).Copy Sheets("Decembre").Select NextRow = Cells(Rows.Count, 13).End(xlUp).Row + 1 Cells(NextRow, 13).Select ActiveSheet.Paste Sheets("Données").Select End If Next x Application.Calculate Sheets("Janvier").Select Range("A3").Select Sheets("Données").Visible = False MsgBox "Fin" & Chr(10) & "Si vous souhaitez enregistrer ce document; pensez à enregistrer sous : ... et le nommer differemment !!", vbInformation, "Message" End Sub
- Copier-coller outlook ne fonctionne pas
- Historique copier coller - Guide
- Copier coller pdf - Guide
- Copier-coller - Accueil - Informatique
- Style d'écriture a copier coller - Guide
- Symbole clavier copier coller - Guide
3 réponses
bonjour,
Il est préférable de ne pas faire de Select et Activate dans du code VBA, et de ne pas utiliser Selection.
Au lieu de
Sheets("Données").Select Cells(x, 3).Resize(1, 4).Copy Sheets("Septembre").Select NextRow = Cells(Rows.Count, 13).End(xlUp).Row + 1 Cells(NextRow, 13).Select ActiveSheet.Paste
Il est préférable de faire
NextRow = Sheets("Septembre").Cells(Sheets("Septembre").Rows.Count, 13).End(xlUp).Row + 1 Sheets("Données").Cells(x, 3).Resize(1, 4).Copy _ Destination:= Sheets("Septembre").Cells(NextRow, 13)
A quoi sert ceci?
Sheets(Array("Janvier", "Fevrier", "Mars", "Avril", "Mai", "Juin", "Juillet", "Aout", "Septembre", "Octobre", "Novembre", "Decembre")).Select Range("A100:P100").Select Selection.Copy Range(Selection, Selection.End(xlUp)).Select Range("A5:P100").Select Range("A100").Activate ActiveSheet.Paste
Où se fait le "copier/coller" qui copie les anciennes données?
Ce sont des entrées/sorties de salariés par mois dans une base Access.
Dans mon onglet Données, je l'actualise pour avoir la derniere version (elle s'actualise à l'aide d'une query qui va cherche l'info dans la base Acccess) -
le refresh du vba fonctionne car la feuille "données" est actualisée.
En revanche, mon code avec le copier coller ne fonctionne pas sur les onglets mois par mois, si j'ai une nouvelle entrée de Septembre par ex, elle ne serait pas intégrer dans l'onglet Septembre.
Sauf si je procède au pas à pas de mon code ou que lance ma sub une 2ieme fois à la suite de la première.
J'espere etre clair et merci de prendre de votre temps pour mon cas.
RG
Bonjour
Merci d'abord pour vos réponses
Le code donné ne change rien, il n'y pas de bug mais cela ne copie colle pas les nouvelles données actualisées.
Le but était de simplifier et de clarifier le code, afin d'éviter une situation où il ne travaille par sur le bon onglet.