Niouzes.org  

Précédent   Niouzes.org > Forum > Newsgroup microsoft.public.fr.* 1 Forum > Newsgroup microsoft.public.fr.excel
S'inscrire FAQ Membres Calendrier Recherche Messages du jour Marquer les forums comme lus



Réponse

 

LinkBack Outils de la discussion Modes d'affichage
  #1 (permalink)  
Vieux 11/04/2008, 23h32
Michel MORICE
 
Messages: n/a
Par défaut PasteSpecial ??

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


Réponse avec citation
Alt Today
Advertising
Google Adsense
 
This advertising will not be shown
in this way to registered members.
Register your free account today
and become a member on
Niouzes.org
Standard Sponsored Links

  #2 (permalink)  
Vieux 11/04/2008, 23h41
Daniel.C
 
Messages: n/a
Par défaut Re: PasteSpecial ??

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" <mor.mic***wanadoo.fr> a écrit dans le message de news:
47ffe6f4$0$903$ba4acef3***news.orange.fr...
> 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
>



Réponse avec citation
  #3 (permalink)  
Vieux 12/04/2008, 23h36
Michel MORICE
 
Messages: n/a
Par défaut Re: PasteSpecial ??

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" <dZZZcolardelle***free.fr> a écrit dans le message de news:
uA5DGVCnIHA.1680***TK2MSFTNGP06.phx.gbl...
> 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" <mor.mic***wanadoo.fr> a écrit dans le message de news:
> 47ffe6f4$0$903$ba4acef3***news.orange.fr...
>> 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
>>

>
>



Réponse avec citation
  #4 (permalink)  
Vieux 13/04/2008, 09h31
Daniel.C
 
Messages: n/a
Par défaut Re: PasteSpecial ??

Ou est l'instruction Copy ?
Daniel
"Michel MORICE" <mor.mic***wanadoo.fr> a écrit dans le message de news:
48013967$0$875$ba4acef3***news.orange.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" <dZZZcolardelle***free.fr> a écrit dans le message de news:
> uA5DGVCnIHA.1680***TK2MSFTNGP06.phx.gbl...
>> 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" <mor.mic***wanadoo.fr> a écrit dans le message de news:
>> 47ffe6f4$0$903$ba4acef3***news.orange.fr...
>>> 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
>>>

>>
>>

>
>



Réponse avec citation
  #5 (permalink)  
Vieux 13/04/2008, 09h45
Daniel.C
 
Messages: n/a
Par défaut Re: PasteSpecial ??

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" <mor.mic***wanadoo.fr> a écrit dans le message de news:
48013967$0$875$ba4acef3***news.orange.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" <dZZZcolardelle***free.fr> a écrit dans le message de news:
> uA5DGVCnIHA.1680***TK2MSFTNGP06.phx.gbl...
>> 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" <mor.mic***wanadoo.fr> a écrit dans le message de news:
>> 47ffe6f4$0$903$ba4acef3***news.orange.fr...
>>> 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
>>>

>>
>>

>
>



Réponse avec citation
  #6 (permalink)  
Vieux 13/04/2008, 16h50
Michel MORICE
 
Messages: n/a
Par défaut Re: PasteSpecial ??

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" <dZZZcolardelle***free.fr> a écrit dans le message de news:
OYI0CLUnIHA.536***TK2MSFTNGP06.phx.gbl...
> 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" <mor.mic***wanadoo.fr> a écrit dans le message de news:
> 48013967$0$875$ba4acef3***news.orange.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" <dZZZcolardelle***free.fr> a écrit dans le message de news:
>> uA5DGVCnIHA.1680***TK2MSFTNGP06.phx.gbl...
>>> 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" <mor.mic***wanadoo.fr> a écrit dans le message de news:
>>> 47ffe6f4$0$903$ba4acef3***news.orange.fr...
>>>> 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
>>>>
>>>
>>>

>>
>>

>
>



Réponse avec citation
  #7 (permalink)  
Vieux 13/04/2008, 17h51
Daniel.C
 
Messages: n/a
Par défaut Re: PasteSpecial ??

Si tu fais un couper, tu ne peux pas faire derrière un collage spécial, mais
seulement un coller.
Daniel
"Michel MORICE" <mor.mic***wanadoo.fr> a écrit dans le message de news:
48022bd7$0$863$ba4acef3***news.orange.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" <dZZZcolardelle***free.fr> a écrit dans le message de news:
> OYI0CLUnIHA.536***TK2MSFTNGP06.phx.gbl...
>> 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" <mor.mic***wanadoo.fr> a écrit dans le message de news:
>> 48013967$0$875$ba4acef3***news.orange.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" <dZZZcolardelle***free.fr> a écrit dans le message de news:
>>> uA5DGVCnIHA.1680***TK2MSFTNGP06.phx.gbl...
>>>> 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" <mor.mic***wanadoo.fr> a écrit dans le message de news:
>>>> 47ffe6f4$0$903$ba4acef3***news.orange.fr...
>>>>> 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
>>>>>
>>>>
>>>>
>>>
>>>

>>
>>

>
>



Réponse avec citation
  #8 (permalink)  
Vieux 13/04/2008, 18h27
MichDenis
 
