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

PasteSpecial ??

12 réponses
Avatar
Michel MORICE
Bonsoir ou bonjour à tous.

En VBA sur Excel 2000

Malgré l'aide en ligne et l'assistant aux syntaxes, je n'arrive pas à faire
fonctionner la copie d'une zone dans une feuille alors que tout me paraît
simple et conforme.
Je place dans le presse-papier une zone de 10 cellules par exemple.
Je selectionne une nouvelle cellule.
Au moment d'exécuter la ligne suivante, cela se plante:

Zone.PasteSpecial Paste:=xlPasteAll

Avec le message suivant:

La méthode PasteSpecial de la classe Range a échoué.

Ayant épuisé toutes mes cartouches, si quelqu'un pouvait éclairer ma
lenterne nocture.

Merci

Michel

10 réponses

1 2
Avatar
Daniel.C
Bonsoir.
A tout hasard :
Selection.PasteSpecial Paste:=xlPasteAll
sauf si ce n'est pas cela que tu veux faire. Que représente Zone ? A-t-elle
la même taille que la zone copiée ?
Cordialement.
Daniel
"Michel MORICE" a écrit dans le message de news:
47ffe6f4$0$903$
Bonsoir ou bonjour à tous.

En VBA sur Excel 2000

Malgré l'aide en ligne et l'assistant aux syntaxes, je n'arrive pas à
faire fonctionner la copie d'une zone dans une feuille alors que tout me
paraît simple et conforme.
Je place dans le presse-papier une zone de 10 cellules par exemple.
Je selectionne une nouvelle cellule.
Au moment d'exécuter la ligne suivante, cela se plante:

Zone.PasteSpecial Paste:=xlPasteAll

Avec le message suivant:

La méthode PasteSpecial de la classe Range a échoué.

Ayant épuisé toutes mes cartouches, si quelqu'un pouvait éclairer ma
lenterne nocture.

Merci

Michel



Avatar
Michel MORICE
Bonsoir Daniel

Zone un bien un objet de type Range.
J'ai essayé la copie sur une cellule ou sur un range de même taille, le
résultat est le même.
J'ai aussi essayé Selection. PasteSpecial toujours la même erreur.

Je dois avoir un vrai problème de compréhension mais j'aimerais savoir où il
se situe.

Ci-après mon code complet, si vous avez une idée.

Dim EnCours As Boolean
Dim xDebut As Integer, xFin As Integer
Dim x As Integer, y As Integer, Couleur As Integer
Dim Zone As Range
'***********************************
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As
Boolean)
Dim Fin As Boolean
If Target.Interior.ColorIndex <> xlColorIndexNone Then
x = Target.Row: y = Target.Column: Couleur =
Target.Interior.ColorIndex
Fin = False
Do
If Cells(x - 1, y).Interior.ColorIndex = Couleur Then
x = x - 1
Else
xDebut = x
Fin = True
End If
Loop Until Fin
Fin = False
Do
If Cells(x + 1, y).Interior.ColorIndex = Couleur Then
x = x + 1
Else
xFin = x
Fin = True
End If
Loop Until Fin
Range(Cells(xDebut, y), Cells(xFin, y)).Cut
EnCours = True
End If
Cancel = True
End Sub
'**********************************
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If EnCours Then
Set Zone = Range(Cells(Target.Row, y), Cells(Target.Row + xFin -
xDebut, y))
Zone.Select
Selection.PasteSpecial Paste:=xlPasteAll '******* génère
l'erreur "La méthode PasteSpecial de la classe Range a échoué".
End If
End Sub

Merci

Michel

"Daniel.C" a écrit dans le message de news:

Bonsoir.
A tout hasard :
Selection.PasteSpecial Paste:=xlPasteAll
sauf si ce n'est pas cela que tu veux faire. Que représente Zone ?
A-t-elle la même taille que la zone copiée ?
Cordialement.
Daniel
"Michel MORICE" a écrit dans le message de news:
47ffe6f4$0$903$
Bonsoir ou bonjour à tous.

