Copiage impossible d'une feuille à l'autre

nyco-

XLDnaute Junior
Bonjour,

Première question de l'année 2010 (meilleurs voeux d'ailleurs !).

J'ai un petit bout de code VBA qui fonctionnait très bien la semaine passée et qui bizarrement ne fonctionne plus aujourd'hui. Il s'agit simplement de copier une plage de la Feuille 1 our la coller sur la Feuille 2.

Le code est classique, définition de la plage, selection, copy puis même topo dans l'autre feuille et paste. Quand je lance la macro j'ai desormais une erreur qui est située sur le paste.

J'ai décortiqué le code, je l'ai amputé de certaines lignes pour voir d'où venait l'erreur et il s'avère que je perd le copiage en cours de code ...

Autrement dit, je sélectionne la plage de la Feuille 1, je la copie (bordure en pointillés mobiles) et au moment où j'active l'autre Feuille, je perds les pointillés. Donc forcément il essaye de coller quelque chose qui n'est plus copié dans le presse papier.

J'ai pris un fichier vierge, j'ai simulé cette partie du code et là je ne perds pas le copiage en cours de route. Il reste actif même en activant l'autre feuille.

Alors ma question est la suivante : Est-ce que ça vous est déjà arrivé et, si oui, quelle est la solution ? Sachant que le code est sain, le problème vient de je ne sais trop où ...

Merci d'avance pour votre aide :D
 

CBernardT

XLDnaute Barbatruc
Re : Copiage impossible d'une feuille à l'autre

Bonjour nyco-,

Cela arrive effectivement de vider le presse papier (Copier) quand il y a une macro évènementielle activée à l'affichage d'une feuille sur laquelle on souhaite coller des données.

Egalement si la feuille est protégée.....
 

nyco-

XLDnaute Junior
Re : Copiage impossible d'une feuille à l'autre

Bonjour CBernardT,

Pour le moment je n'ai pas trouvé de solution, j'ai reboot histoire d'exclure d'enventuels problèmes de presse papier mais ça ne vient pas de là ... J'ai vu ça et là des exemples de problèmes similaires sur des forums mais sans vraiment trouver la solution. Mon code n'est pourtant pas compliqué, mais en constatant que la copie se désactivait à l'activation de la Feuille de destination j'ai compris pourquoi la macro s'arrêtait.

Reste à savoir comment contourner l'erreur, d'autant que le fichier se destine à un usage qui ne lui permet pas de fonctionner une fois sur deux (ou moins ...).

A toutes fins utiles :

Private Sub CommandButton3_Click()

Dim rep As Integer
Dim annee As Integer

If Sheets("Dosimétries").Range("B24").Value = "" Or Sheets("Dosimétries").Range("B35").Value = "" Then

Select Case MsgBox("Aucune donnée à archiver, veuillez compléter les valeurs pour l'année en cours ", vbInformation, "Information")
End Select

Else

annee = Sheets("Dosimétries").Range("U11").Value

rep = MsgBox("ATTENTION CETTE ACTION EST IRREVERSIBLE" & vbCrLf & vbCrLf & "Souhaitez-vous vraiment archiver l'année " & annee & " ", vbExclamation + vbYesNo, "Avertissement")

lign = Sheets("Historiques").Range("B65100").End(xlUp).Row + 1

lign2 = lign + 11

MsgBox "Valeur lign =" & lign
MsgBox "Valeur lign2 =" & lign2

If rep = vbYes Then

With Sheets("Dosimétries")

Range(Cells(11, 2), Cells(22, 14)).Select
Selection.Copy

End With

Sheets("Historiques").Activate
Sheets("Historiques").Range("B" & lign & ":" & "N" & lign2).Select
ActiveSheet.Paste
Sheets("Historiques").Range("B" & lign2 + 2).Value = "x"

Sheets("Dosimétries").Activate

With Sheets("Dosimétries")

Range(Cells(11, 2), Cells(22, 14)).Select
Selection.ClearContents

Range(Cells(24, 2), Cells(35, 14)).Select
Selection.Copy

Range(Cells(11, 2), Cells(22, 14)).Select
ActiveSheet.Paste

Range(Cells(24, 2), Cells(35, 14)).Select
Selection.ClearContents

Range("C24").Select

End With

Else: Sheets("Dosimétries").Range("B11").Select

End If

End If
 

CBernardT

XLDnaute Barbatruc
Re : Copiage impossible d'une feuille à l'autre

Re,

Sans fichier, j'ai revu la syntaxe de la macro vite fait !

A tester :

Private Sub CommandButton3_Click()
Dim Annee As Integer, Rep As String, Lign As Long, Lign2 As Long

If Sheets("Dosimétries").Range("B24").Value = "" Or Sheets("Dosimétries").Range("B35").Value = "" Then
MsgBox "Aucune donnée à archiver, veuillez compléter les valeurs pour l'année en cours, merci", vbInformation, "Information"
Else
Annee = Sheets("Dosimétries").Range("U11").Value
Rep = MsgBox("ATTENTION CETTE ACTION EST IRREVERSIBLE !" & vbCrLf & vbCrLf & "Souhaitez-vous vraiment archiver l'année " & Annee & " ?", vbExclamation + vbYesNo, "Avertissement")
With Sheets("Historiques")
Lign = .Range("B65536").End(xlUp).Row + 1
Lign2 = Lign + 11
MsgBox "Valeur lign =" & Lign
MsgBox "Valeur lign2 =" & Lign2
If Rep = vbYes Then
' Copie des données
Sheets("Dosimétries").Range("B11:N22").Copy .Range("B" & Lign)
' Mise en place de l'index x
.Range("B" & Lign2 + 2).Value = "x"
' Transfert et effacement
With Sheets("Dosimétries")
Range(.Cells(11, 2), .Cells(22, 14)).ClearContents
Range(.Cells(24, 2), .Cells(35, 14)).Copy .Cells(11, 2)
Range(.Cells(24, 2), .Cells(35, 14)).ClearContents
End With
Else
Sheets("Dosimétries").Range("B11").Select
End If
End With
End If
End Sub
 

nyco-

XLDnaute Junior
Re : Copiage impossible d'une feuille à l'autre

Re CBernardT,

Hey bien écoute ta solution semble fonctionner pour le peu que je l'ai testée ces dernières minutes. Elle permet de contourner les problèmes de Copy et accessoirement les Select un peu "impropres".

Je continue de tester tout ça mais a priori ca résoud mon souci.

Merci pour le tuyau et la rapidité de réponse, c'est sympa :)
 

Discussions similaires

Réponses
5
Affichages
137

Statistiques des forums

Discussions
312 372
Messages
2 087 716
Membres
103 651
dernier inscrit
Jonathan Fournier