OVH Cloud OVH Cloud

Méthode PasteSpecial de la classe Range

4 réponses
Avatar
Yann
Bonjour,
Dans mon application VB je travaille sur 2 classeurs Excel, et je veux faire
un collage spécial valeur de l'un vers l'autre.

J'utilise un morceau de code qui marche dans une macro excel, mais sous VB
ça ne marche pas :

appex.Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone,
SkipBlanks:= _
False, Transpose:=False

Il met comme message d'erreur : "La méthode PasteSpecial de la classe Range
a échoué".

Quelqu'un sait-il pourquoi ou a-t-il une idée ?

Merci d'avance.
Cordialement.
Yann

4 réponses

Avatar
AV
Pourquoi ça fait pas, je sais pas...
Mais tu n'as pas besoin de passer par les méthodes copy/paste quand il s'agit de
récupérer simplement la valeur
Exemple pour récupérer la valeur de A1 de Feuil2 du classeur "Classeur2" dans B2
de Feuil1 du classeur "Classeur1"

[[Classeur1]Feuil1!B2] = [[Classeur2]Feuil2!A1]

AV
Avatar
anomymousA
re,

comme te l'a fait remarquer AV, il n'est pas nécéssaire et même pas
forcément souhaitable (vitesse de code) de faire des oéprations de
copeir-coller par déplacement sur des fichiers.
Ceci dit, si tu y tiens, voici un exemple de code qui fonctionne.

Set appex = Workbooks("toto.xls").Sheets(1).Cells(2, 1) 'lieu de destination
de la copie
Cells(1, 1).Copy 'en supposant que cette cellule est celle de la feuille
active Workbooks("toto.xls").Sheets(1).Activate
appex.Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone,
skipBlanks:úlse, Transpose:úlse
Application.CutCopyMode = False

A+



Bonjour,
Dans mon application VB je travaille sur 2 classeurs Excel, et je veux faire
un collage spécial valeur de l'un vers l'autre.

J'utilise un morceau de code qui marche dans une macro excel, mais sous VB
ça ne marche pas :

appex.Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone,
SkipBlanks:= _
False, Transpose:úlse

Il met comme message d'erreur : "La méthode PasteSpecial de la classe Range
a échoué".

Quelqu'un sait-il pourquoi ou a-t-il une idée ?

Merci d'avance.
Cordialement.
Yann


Avatar
Michel Gaboly
Re,

Je ne sais pas si je suis mal réveillé, mais apparemment je suis le seul
à penser qu'il parle de VB et non de VBA.

Il parle de code qui marche dans une macro Excel (VBA), mais pas dans
VB. Comme je ne connais pas VB, je n'ai pas de réponse à lui apporter,
sinon que la classe Range est spécifique à VBA Excel et n'est
probablement pas utilisable directement dans VB.


re,

comme te l'a fait remarquer AV, il n'est pas nécéssaire et même pas
forcément souhaitable (vitesse de code) de faire des oéprations de
copeir-coller par déplacement sur des fichiers.
Ceci dit, si tu y tiens, voici un exemple de code qui fonctionne.

Set appex = Workbooks("toto.xls").Sheets(1).Cells(2, 1) 'lieu de destination
de la copie
Cells(1, 1).Copy 'en supposant que cette cellule est celle de la feuille
active Workbooks("toto.xls").Sheets(1).Activate
appex.Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone,
skipBlanks:úlse, Transpose:úlse
Application.CutCopyMode = False

A+




Bonjour,
Dans mon application VB je travaille sur 2 classeurs Excel, et je veux faire
un collage spécial valeur de l'un vers l'autre.

J'utilise un morceau de code qui marche dans une macro excel, mais sous VB
ça ne marche pas :

appex.Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone,
SkipBlanks:= _
False, Transpose:úlse

Il met comme message d'erreur : "La méthode PasteSpecial de la classe Range
a échoué".

Quelqu'un sait-il pourquoi ou a-t-il une idée ?

Merci d'avance.
Cordialement.
Yann




--
Cordialement,

Michel Gaboly
www.gaboly.com


Avatar
anomymousA
ouais, je ne suis pas bien réveillé. Mon cerveau ( enfin ce qu'il en reste) a
rajouté un A automatiquement à VB dans son message (Pavlov, quand tu nous
tiens !!!).

A+


Re,

Je ne sais pas si je suis mal réveillé, mais apparemment je suis le seul
à penser qu'il parle de VB et non de VBA.

Il parle de code qui marche dans une macro Excel (VBA), mais pas dans
VB. Comme je ne connais pas VB, je n'ai pas de réponse à lui apporter,
sinon que la classe Range est spécifique à VBA Excel et n'est
probablement pas utilisable directement dans VB.


re,

comme te l'a fait remarquer AV, il n'est pas nécéssaire et même pas
forcément souhaitable (vitesse de code) de faire des oéprations de
copeir-coller par déplacement sur des fichiers.
Ceci dit, si tu y tiens, voici un exemple de code qui fonctionne.

Set appex = Workbooks("toto.xls").Sheets(1).Cells(2, 1) 'lieu de destination
de la copie
Cells(1, 1).Copy 'en supposant que cette cellule est celle de la feuille
active Workbooks("toto.xls").Sheets(1).Activate
appex.Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone,
skipBlanks:úlse, Transpose:úlse
Application.CutCopyMode = False

A+




Bonjour,
Dans mon application VB je travaille sur 2 classeurs Excel, et je veux faire
un collage spécial valeur de l'un vers l'autre.

J'utilise un morceau de code qui marche dans une macro excel, mais sous VB
ça ne marche pas :

appex.Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone,
SkipBlanks:= _
False, Transpose:úlse

Il met comme message d'erreur : "La méthode PasteSpecial de la classe Range
a échoué".

Quelqu'un sait-il pourquoi ou a-t-il une idée ?

Merci d'avance.
Cordialement.
Yann




--
Cordialement,

Michel Gaboly
www.gaboly.com