En VBA sur Excel 2000

Malgré l'aide en ligne et l'assistant aux syntaxes, je n'arrive pas à
faire fonctionner la copie d'une zone dans une feuille alors que tout me
paraît simple et conforme.
Je place dans le presse-papier une zone de 10 cellules par exemple.
Je selectionne une nouvelle cellule.
Au moment d'exécuter la ligne suivante, cela se plante:

Zone.PasteSpecial Paste:=xlPasteAll

Avec le message suivant:

La méthode PasteSpecial de la classe Range a échoué.

Ayant épuisé toutes mes cartouches, si quelqu'un pouvait éclairer ma
lenterne nocture.

Merci

Michel







Avatar
Daniel.C
Ou est l'instruction Copy ?
Daniel
"Michel MORICE" a écrit dans le message de news:
48013967$0$875$
Bonsoir Daniel

Zone un bien un objet de type Range.
J'ai essayé la copie sur une cellule ou sur un range de même taille, le
résultat est le même.
J'ai aussi essayé Selection. PasteSpecial toujours la même erreur.

Je dois avoir un vrai problème de compréhension mais j'aimerais savoir où
il se situe.

Ci-après mon code complet, si vous avez une idée.

Dim EnCours As Boolean
Dim xDebut As Integer, xFin As Integer
Dim x As Integer, y As Integer, Couleur As Integer
Dim Zone As Range
'***********************************
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As
Boolean)
Dim Fin As Boolean
If Target.Interior.ColorIndex <> xlColorIndexNone Then
x = Target.Row: y = Target.Column: Couleur =
Target.Interior.ColorIndex
Fin = False
Do
If Cells(x - 1, y).Interior.ColorIndex = Couleur Then
x = x - 1
Else
xDebut = x
Fin = True
End If
Loop Until Fin
Fin = False
Do
If Cells(x + 1, y).Interior.ColorIndex = Couleur Then
x = x + 1
Else
xFin = x
Fin = True
End If
Loop Until Fin
Range(Cells(xDebut, y), Cells(xFin, y)).Cut
EnCours = True
End If
Cancel = True
End Sub
'**********************************
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If EnCours Then
Set Zone = Range(Cells(Target.Row, y), Cells(Target.Row + xFin -
xDebut, y))
Zone.Select
Selection.PasteSpecial Paste:=xlPasteAll '******* génère
l'erreur "La méthode PasteSpecial de la classe Range a échoué".
End If
End Sub

Merci

Michel

"Daniel.C" a écrit dans le message de news:

Bonsoir.
A tout hasard :
Selection.PasteSpecial Paste:=xlPasteAll
sauf si ce n'est pas cela que tu veux faire. Que représente Zone ?
A-t-elle la même taille que la zone copiée ?
Cordialement.
Daniel
"Michel MORICE" a écrit dans le message de news:
47ffe6f4$0$903$
Bonsoir ou bonjour à tous.

En VBA sur Excel 2000

Malgré l'aide en ligne et l'assistant aux syntaxes, je n'arrive pas à
faire fonctionner la copie d'une zone dans une feuille alors que tout me
paraît simple et conforme.
Je place dans le presse-papier une zone de 10 cellules par exemple.
Je selectionne une nouvelle cellule.
Au moment d'exécuter la ligne suivante, cela se plante:

Zone.PasteSpecial Paste:=xlPasteAll

Avec le message suivant:

La méthode PasteSpecial de la classe Range a échoué.

Ayant épuisé toutes mes cartouches, si quelqu'un pouvait éclairer ma
lenterne nocture.

Merci

Michel











Avatar
Frédéric Sigonneau
Deux pistes possibles, qui pourraient expliquer l'erreur :
- la feuille est protégée (ma préférée)
- le classeur comporte plusieurs feuilles et le code (même écrit dans un module
de feuille) n'indique pas avec suffisamment de précision sur laquelle on travaille.

