Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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
Hervé
Salut Yann,
Coche la référence à Excel.
Teste si ça fonctionne :

Private Sub Command1_Click()
Dim AppExcel As Excel.Application
Dim Cls1 As Workbook
Dim Cls2 As Workbook
Dim Fe1 As Worksheet
Dim Fe2 As Worksheet

Set AppExcel = Excel.Application
AppExcel.Visible = True

Set Cls1 = AppExcel.Workbooks.Open("D:Classeur1.xls")
Set Cls2 = AppExcel.Workbooks.Open("D:Classeur2.xls")
Set Fe1 = Cls1.Worksheets("Feuil1")
Set Fe2 = Cls2.Worksheets("Feuil1")

'formule en A11 du 1er classeur
'et valeur copiée en A1 du 2ème classeur
Fe1.Range("A11").Copy
Fe2.Range("A1").PasteSpecial (xlPasteValues)

Cls2.Save

Set Fe1 = Nothing
Set Fe2 = Nothing
Set Cls1 = Nothing
Set Cls2 = Nothing
Set AppExcel = Nothing
End Sub

Hervé.

"Yann" a écrit dans le message news:

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
Yann
Bonjour, et merci pour l'aide.

Ce bout de code ressemble beaucoup à ce que j'avais, et on vient de
m'indiquer ce qui ne marchait pas : en fait ce sont les constantes d'Excel
qui ne sont pas reconnues par vb.
Il fallait remplacer xlValues par &HFFFFEFBD et xlNone par &HFFFFEFD2

Maintenant ça marche bien.

Encore merci de m'avoir répondu.
Yann

"Hervé" wrote:

Salut Yann,
Coche la référence à Excel.
Teste si ça fonctionne :

Private Sub Command1_Click()
Dim AppExcel As Excel.Application
Dim Cls1 As Workbook
Dim Cls2 As Workbook
Dim Fe1 As Worksheet
Dim Fe2 As Worksheet

Set AppExcel = Excel.Application
AppExcel.Visible = True

Set Cls1 = AppExcel.Workbooks.Open("D:Classeur1.xls")
Set Cls2 = AppExcel.Workbooks.Open("D:Classeur2.xls")
Set Fe1 = Cls1.Worksheets("Feuil1")
Set Fe2 = Cls2.Worksheets("Feuil1")

'formule en A11 du 1er classeur
'et valeur copiée en A1 du 2ème classeur
Fe1.Range("A11").Copy
Fe2.Range("A1").PasteSpecial (xlPasteValues)

Cls2.Save

Set Fe1 = Nothing
Set Fe2 = Nothing
Set Cls1 = Nothing
Set Cls2 = Nothing
Set AppExcel = Nothing
End Sub

Hervé.

"Yann" a écrit dans le message news:

> 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
Hervé
Salut Yann,
D'où la nécessité de cocher la référence ;o)
Hervé.

"Yann" a écrit dans le message news:

Bonjour, et merci pour l'aide.

Ce bout de code ressemble beaucoup à ce que j'avais, et on vient de
m'indiquer ce qui ne marchait pas : en fait ce sont les constantes d'Excel
qui ne sont pas reconnues par vb.
Il fallait remplacer xlValues par &HFFFFEFBD et xlNone par &HFFFFEFD2

Maintenant ça marche bien.

Encore merci de m'avoir répondu.
Yann

"Hervé" wrote:

> Salut Yann,
> Coche la référence à Excel.
> Teste si ça fonctionne :
>
> Private Sub Command1_Click()
> Dim AppExcel As Excel.Application
> Dim Cls1 As Workbook
> Dim Cls2 As Workbook
> Dim Fe1 As Worksheet
> Dim Fe2 As Worksheet
>
> Set AppExcel = Excel.Application
> AppExcel.Visible = True
>
> Set Cls1 = AppExcel.Workbooks.Open("D:Classeur1.xls")
> Set Cls2 = AppExcel.Workbooks.Open("D:Classeur2.xls")
> Set Fe1 = Cls1.Worksheets("Feuil1")
> Set Fe2 = Cls2.Worksheets("Feuil1")
>
> 'formule en A11 du 1er classeur
> 'et valeur copiée en A1 du 2ème classeur
> Fe1.Range("A11").Copy
> Fe2.Range("A1").PasteSpecial (xlPasteValues)
>
> Cls2.Save
>
> Set Fe1 = Nothing
> Set Fe2 = Nothing
> Set Cls1 = Nothing
> Set Cls2 = Nothing
> Set AppExcel = Nothing
> End Sub
>
> Hervé.
>
> "Yann" a écrit dans le message news:
>
> > 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
yann
Bonjour,
Comment coche-t-on la référence à Excel ?

Merci d'avance.
Yann

"Hervé" wrote:

Salut Yann,
D'où la nécessité de cocher la référence ;o)
Hervé.

"Yann" a écrit dans le message news:

> Bonjour, et merci pour l'aide.
>
> Ce bout de code ressemble beaucoup à ce que j'avais, et on vient de
> m'indiquer ce qui ne marchait pas : en fait ce sont les constantes d'Excel
> qui ne sont pas reconnues par vb.
> Il fallait remplacer xlValues par &HFFFFEFBD et xlNone par &HFFFFEFD2
>
> Maintenant ça marche bien.
>
> Encore merci de m'avoir répondu.
> Yann
>
> "Hervé" wrote:
>
> > Salut Yann,
> > Coche la référence à Excel.
> > Teste si ça fonctionne :
> >
> > Private Sub Command1_Click()
> > Dim AppExcel As Excel.Application
> > Dim Cls1 As Workbook
> > Dim Cls2 As Workbook
> > Dim Fe1 As Worksheet
> > Dim Fe2 As Worksheet
> >
> > Set AppExcel = Excel.Application
> > AppExcel.Visible = True
> >
> > Set Cls1 = AppExcel.Workbooks.Open("D:Classeur1.xls")
> > Set Cls2 = AppExcel.Workbooks.Open("D:Classeur2.xls")
> > Set Fe1 = Cls1.Worksheets("Feuil1")
> > Set Fe2 = Cls2.Worksheets("Feuil1")
> >
> > 'formule en A11 du 1er classeur
> > 'et valeur copiée en A1 du 2ème classeur
> > Fe1.Range("A11").Copy
> > Fe2.Range("A1").PasteSpecial (xlPasteValues)
> >
> > Cls2.Save
> >
> > Set Fe1 = Nothing
> > Set Fe2 = Nothing
> > Set Cls1 = Nothing
> > Set Cls2 = Nothing
> > Set AppExcel = Nothing
> > End Sub
> >
> > Hervé.
> >
> > "Yann" a écrit dans le message news:
> >
> > > 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
> > >
> >
> >
> >