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

vba la methode pastespecial de la classe range a echouée

  • Initiateur de la discussion Initiateur de la discussion actaris51
  • Date de début Date de début

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 !

actaris51

XLDnaute Occasionnel
Bonjour,
j'ai ce bout de code dans une macro :

classeurSource.Sheets("Supplier Deliverables").Range("A1:AE500").Copy
With classeurDestination.Sheets("Deliverables_Database").Range("A1")
.PasteSpecial Paste:=xlPasteValues
.PasteSpecial Paste:=xlPasteFormats
Application.CutCopyMode = False
End With

Lorsque je l'execute, il bloque sur la fonction xlpasteformats et me dit : la méthode pastespecial de la classe range a echoué.

Or si je remplace ce bout de code par :

classeurSource.Sheets("Supplier Deliverables").Range("A1:AE1000").Copy classeurDestination.Sheets("Deliverables_Database").Range("A1")

et bien, ca marche ! mais le probleme, c'est que le nom associés à certaines plages de cellules du classeur source sont copiés aussi dans mon classeur de destination, et ca ne me convient pas.

J'ai beau cherché, je ne trouve pas l'erreur
Pouvez vous m'aider ??
Merci
 
Re : vba la methode pastespecial de la classe range a echouée

Bonjour actaris51
Comme ça, peut-être ?
Code:
[COLOR="DarkSlateGray"].PasteSpecial Paste:=xlPasteValuesAndNumberFormats[/COLOR]
ROGER2327
 
Re : vba la methode pastespecial de la classe range a echouée

Bonjour le fil, actaris, Roger2327

Pour les "PastSpecial", c'est plutôt cette forme (me semble-t-il)
Code:
Sheets("Supplier Deliverables").Range("A1:AE500").Copy
 
Sheets("Deliverables_Database" ).Range("A1")[B][COLOR=red].Select[/COLOR][/B]
[COLOR=red][B]Selection.[/B][/COLOR]PasteSpecial Paste:=xlPasteValuesAndNumberFormats
A adapter ...

A plus
 
Re : vba la methode pastespecial de la classe range a echouée

Bonjour actaris, Roger, Soenda

le code ci-dessous fonctionne chez moi, excel2003 :

Code:
Dim wb1 As Workbook, wb2 As Workbook
Set wb1 = Workbooks("classeur1.xls")
Set wb2 = Workbooks("classeur2.xls")
wb1.Sheets(1).Range("A1:AE500").Copy
With wb2.Sheets(1).Range("A1")
    .PasteSpecial xlPasteValues
    .PasteSpecial xlPasteFormats
End With

bon après midi
@+
 
Re : vba la methode pastespecial de la classe range a echouée

Merci à tout le monde,
Mais hélas l'erreur est toujours présente. Ca doit venir d'un paramètre dans le fichier source, parcque là j'ai beau cherché, le code est correct.
Par contre, je peut contourner le problème :
mon code est :

Sub Ouverture_Fichier_Supplier()
Application.ScreenUpdating = False

Dim Fichier_Travail As String, Fichier As String
Dim Msg, Style, Title, Help, Ctxt, Response, MyString
Dim classeurSource As Workbook, classeurDestination As Workbook

ChDrive CHEMIN2
ChDir CHEMIN2

'Set une variable qui va contenir le nom et le chemin du fichier à ouvrir.
Fichier = Application.GetOpenFilename("Excel Files (*.xls), *.xls", 1, "Select the supplier extract") 'On ouvre la fenêtre et conserve le nom du fichier choisi dans une variable

'Test si un fichier a été sélectionné
If Fichier = "Faux" Then
Msg = "Aucun fichier sélectionné. SVP, veuillez recommencer !" ' Définit le message.
Style = vbOKOnly ' Définit les boutons.
Title = "Abandon de la procédure !" ' Définit le titre.
' Affiche le message.
Response = MsgBox(Msg, Style, Title)
Exit Sub 'Sort de la macro puisqu'aucun fichier n'a été sélectionné
Else 'Sinon, on ouvre le fichier sélectionné
Workbooks.OpenText Filename:=Fichier
Fichier_Travail = ActiveWorkbook.Name 'On donne à une variable le nom de ce fichier qu'on vient d'ouvrir.
End If
'ouvrir le classeur source (en lecture seule)
Set classeurSource = Application.Workbooks.Open(Fichier_Travail, , True)
'définir le classeur destination
Set classeurDestination = ThisWorkbook

'copier les données du classeur source vers le classeur destination
classeurSource.Sheets("Supplier Deliverables").Range("A1:AE1000").Copy classeurDestination.Sheets("Deliverables_Database").Range("A1")
'classeurSource.Sheets("Risks-Issues").Cells.Copy classeurDestination.Sheets("Risks_Database").Range("A1")
'classeurSource.Sheets("KPIs").Cells.Copy classeurDestination.Sheets("Quality_Database").Range("A1")
'classeurSource.Sheets("Supplier Deliverables").Range("A1:AE500").Copy
'With classeurDestination.Sheets("Deliverables_Database").Range("A1")
'.PasteSpecial Paste:=xlPasteValuesAndNumberFormats
'.PasteSpecial Paste:=xlPasteFormats
'Application.CutCopyMode = False
'End With
classeurSource.Sheets("Risks-Issues").Range("A1:BE1000").Copy
With classeurDestination.Sheets("Risks_Database").Range("A1")
.PasteSpecial Paste:=xlPasteValues
.PasteSpecial Paste:=xlPasteFormats
End With
classeurSource.Sheets("KPIs").Range("A1:BE1000").Copy
With classeurDestination.Sheets("Quality_Database").Range("A1")
.PasteSpecial Paste:=xlPasteValues
.PasteSpecial Paste:=xlPasteFormats
End With

'Vide le presse papiers
Application.CutCopyMode = False
'fermer le classeur source
classeurSource.Close False

end sub

Comme ca, ca marche, sauf que, durant cette macro, tous les noms définis dans le classeur source sont importés dans mon classeur de destination (par ex; si dans le classeur source il y a un tableau nommé toto, bah il apparait dans mon classeur de destination), ce que je ne veux pas...
Vous avez une idée pour contourner le probleme ??
 
- 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
1
Affichages
909
Réponses
0
Affichages
647
Réponses
0
Affichages
570
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…