FS
---
Frédéric Sigonneau
http://frederic.sigonneau.free.fr

Bonsoir Daniel

Zone un bien un objet de type Range.
J'ai essayé la copie sur une cellule ou sur un range de même taille, le
résultat est le même.
J'ai aussi essayé Selection. PasteSpecial toujours la même erreur.

Je dois avoir un vrai problème de compréhension mais j'aimerais savoir où il
se situe.

Ci-après mon code complet, si vous avez une idée.

Dim EnCours As Boolean
Dim xDebut As Integer, xFin As Integer
Dim x As Integer, y As Integer, Couleur As Integer
Dim Zone As Range
'***********************************
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As
Boolean)
Dim Fin As Boolean
If Target.Interior.ColorIndex <> xlColorIndexNone Then
x = Target.Row: y = Target.Column: Couleur =
Target.Interior.ColorIndex
Fin = False
Do
If Cells(x - 1, y).Interior.ColorIndex = Couleur Then
x = x - 1
Else
xDebut = x
Fin = True
End If
Loop Until Fin
Fin = False
Do
If Cells(x + 1, y).Interior.ColorIndex = Couleur Then
x = x + 1
Else
xFin = x
Fin = True
End If
Loop Until Fin
Range(Cells(xDebut, y), Cells(xFin, y)).Cut
EnCours = True
End If
Cancel = True
End Sub
'**********************************
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If EnCours Then
Set Zone = Range(Cells(Target.Row, y), Cells(Target.Row + xFin -
xDebut, y))
Zone.Select
Selection.PasteSpecial Paste:=xlPasteAll '******* génère
l'erreur "La méthode PasteSpecial de la classe Range a échoué".
End If
End Sub

Merci

Michel

"Daniel.C" a écrit dans le message de news:

Bonsoir.
A tout hasard :
Selection.PasteSpecial Paste:=xlPasteAll
sauf si ce n'est pas cela que tu veux faire. Que représente Zone ?
A-t-elle la même taille que la zone copiée ?
Cordialement.
Daniel
"Michel MORICE" a écrit dans le message de news:
47ffe6f4$0$903$
Bonsoir ou bonjour à tous.

En VBA sur Excel 2000

Malgré l'aide en ligne et l'assistant aux syntaxes, je n'arrive pas à
faire fonctionner la copie d'une zone dans une feuille alors que tout me
paraît simple et conforme.
Je place dans le presse-papier une zone de 10 cellules par exemple.
Je selectionne une nouvelle cellule.
Au moment d'exécuter la ligne suivante, cela se plante:

Zone.PasteSpecial Paste:=xlPasteAll

Avec le message suivant:

La méthode PasteSpecial de la classe Range a échoué.

Ayant épuisé toutes mes cartouches, si quelqu'un pouvait éclairer ma
lenterne nocture.

Merci

Michel










Avatar
Daniel.C
Si tu fais un copy manuel, quelle est la séquence d'exécution des macros ?
Il est vraisemblable que le presse-papiers est vidé par une macro.
Daniel
"Michel MORICE" a écrit dans le message de news:
48013967$0$875$
Bonsoir Daniel

Zone un bien un objet de type Range.
J'ai essayé la copie sur une cellule ou sur un range de même taille, le
résultat est le même.
J'ai aussi essayé Selection. PasteSpecial toujours la même erreur.

Je dois avoir un vrai problème de compréhension mais j'aimerais savoir où
il se situe.

Ci-après mon code complet, si vous avez une idée.

