Copier/coller plusieurs fois ne fonctionne plus

Fermé
iadi0615 - 15 juil. 2019 à 15:55
iadi06 Messages postés 21 Date d'inscription mercredi 20 février 2019 Statut Membre Dernière intervention 27 août 2022 - 15 juil. 2019 à 23:28
Bonjour,

depuis quelques temps, je ne peux plus utiliser le copier/coller à plusieurs reprises. En effet, lorsque je sélectionne une case, il ne met possible que de la coller une seule fois. Puis je dois une nouvelle fois la sélectionner et opérer un copier/coller.

J'ai déjà vérifié mes options avancées, la case "copier, couper coller" est bien cochée.

Autre fait qui peut être déterminant, j'ai codé des macros en worksheet change sur n'importe quelle cellule de la feuille. Plus précisément, si une case (l, c) est modifiée et que le contenu est égale à PEIN ; alors la case (l, c+1) prendra la couleur rouge brique.

Est-ce que cela peut expliquer pourquoi mon copier/coller ne fonctionne pas ? Si oui, comment puis-je y remédier afin de garder mon worksheet change et le copier/coller x fois?

Merci pour votre aide.
A voir également:

2 réponses

yg_be Messages postés 23335 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 novembre 2024 Ambassadeur 1 551
15 juil. 2019 à 17:20
bonjour, je pense déterminant de montrer le code de tes macros.
0
Effectivement, voici le code worksheet change


Private Sub worksheet_change(ByVal target As Range)

Dim wshHor As Worksheet
Dim wshPCDF As Worksheet
Dim wshVert As Worksheet
Dim rngFindSeq As Range
Dim strSeq As String
Dim intNbSeq As Integer
Dim rngCellSeq As Range
Dim rngSeqHor As Range
Dim intLigne As Integer
Dim intColumn As Integer
Dim I As Integer

'Permet d'optimiser la vitesse du code
'________________________________________________________

Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.DisplayAlerts = False

On Error GoTo Erreurs

'Déclaration des feuilles
'_________________________________

Set wshVert = Worksheets("SeqVert")
Set wshHor = Worksheets("SeqHor")
Set wshPCDF = Worksheets("PCDF Séq.")



'Déclaration des variables
'_________________________________

intNbSeq = wshVert.Range("bytNbSeq").Value

If target.Value <> "" Then

For I = 0 To intNbSeq - 1

    If target.Value = wshVert.Cells(5 + I, 3).Value Then

        intLigne = target.Row
        intColumn = target.Column
        
        'Définition des noms de séquence + recherche de la séquence dans SeqHor
        
        strSeq = target.Value

        'Déclaration Range de recherche
        
        Set rngFindSeq = wshHor.Range("A1", "A65356")

        'Recherche de la séquence
        
        Set rngCellSeq = rngFindSeq.Find(what:=strSeq, LookAt:=xlWhole, MatchCase:=False)
        Set rngSeqHor = rngCellSeq.CurrentRegion


        rngSeqHor.Offset(2, 0).Resize(rngSeqHor.Rows.Count - 2, rngSeqHor.Columns.Count).Copy
        wshPCDF.Cells(intLigne, intColumn + 1).PasteSpecial

    End If

Next I

End If


'Réinitialise Excel
'________________________________________________________

Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Application.DisplayAlerts = True

Exit Sub

'********************************************************
                    'ERROR HANDLING
'********************************************************
Erreurs:

If Err <> 0 Then 
Application.EnableEvents = True
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Application.DisplayAlerts = True
End if

End Sub

0
yg_be Messages postés 23335 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 novembre 2024 1 551 > iadi0615
15 juil. 2019 à 21:38
0
yg_be Messages postés 23335 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 novembre 2024 1 551 > iadi0615
Modifié le 15 juil. 2019 à 21:54
il me semble que l'instruction
.copy
va utiliser le presse-papier, donc entrer en conflit avec le copier/coller manuel.
0
iadi06 Messages postés 21 Date d'inscription mercredi 20 février 2019 Statut Membre Dernière intervention 27 août 2022 > yg_be Messages postés 23335 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 novembre 2024
Modifié le 15 juil. 2019 à 22:12
Je viens de faire le test, sur une feuille ayant également un code worksheet change dans lequel il n'y a pas d'instructions
.copy
; le constat reste le même. Impossible de copier coller plus d'une fois.

Voici le code en question :
 
Option Explicit
Option Compare Text

Private Sub worksheet_change(ByVal target As Range)


Dim wshVert As Worksheet
Dim intLigne As Integer
Dim intColumn As Integer
'Dim wsh As Worksheet

'Permet d'optimiser la vitesse du code
'________________________________________________________

Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.DisplayAlerts = False

Set wshVert = Worksheets("SeqVert")
  
'Code
'--------------------------------------------------------------
On Error GoTo Erreurs

Select Case target.Value
        
    Case "SS"
        intLigne = target.Row
        intColumn = target.Column
        Cells(intLigne, intColumn + 1).Interior.Color = RGB(0, 255, 0)
    
    Case "SER"
        intLigne = target.Row
        intColumn = target.Column
        Cells(intLigne, intColumn + 1).Interior.Color = RGB(217, 225, 242)
        
    Case "PEIN"
        intLigne = target.Row
        intColumn = target.Column
        Cells(intLigne, intColumn + 1).Interior.Color = RGB(192, 0, 0)
    

End Select

'Réinitialise Excel
'________________________________________________________

Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Application.DisplayAlerts = True

Exit Sub

'********************************************************
                    'ERROR HANDLING
'********************************************************
Erreurs:
    If Err <> 0 Then Application.EnableEvents = True

End Sub
0
Kalissi Messages postés 218 Date d'inscription jeudi 2 mai 2013 Statut Membre Dernière intervention 15 juillet 2019 20
15 juil. 2019 à 22:49
Bonjour,

Il me semble bien qu'il te faut fermer le copier/coller entre chaque itération ...


rngSeqHor.Offset(2, 0).Resize(rngSeqHor.Rows.Count - 2, rngSeqHor.Columns.Count).Copy
wshPCDF.Cells(intLigne, intColumn + 1).PasteSpecial
Application.CutCopyMode = False ' Cette ligne doit être présente dans le cycle


K
0
iadi06 Messages postés 21 Date d'inscription mercredi 20 février 2019 Statut Membre Dernière intervention 27 août 2022
15 juil. 2019 à 23:28
Je te renvoie à ma dernière réponse à yg_be.
Il me semble que c'est le worksheet change et non le copy qui empêche le copier/coller x fois.
0