Messages: n/a
Par défaut Re: PasteSpecial ??

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" <mor.mic***wanadoo.fr> a écrit dans le message de news:
48022bd7$0$863$ba4acef3***news.orange.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" <dZZZcolardelle***free.fr> a écrit dans le message de news:
OYI0CLUnIHA.536***TK2MSFTNGP06.phx.gbl...
> 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" <mor.mic***wanadoo.fr> a écrit dans le message de news:
> 48013967$0$875$ba4acef3***news.orange.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" <dZZZcolardelle***free.fr> a écrit dans le message de news:
>> uA5DGVCnIHA.1680***TK2MSFTNGP06.phx.gbl...
>>> 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" <mor.mic***wanadoo.fr> a écrit dans le message de news:
>>> 47ffe6f4$0$903$ba4acef3***news.orange.fr...
>>>> 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
>>>>
>>>
>>>

>>
>>

>
>




Réponse avec citation
  #9 (permalink)  
Vieux 13/04/2008, 18h33
MichDenis
 
Messages: n/a
Par défaut Re: PasteSpecial ??


| 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"


Réponse avec citation
  #10 (permalink)  
Vieux 13/04/2008, 20h08
Michel MORICE
 
Messages: n/a
Par défaut Re: PasteSpecial ??

Suite à vos conseils j'ai écrit ma routine ainsi:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If EnCours Then
With Range(Cells(Target.Row, y), Cells(Target.Row + xFin - xDebut,
y))
Sheets(.Parent.Name).Paste '******* génère l'erreur "La méthode
Paste de la classe WorkSheet a échoué".
End With
End If
End Sub

Cela se plante toujours mais lorsque j'arrête le débogueur le cut et la
replacement se sont bien exécutés.

Merci de votre patience et de vos aides

Michel


"MichDenis" <michdenis***hotmail.com> a écrit dans le message de news:
%23t$1buYnIHA.4196***TK2MSFTNGP04.phx.gbl...
> 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" <mor.mic***wanadoo.fr> a écrit dans le message de news:
> 48022bd7$0$863$ba4acef3***news.orange.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" <dZZZcolardelle***free.fr> a écrit dans le message de news:
> OYI0CLUnIHA.536***TK2MSFTNGP06.phx.gbl...
>> 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" <mor.mic***wanadoo.fr> a écrit dans le message de news:
>> 48013967$0$875$ba4acef3***news.orange.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" <dZZZcolardelle***free.fr> a écrit dans le message de news:
>>> uA5DGVCnIHA.1680***TK2MSFTNGP06.phx.gbl...
>>>> 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" <mor.mic***wanadoo.fr> a écrit dans le message de news:
>>>> 47ffe6f4$0$903$ba4acef3***news.orange.fr...
>>>>> 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
>>>>>
>>>>
>>>>
>>>
>>>

>>
>>

>
>
>



Réponse avec citation
  #11 (permalink)  
Vieux 13/04/2008, 20h16
Michel MORICE
 
Messages: n/a
Par défaut Re: PasteSpecial ??

Finalement en recherchant dans l'aide en ligne je viens de trouver une façon
de faire qui va bien:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If EnCours Then
ActiveSheet.Paste Destination:=Range(Cells(Target.Row, y),
Cells(Target.Row + xFin - xDebut, y))
EnCours = False
End If
End Sub

Je vous remercie de m'avoir aider.
Vos conseils sont toujours enrichissants.

Bonne soirée à tous

Michel

"MichDenis" <michdenis***hotmail.com> a écrit dans le message de news:
%23t$1buYnIHA.4196***TK2MSFTNGP04.phx.gbl...
> 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" <mor.mic***wanadoo.fr> a écrit dans le message de news:
> 48022bd7$0$863$ba4acef3***news.orange.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" <dZZZcolardelle***free.fr> a écrit dans le message de news:
> OYI0CLUnIHA.536***TK2MSFTNGP06.phx.gbl...
>> 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" <mor.mic***wanadoo.fr> a écrit dans le message de news:
>> 48013967$0$875$ba4acef3***news.orange.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" <dZZZcolardelle***free.fr> a écrit dans le message de news:
>>> uA5DGVCnIHA.1680***TK2MSFTNGP06.phx.gbl...
>>>> 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" <mor.mic***wanadoo.fr> a écrit dans le message de news:
>>>> 47ffe6f4$0$903$ba4acef3***news.orange.fr...
>>>>> 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
>>>>>
>>>>
>>>>
>>>
>>>

>>
>>

>
>
>



Réponse avec citation
 
Réponse
Tags:



Outils de la discussion
Modes d'affichage

Règles de messages
Vous pouvez ouvrir de nouvelles discussions : nonoui
Vous pouvez envoyer des réponses : nonoui
Vous pouvez insérer des pièces jointes : nonoui
Vous pouvez modifier vos messages : nonoui

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui



Fuseau horaire GMT. Il est actuellement 07h59.

Italiano - German - English - Español


Édité par : vBulletin® version 3.6.8
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO 3.1.0 © 2007, Crawlability, Inc. Tous droits réservés.
Version française #13 par l'association vBulletin francophone


Politique - Droit - Philosophie - Football - Medicine - Française - Bricolage - Photo - Mac Os X - Divers - Physique - Jardinage
Mecanique - Moto - Photographie - Rail - Route - Aviation - Cinema - Linux - Psychanalyse - Finance - Enigmes - Rugby
Environnement - Histoire - Programmes TV - Education - Travail - Voyages - Windows - Immobilier - Cuisine
Windows XP - Excel - Word - Outlook - Access - Internet Explorer - Office - Vista

Page generated in 0,62495 seconds with 10 queries