Dim EnCours As Boolean
Dim xDebut As Integer, xFin As Integer
Dim x As Integer, y As Integer, Couleur As Integer
Dim Zone As Range
'***********************************
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As
Boolean)
Dim Fin As Boolean
If Target.Interior.ColorIndex <> xlColorIndexNone Then
x = Target.Row: y = Target.Column: Couleur =
Target.Interior.ColorIndex
Fin = False
Do
If Cells(x - 1, y).Interior.ColorIndex = Couleur Then
x = x - 1
Else
xDebut = x
Fin = True
End If
Loop Until Fin
Fin = False
Do
If Cells(x + 1, y).Interior.ColorIndex = Couleur Then
x = x + 1
Else
xFin = x
Fin = True
End If
Loop Until Fin
Range(Cells(xDebut, y), Cells(xFin, y)).Cut
EnCours = True
End If
Cancel = True
End Sub
'**********************************
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If EnCours Then
Set Zone = Range(Cells(Target.Row, y), Cells(Target.Row + xFin -
xDebut, y))
Zone.Select
Selection.PasteSpecial Paste:=xlPasteAll '******* génère
l'erreur "La méthode PasteSpecial de la classe Range a échoué".
End If
End Sub

Merci

Michel

"Daniel.C" a écrit dans le message de news:

Bonsoir.
A tout hasard :
Selection.PasteSpecial Paste:=xlPasteAll
sauf si ce n'est pas cela que tu veux faire. Que représente Zone ?
A-t-elle la même taille que la zone copiée ?
Cordialement.
Daniel
"Michel MORICE" a écrit dans le message de news:
47ffe6f4$0$903$
Bonsoir ou bonjour à tous.

En VBA sur Excel 2000

Malgré l'aide en ligne et l'assistant aux syntaxes, je n'arrive pas à
faire fonctionner la copie d'une zone dans une feuille alors que tout me
paraît simple et conforme.
Je place dans le presse-papier une zone de 10 cellules par exemple.
Je selectionne une nouvelle cellule.
Au moment d'exécuter la ligne suivante, cela se plante:

Zone.PasteSpecial Paste:=xlPasteAll

Avec le message suivant:

La méthode PasteSpecial de la classe Range a échoué.

Ayant épuisé toutes mes cartouches, si quelqu'un pouvait éclairer ma
lenterne nocture.

Merci

Michel











Avatar
Michel MORICE
Je ne pense pas que le presse-papier soit vidé car si j'annule l'erreur et
que je fais "collé" manuellement, alors ma zone se déplace bien.

J'ai essayé de spécifier la feuiile comme ci-après:
Set Zone = Sheets(3).Range(Cells(Target.Row, y), Cells(Target.Row + xFin -
xDebut, y))

Cela ne change rien.
La feuille n'est pas non plus protégé.

Merci de votre aide

Michel

"Daniel.C" a écrit dans le message de news:

Si tu fais un copy manuel, quelle est la séquence d'exécution des macros ?
Il est vraisemblable que le presse-papiers est vidé par une macro.
Daniel
"Michel MORICE" a écrit dans le message de news:
48013967$0$875$
Bonsoir Daniel

Zone un bien un objet de type Range.
J'ai essayé la copie sur une cellule ou sur un range de même taille, le
résultat est le même.
J'ai aussi essayé Selection. PasteSpecial toujours la même erreur.

Je dois avoir un vrai problème de compréhension mais j'aimerais savoir où
il se situe.

Ci-après mon code complet, si vous avez une idée.

Dim EnCours As Boolean
Dim xDebut As Integer, xFin As Integer
Dim x As Integer, y As Integer, Couleur As Integer
Dim Zone As Range
'***********************************
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As
Boolean)
Dim Fin As Boolean
If Target.Interior.ColorIndex <> xlColorIndexNone Then
x = Target.Row: y = Target.Column: Couleur =
Target.Interior.ColorIndex
Fin = False
Do
If Cells(x - 1, y).Interior.ColorIndex = Couleur Then
x = x - 1
Else
xDebut = x
Fin = True
End If
Loop Until Fin
Fin = False
Do
If Cells(x + 1, y).Interior.ColorIndex = Couleur Then
x = x + 1
Else
xFin = x
Fin = True
End If
Loop Until Fin
Range(Cells(xDebut, y), Cells(xFin, y)).Cut
EnCours = True
End If
Cancel = True
End Sub
'**********************************
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If EnCours Then
Set Zone = Range(Cells(Target.Row, y), Cells(Target.Row + xFin -
xDebut, y))
Zone.Select
Selection.PasteSpecial Paste:=xlPasteAll '******* génère
l'erreur "La méthode PasteSpecial de la classe Range a échoué".
End If
End Sub

