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

Microsoft 365 VBA: PasteSpecial refuse de fonctionner

Aloha

XLDnaute Accro
Bonjour,

Quelle peut être la raison que PasteSpecial ne fonctionne pas lorsque je démarre la macro normalement, alors que cela fonctionne lorsque je fais tourner la macro par F8?

Range("A" & lastRow + 1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Message d'erreur:
Erreur d'exécution 1004:
La méthode PasteSpecial de la classe Range a échoué.

Bonne journée
Aloha
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Peut être n'y a-t-il rien de copié ? Cela peut être vérifié en testant Application.CutCopyMode
Personnellement je préfère RgnCbl.Value = RngSrc.Value plutôt que RngSrc.Copy: RngCbl.PasteSpecial xlPasteValues
 

Aloha

XLDnaute Accro
Bonjour,
Si, la copie est bien faite.
Personnellement je préfère RgnCbl.Value = RngSrc.Value plutôt que RngSrc.Copy: RngCbl.PasteSpecial xlPasteValues
Je ne comprends pas tout à fait: je n'utilise pas RngSrc.Copy: RngCbl.PasteSpecial xlPasteValues!
Comment est-ce que j'intègre ce code dans le mien dont l'enregistreur macro est à l'origine?
 

Aloha

XLDnaute Accro
Re,

Voici une partie de mon code:

VB:
Do While fnames <> ""
    Set wbQuelle = Workbooks.Open(fnames)
  
    For n = 1 To wbQuelle.Sheets.Count
        wbQuelle.Sheets(n).Activate
  

'Copier et trier saisies

wbQuelle.Sheets(n).Activate
  
    
  Range("A5:A65").Select
  Selection.Copy
  wbZiel.Sheets("Saisies").Activate
      
' Vider les cellules vides considérées comme non vides
Dim zelle As Range
For Each zelle In ActiveSheet.UsedRange.Cells
      If Not zelle.HasFormula Then
           If Not IsEmpty(zelle) And zelle.Value = "" Then
           zelle.ClearContents
           End If
      End If
Next
  
lastRow = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row

    'Range("A" & lastRow + 1).Select
    Range("A" & lastRow + 1 & ":A" & lastRow + 62).Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
C'est donc tout en bas du code que cela cloche.
J'avais encore essayé de sélectionner toutes les cellules de destination pour la copie, sans effet.
 

Aloha

XLDnaute Accro
En allemand il y a une expression dont je ne connais pas d'équivalent aussi poignant et bref en français: "gewusst wie", ce qui signifie qu'on est d'accord avec son interlocuteur, mais qu'on ne sait pas comment s'y prendre.

Je ne suis pas bien fort en VBA: la preuve: j'utilise l'enregistreur.

Ce que je ne comprends pas: pourquoi le code fonctionne-t-il avec F8 mais pas en exécution normale?
 

Aloha

XLDnaute Accro
Lorsque je mets le code qui vide les cellules apparemment vides en remarque alors il tourne!
Vous avez donc raison!

Seulement, si je le mets plus tard, lastrow ne renverra pas la bonne valeur!
 

Aloha

XLDnaute Accro
Voici 2 fichiers, le fichier source (Septembre...) et le fichier destination (Base).
Le fichier source doit se trouver dans un dossier nommé "ToBeCopied"
Le code se trouve dans le module 2.
Vous y trouverez des éléments qui n'ont rien à voir avec cette tâche-ci; ignorez-les.

Il n'est pas encore complet:
il faut encore, après le triage, copier le nom en U1 dans le fichier source et le nom du service en AW1 et les coller dans le fichier destination en C et en D.
 

Pièces jointes

  • Septembre 2020 Service 1.xlsx
    300.1 KB · Affichages: 11
  • Base.xlsx
    99.3 KB · Affichages: 4

Discussions similaires

Réponses
5
Affichages
426
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…