PasteSpecial [Résolu]

aalex_38 4 Messages postés samedi 2 décembre 2006Date d'inscription 21 novembre 2007 Dernière intervention - 15 oct. 2007 à 12:11 - Dernière réponse : aalex_38 4 Messages postés samedi 2 décembre 2006Date d'inscription 21 novembre 2007 Dernière intervention
- 16 oct. 2007 à 11:19
Bonjour,

Dans une macro excel, je cherche à faire un collage spécial et j'ai l'erreur suivante  :

Erreur d'exécution '1004'
La méthode PasteSpecial de la classe Range a échoué

Manuellement ça fonctionne :  Je selectionne une ligne  je la copie et menu edition / Collage spécial / Largeurs de colonne

Mon code qui pose problème pour le collage :

Windows("STATBNP").Activate
Rows("1:1").Select
Selection.Insert Shift:=xlDown
Selection.PasteSpecial Paste:=xlColumnWidths

Merci de bien vouloir m'aider, pour ce petit problème qui m'oblige tous les jours à terminer l'exécution de ma macro par une action manuelle !

aalex_38
Afficher la suite 

Votre réponse

7 réponses

cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 15 oct. 2007 à 12:37
+3
Utile
Tu peux vérifier si ton code est bon en enregistrant les opérations manuelles dans une macro. ensuite tu compare le code de la macro avec le tien.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_casy
cs_MPi 3863 Messages postés mardi 19 mars 2002Date d'inscription 13 mars 2018 Dernière intervention - 15 oct. 2007 à 23:36
+3
Utile
Voici ce que donne l'aide...
Je ne vois à nulle part Paste:=xlColumnWidths ???

PasteSpecial, méthode (objet
Range)
<object id="hhobj_1" style="left: 10px; width: 56px; top: 39px; height: 13px;" type="application/x-oleobject" classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11" height="13" width="56"></object>        
<object id="hhobj_2" style="left: 98px; width: 49px; top: 39px; height: 13px;" type="application/x-oleobject" classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11" height="13" width="49"></object>        
<object id="hhobj_3" style="left: 181px; width: 70px; top: 39px; height: 13px;" type="application/x-oleobject" classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11" height="13" width="70"></object>

Colle dans la plage spécifiée un objet Range provenant du
Presse-papiers.

Syntaxe

expression.PasteSpecial(Paste,
Operation, SkipBlanks, Transpose)

expression   Obligatoire. Expression qui renvoie un objet
Range.

Paste   Argument de type Variant facultatif.
La partie de la plage à copier. Il peut s'agir de l'une des constantes
XlPasteType suivantes : xlPasteAll, xlPasteFormulas,
xlPasteValues, xlPasteFormats, xlPasteNotes ou
xlPasteAllExceptBorders. La valeur par défaut est xlPasteAll.

Operation   Argument de type Variant
facultatif. L'opération de collage. Il peut s'agir de l'une des constantes
XlPasteSpecialOperation suivantes : xlPasteSpecialOperationNone,
xlPasteSpecialOperationAdd, xlPasteSpecialOperationSubtract,
xlPasteSpecialOperationMultiply ou xlPasteSpecialOperationDivide.
La valeur par défaut est xlPasteSpecialOperationNone.

SkipBlanks   Argument de type Variant
facultatif. Affectez-lui la valeur True pour que les cellules vides de la
plage provenant du Presse-papiers ne soient pas collées dans la plage de
destination. La valeur par défaut est False.

Transpose   Argument de type Variant
facultatif. Affectez-lui la valeur True pour transposer les lignes et les
colonnes lors du collage de la plage. La valeur par défaut est False.

MPi²
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_MPi
cs_MPi 3863 Messages postés mardi 19 mars 2002Date d'inscription 13 mars 2018 Dernière intervention - 15 oct. 2007 à 23:37
+3
Utile
Oups... parti trop vite.
Sous quelle version travailles-tu ?

MPi²
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_MPi
aalex_38 4 Messages postés samedi 2 décembre 2006Date d'inscription 21 novembre 2007 Dernière intervention - 16 oct. 2007 à 10:36
+3
Utile
Merci pour vos réponses.

Je travail avec EXCEL 2000

Quand j'enregistre la macro manuellement, j'ai le code suivant :

    Rows("1:1").Select
    Application.CutCopyMode = False
    Selection.Copy
    ActiveWindow.WindowState = xlMinimized
    Windows("Classeur1").Activate
    ActiveWindow.WindowState = xlMaximized
    Rows("1:1").Select
    Selection.PasteSpecial Paste:=xlColumnWidths, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False

Dans ma macro, j'ai ça :

Windows("Suivi des anos.xls").Activate
    Sheets("ET").Select
    Rows("1:1").Select
    Selection.Copy
     Sheets("coller").Select
      
    Windows("STAT").Activate
    Rows("1:1").Select
    Selection.Insert Shift:=xlDown
    Selection.PasteSpecial Paste:=xlColumnWidths ', Operation:=xlNone, _
    '    SkipBlanks:=False, Transpose:=False ' => commentaire ou non l'erreur est la même.




aalex_38
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de aalex_38
JM247L 444 Messages postés mardi 27 mars 2007Date d'inscription 1 mars 2011 Dernière intervention - 16 oct. 2007 à 11:00
+3
Utile
Salut,
Je vois bien le code d'insertion mais je ne vois pas de code concernant la copie
   Windows("STATBNP").Activate
   Rows("1:1").Select
   Selection.Insert Shift:=xlDown     'Insertion
   Selection.Copy                           ' Devrait exister
   Selection.PasteSpecial Paste:=xlColumnWidths

Mais pourquoi vouloir copier la largeur des colonnes lors d'une sélection de ligne !!! A mon avis cela reviens à copier/coller la même chose

 Cliquer "Réponse Acceptée"
JML - Partageons Notre Savoir & Nos Acquis
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de JM247L
JM247L 444 Messages postés mardi 27 mars 2007Date d'inscription 1 mars 2011 Dernière intervention - 16 oct. 2007 à 11:08
+3
Utile
J'ai du m'endormir sur ma réponse et je n'ai pas vu arriver le post précédent

Mais je ne crois pas que tu puisses insérer puis collage spéciale car si tu le fais manuellement, lors de l'insertion par clic droit il propose d'insérer les cellules copiées et si par le menu tu fais "Insérer/Ligne", il désactive la copie

Et en fait pourquoi insérer une ligne puisque la copie concerne le format des colonnes
















 Cliquer "Réponse Acceptée"
JML - Partageons Notre Savoir & Nos Acquis
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de JM247L
aalex_38 4 Messages postés samedi 2 décembre 2006Date d'inscription 21 novembre 2007 Dernière intervention - 16 oct. 2007 à 11:19
+3
Utile
En fait, j'inserre une ligne en en-tête et je formate les largeurs de colonnes comme dans la source de l'entête.

La macro fonctionne maintenant très bien, j'ai finni par trouver la réponse ici : http://support.microsoft.com/kb/231090/fr

Il fallait remplacer Paste:=xlColumnWidths par Paste:=8

Grace à vous j'ai pu me pencher sur le problème et trouver la solution.

Bonne journée.
aalex_38
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de aalex_38

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.