Merci

Michel

"Daniel.C" a écrit dans le message de news:

Bonsoir.
A tout hasard :
Selection.PasteSpecial Paste:=xlPasteAll
sauf si ce n'est pas cela que tu veux faire. Que représente Zone ?
A-t-elle la même taille que la zone copiée ?
Cordialement.
Daniel
"Michel MORICE" a écrit dans le message de news:
47ffe6f4$0$903$
Bonsoir ou bonjour à tous.

En VBA sur Excel 2000

Malgré l'aide en ligne et l'assistant aux syntaxes, je n'arrive pas à
faire fonctionner la copie d'une zone dans une feuille alors que tout
me paraît simple et conforme.
Je place dans le presse-papier une zone de 10 cellules par exemple.
Je selectionne une nouvelle cellule.
Au moment d'exécuter la ligne suivante, cela se plante:

Zone.PasteSpecial Paste:=xlPasteAll

Avec le message suivant:

La méthode PasteSpecial de la classe Range a échoué.

Ayant épuisé toutes mes cartouches, si quelqu'un pouvait éclairer ma
lenterne nocture.

Merci

Michel















Avatar
Daniel.C
Si tu fais un couper, tu ne peux pas faire derrière un collage spécial, mais
seulement un coller.
Daniel
"Michel MORICE" a écrit dans le message de news:
48022bd7$0$863$
Je ne pense pas que le presse-papier soit vidé car si j'annule l'erreur et
que je fais "collé" manuellement, alors ma zone se déplace bien.

J'ai essayé de spécifier la feuiile comme ci-après:
Set Zone = Sheets(3).Range(Cells(Target.Row, y), Cells(Target.Row + xFin -
xDebut, y))

Cela ne change rien.
La feuille n'est pas non plus protégé.

Merci de votre aide

Michel

"Daniel.C" a écrit dans le message de news:

Si tu fais un copy manuel, quelle est la séquence d'exécution des macros
?
Il est vraisemblable que le presse-papiers est vidé par une macro.
Daniel
"Michel MORICE" a écrit dans le message de news:
48013967$0$875$
Bonsoir Daniel

Zone un bien un objet de type Range.
J'ai essayé la copie sur une cellule ou sur un range de même taille, le
résultat est le même.
J'ai aussi essayé Selection. PasteSpecial toujours la même erreur.

Je dois avoir un vrai problème de compréhension mais j'aimerais savoir
où il se situe.

Ci-après mon code complet, si vous avez une idée.

Dim EnCours As Boolean
Dim xDebut As Integer, xFin As Integer
Dim x As Integer, y As Integer, Couleur As Integer
Dim Zone As Range
'***********************************
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As
Boolean)
Dim Fin As Boolean
If Target.Interior.ColorIndex <> xlColorIndexNone Then
x = Target.Row: y = Target.Column: Couleur =
Target.Interior.ColorIndex
Fin = False
Do
If Cells(x - 1, y).Interior.ColorIndex = Couleur Then
x = x - 1
Else
xDebut = x
Fin = True
End If
Loop Until Fin
Fin = False
Do
If Cells(x + 1, y).Interior.ColorIndex = Couleur Then
x = x + 1
Else
xFin = x
Fin = True
End If
Loop Until Fin
Range(Cells(xDebut, y), Cells(xFin, y)).Cut
EnCours = True
End If
Cancel = True
End Sub
'**********************************
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If EnCours Then
Set Zone = Range(Cells(Target.Row, y), Cells(Target.Row + xFin -
xDebut, y))
Zone.Select
Selection.PasteSpecial Paste:=xlPasteAll '******* génère
l'erreur "La méthode PasteSpecial de la classe Range a échoué".
End If
End Sub

