Copier/coller plusieurs fois ne fonctionne plus

iadi0615 -  
iadi06 Messages postés 21 Statut Membre -
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.

2 réponses

  1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    bonjour, je pense déterminant de montrer le code de tes macros.
    0
    1. iadi0615
       
      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
      1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > iadi0615
         
        il me semble que l'instruction
        .copy
        va utiliser le presse-papier, donc entrer en conflit avec le copier/coller manuel.
        0
      2. iadi06 Messages postés 21 Statut Membre > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
         
        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
  2. Kalissi Messages postés 221 Statut Membre 20
     
    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
    1. iadi06 Messages postés 21 Statut Membre
       
      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