Merci

Michel

"Daniel.C" a écrit dans le message de news:

Bonsoir.
A tout hasard :
Selection.PasteSpecial Paste:=xlPasteAll
sauf si ce n'est pas cela que tu veux faire. Que représente Zone ?
A-t-elle la même taille que la zone copiée ?
Cordialement.
Daniel
"Michel MORICE" a écrit dans le message de news:
47ffe6f4$0$903$
Bonsoir ou bonjour à tous.

En VBA sur Excel 2000

Malgré l'aide en ligne et l'assistant aux syntaxes, je n'arrive pas à
faire fonctionner la copie d'une zone dans une feuille alors que tout
me paraît simple et conforme.
Je place dans le presse-papier une zone de 10 cellules par exemple.
Je selectionne une nouvelle cellule.
Au moment d'exécuter la ligne suivante, cela se plante:

Zone.PasteSpecial Paste:=xlPasteAll

Avec le message suivant:

La méthode PasteSpecial de la classe Range a échoué.

Ayant épuisé toutes mes cartouches, si quelqu'un pouvait éclairer ma
lenterne nocture.

Merci

Michel



















Avatar
Frédéric Sigonneau
J'ai essayé de spécifier la feuiile comme ci-après:
Set Zone = Sheets(3).Range(Cells(Target.Row, y), Cells(Target.Row + xFin -
xDebut, y))


Désolé d'insister, d'autant que ton problème n'est peut-être pas là. Mais ta
qualification n'est pas suffisante : Cells également devrait faire référence à
une feuille précise pour qu'aucune ambiguïté (éventuelle) ne soit possible.
Par exemple :

With Sheets(3)
Set Zone=.Range(.Cells(Target.Row, y), _
.Cells(Target.Row + xFin - xDebut, y))
End With

Au cazou..

FS
---
Frédéric Sigonneau
http://frederic.sigonneau.free.fr

Je ne pense pas que le presse-papier soit vidé car si j'annule l'erreur et
que je fais "collé" manuellement, alors ma zone se déplace bien.

J'ai essayé de spécifier la feuiile comme ci-après:
Set Zone = Sheets(3).Range(Cells(Target.Row, y), Cells(Target.Row + xFin -
xDebut, y))

Cela ne change rien.
La feuille n'est pas non plus protégé.

Merci de votre aide

Michel

"Daniel.C" a écrit dans le message de news:

Si tu fais un copy manuel, quelle est la séquence d'exécution des macros ?
Il est vraisemblable que le presse-papiers est vidé par une macro.
Daniel
"Michel MORICE" a écrit dans le message de news:
48013967$0$875$
Bonsoir Daniel

Zone un bien un objet de type Range.
J'ai essayé la copie sur une cellule ou sur un range de même taille, le
résultat est le même.
J'ai aussi essayé Selection. PasteSpecial toujours la même erreur.

Je dois avoir un vrai problème de compréhension mais j'aimerais savoir où
il se situe.

Ci-après mon code complet, si vous avez une idée.

Dim EnCours As Boolean
Dim xDebut As Integer, xFin As Integer
Dim x As Integer, y As Integer, Couleur As Integer
Dim Zone As Range
'***********************************
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As
Boolean)
Dim Fin As Boolean
If Target.Interior.ColorIndex <> xlColorIndexNone Then
x = Target.Row: y = Target.Column: Couleur =
Target.Interior.ColorIndex
Fin = False
Do
If Cells(x - 1, y).Interior.ColorIndex = Couleur Then
x = x - 1
Else
xDebut = x
Fin = True
End If
Loop Until Fin
Fin = False
Do
If Cells(x + 1, y).Interior.ColorIndex = Couleur Then
x = x + 1
Else
xFin = x
Fin = True
End If
Loop Until Fin
Range(Cells(xDebut, y), Cells(xFin, y)).Cut
EnCours = True
End If
Cancel = True
End Sub
'**********************************
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If EnCours Then
Set Zone = Range(Cells(Target.Row, y), Cells(Target.Row + xFin -
xDebut, y))
Zone.Select
Selection.PasteSpecial Paste:=xlPasteAll '******* génère
l'erreur "La méthode PasteSpecial de la classe Range a échoué".
End If
End Sub

Merci

Michel

"Daniel.C" a écrit dans le message de news:

Bonsoir.
A tout hasard :
Selection.PasteSpecial Paste:=xlPasteAll
sauf si ce n'est pas cela que tu veux faire. Que représente Zone ?
A-t-elle la même taille que la zone copiée ?
Cordialement.
Daniel
"Michel MORICE" a écrit dans le message de news:
47ffe6f4$0$903$
Bonsoir ou bonjour à tous.

En VBA sur Excel 2000

Malgré l'aide en ligne et l'assistant aux syntaxes, je n'arrive pas à
faire fonctionner la copie d'une zone dans une feuille alors que tout
me paraît simple et conforme.
Je place dans le presse-papier une zone de 10 cellules par exemple.
Je selectionne une nouvelle cellule.
Au moment d'exécuter la ligne suivante, cela se plante:

Zone.PasteSpecial Paste:=xlPasteAll

Avec le message suivant:

La méthode PasteSpecial de la classe Range a échoué.

Ayant épuisé toutes mes cartouches, si quelqu'un pouvait éclairer ma
lenterne nocture.

Merci

Michel
















Avatar
MichDenis
Voici 4 procédures fonctionnelles qui peuvent t'aider.

Si tu veux utiliser la méthode "Cut" de l'objet "Range"
pour coller le presse papier par la suite sur une autre
plage de cellule tu devrais utiliser quelque chose comme suit :

'---------------------------------
Sub tets()
Range("A1:A10").Cut
With Range("C1")
.Select
' Sheets(.Parent.Name).Paste est équivalent à Sheets("NomFeuille").Paste
Sheets(.Parent.Name).Paste
End With
End Sub
'---------------------------------
Sub tets1()
Range("A1:A10").Cut
With Range("C1:C10")
.Select
Sheets(.Parent.Name).Paste
End With
End Sub
'---------------------------------

========================================== Pour utiliser la méthode PasteSpecial de l'objet "range"
cela fonctionne seulement si tu as utiliser "Copy" et non "Cut"

Si tu sélectionnes une plage de cellule et que tu appelles la commande
Couper du menu édition.... et que tu sélectionnes une cellule et que tu
tentes d'appeler la méthode "Collage spécial" du menu édition...cette
dernière est en grisée et n'est pas disponible. Si au lieu de la commande
couper tu as copier ta plage de cellules dans le presse papier alors là
tu auras droit au collage spécial. VBA n'est seulement le reflet de ce que
tu peux observer comme tu dis manuellement.
'--------------------------------
Sub tets2()
Range("A1:A10").Copy
With Range("C1:C10")
.PasteSpecial Paste:=xlPasteAll
End With
End Sub
'---------------------------------
Sub tets3()
Range("A1:A10").Copy
With Range("C1")
.PasteSpecial Paste:=xlPasteAll
End With
End Sub
'---------------------------------





"Michel MORICE" a écrit dans le message de news:
48022bd7$0$863$
Je ne pense pas que le presse-papier soit vidé car si j'annule l'erreur et
que je fais "collé" manuellement, alors ma zone se déplace bien.

J'ai essayé de spécifier la feuiile comme ci-après:
Set Zone = Sheets(3).Range(Cells(Target.Row, y), Cells(Target.Row + xFin -
xDebut, y))

Cela ne change rien.
La feuille n'est pas non plus protégé.

Merci de votre aide

Michel

"Daniel.C" a écrit dans le message de news:

Si tu fais un copy manuel, quelle est la séquence d'exécution des macros ?
Il est vraisemblable que le presse-papiers est vidé par une macro.
Daniel
"Michel MORICE" a écrit dans le message de news:
48013967$0$875$
Bonsoir Daniel

Zone un bien un objet de type Range.
J'ai essayé la copie sur une cellule ou sur un range de même taille, le
résultat est le même.
J'ai aussi essayé Selection. PasteSpecial toujours la même erreur.

Je dois avoir un vrai problème de compréhension mais j'aimerais savoir où
il se situe.

Ci-après mon code complet, si vous avez une idée.

Dim EnCours As Boolean
Dim xDebut As Integer, xFin As Integer
Dim x As Integer, y As Integer, Couleur As Integer
Dim Zone As Range
'***********************************
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As
Boolean)
Dim Fin As Boolean
If Target.Interior.ColorIndex <> xlColorIndexNone Then
x = Target.Row: y = Target.Column: Couleur >> Target.Interior.ColorIndex
Fin = False
Do
If Cells(x - 1, y).Interior.ColorIndex = Couleur Then
x = x - 1
Else
xDebut = x
Fin = True
End If
Loop Until Fin
Fin = False
Do
If Cells(x + 1, y).Interior.ColorIndex = Couleur Then
x = x + 1
Else
xFin = x
Fin = True
End If
Loop Until Fin
Range(Cells(xDebut, y), Cells(xFin, y)).Cut
EnCours = True
End If
Cancel = True
End Sub
'**********************************
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If EnCours Then
Set Zone = Range(Cells(Target.Row, y), Cells(Target.Row + xFin -
xDebut, y))
Zone.Select
Selection.PasteSpecial Paste:=xlPasteAll '******* génère
l'erreur "La méthode PasteSpecial de la classe Range a échoué".
End If
End Sub

Merci

Michel

"Daniel.C" a écrit dans le message de news:

Bonsoir.
A tout hasard :
Selection.PasteSpecial Paste:=xlPasteAll
sauf si ce n'est pas cela que tu veux faire. Que représente Zone ?
A-t-elle la même taille que la zone copiée ?
Cordialement.
Daniel
"Michel MORICE" a écrit dans le message de news:
47ffe6f4$0$903$
Bonsoir ou bonjour à tous.

En VBA sur Excel 2000

Malgré l'aide en ligne et l'assistant aux syntaxes, je n'arrive pas à
faire fonctionner la copie d'une zone dans une feuille alors que tout
me paraît simple et conforme.
Je place dans le presse-papier une zone de 10 cellules par exemple.
Je selectionne une nouvelle cellule.
Au moment d'exécuter la ligne suivante, cela se plante:

Zone.PasteSpecial Paste:=xlPasteAll

Avec le message suivant:

La méthode PasteSpecial de la classe Range a échoué.

Ayant épuisé toutes mes cartouches, si quelqu'un pouvait éclairer ma
lenterne nocture.

Merci

Michel















Avatar
MichDenis
| Set Zone = Sheets(3).Range(Cells(Target.Row, y), Cells(Target.Row + xFin - xDebut, y))

| Désolé d'insister, d'autant que ton problème n'est peut-être pas là. Mais ta
| qualification n'est pas suffisante : Cells également devrait faire référence à
| une feuille précise pour qu'aucune ambiguïté (éventuelle) ne soit possible.
:

| With Sheets(3)
| Set Zone=.Range(.Cells(Target.Row, y), _
| .Cells(Target.Row + xFin - xDebut, y))
| End With

Bonjour Frédéric,

Je conçois que la syntaxe utiliser par le demandeur n'est pas la meilleure et que
dans certaines circonstances, elle peut être problématique.... je préfère de loin
ta syntaxe. Cependant, comme il utilise l'objet "Target" et un événement de
la feuille, on peut présumer tous les objets "range" de sa ligne de commande
appartient à la dite feuille....mais même dans ce cas, ça ne fonctionnera pas.
Il y a méprise entre les commandes "Copy" "Cut" "Paste" et "PasteSpecial"
1 2