VBA PasteSpecial qui ne fonctionne pas

Maxitos

XLDnaute Nouveau
Bonjour tout le monde !

J'ai un problème qui me turlupine, et je pense que vos regards éclairés sauront me dire ce qui ne va pas.

Le code suivant fonctionne :

Code:
dim adresse as string
Workbooks(classeur).Sheets(feuille).Activate

Range("A1").Value = 1000
Range("A1").Copy

adresse = Range("plagenommée").Address

Range(adresse).Parent.Activate
Range(adresse).Activate

ActiveSheet.Paste

Le même mais avec un PasteSpecial ne fonctionne pas (1004 : Erreur definie par l'application ou par l'objet) :

Code:
dim adresse as string
Workbooks(classeur).Sheets(feuille).Activate

Range("A1").Value = 1000
Range("A1").Copy

adresse = Range("plagenommée").Address

Range(adresse).Parent.Activate
Range(adresse).Activate

'erreur ici :
ActiveSheet.PasteSpecial Paste:=xlPasteAll, Operation:=xlMultiply, _
        SkipBlanks:=False, Transpose:=False

Quelqu'un aurait une idée d'où mon problème pourrait venir ?

Merci d'avance ;)

Max
 
Dernière édition:

francedemo

XLDnaute Occasionnel
Re : VBA PasteSpecial qui ne fonctionne pas

je reviens à ce que je disais :
"adresse" est un range, pas une suite de valeurs, tu multiplies donc des choux et des carottes...(à par pour la soupe...)
à+

je pense à un truc, tu as essayé:

Sheet("NomdetaFeuille").Range("A1").Copy
sheet("h94").Range(adresse).Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlMultiply, _
SkipBlanks:=False, Transpose:=False
???
 
Dernière édition:

Maxitos

XLDnaute Nouveau
Re : VBA PasteSpecial qui ne fonctionne pas

je reviens à ce que je disais :
"adresse" est un range, pas une suite de valeurs, tu multiplies donc des choux et des carottes...(à par pour la soupe...)
à+

je pense à un truc, tu as essayé:

Sheet("NomdetaFeuille").Range("A1").Copy
sheet("h94").Range(adresse).Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlMultiply, _
SkipBlanks:=False, Transpose:=False
???

Oui C'est grosso modo le message que j'ai posté juste avant que tu ne poste :) , à la fin de la page 1 du fil .
 

francedemo

XLDnaute Occasionnel
Re : VBA PasteSpecial qui ne fonctionne pas

chez moi le code:

Code:
Sub Macro7()
'
    Range("V155").Copy
    Range("S158:S172").Select
    Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlMultiply, _
        SkipBlanks:=False, Transpose:=False
End Sub

fonctionne

c'est juste sur la même feuille
à adapter avec plusieurs feuilles
à+

bon, j'ai essayé

Code:
Sub Macro7()
'
    Range("V155").Copy
    Sheets("xxx").Activate
    Range("S10:S20").Select
    Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlMultiply, _
        SkipBlanks:=False, Transpose:=False
End Sub
et chez moi, ça fonctionne...
 
Dernière édition:

Maxitos

XLDnaute Nouveau
Re : VBA PasteSpecial qui ne fonctionne pas

Oui mais faire un PasteSpecial en soi sur un nouveau classeur je peux le faire et ça fonctionne très bien.

Le mystère est : Quelles peuvent êtres les raisons pour que ça ne fonctionne pas , alors qu'on fait référence aux bonnes plages etc.. ?
 

MJ13

XLDnaute Barbatruc
Re : VBA PasteSpecial qui ne fonctionne pas

Re , Bonjour Tototiti, Ayaflo

Essaye peu-être:

Code:
Sub test()
Range("A1").Value = 1000
Range("A1").Copy
Sheets("Feuil2").Activate
Range("A3:A543").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlMultiply, SkipBlanks _
        :=False, Transpose:=False
End Sub
 

tototiti2008

XLDnaute Barbatruc
Re : VBA PasteSpecial qui ne fonctionne pas

Re,

Ben moi je viens de faire tourner ça chez moi sans soucis...

Code:
Sub a()
Dim adresse As String
classeur = "Classeur2.xlsx"
feuille = "Feuil1"
Workbooks(classeur).Sheets(feuille).Activate

Range("A1").Value = 1000
Range("A1").Copy
Sheets("feuil2").Activate
Range("Q3:Q543").Select

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlMultiply, SkipBlanks _
        :=False, Transpose:=False
End Sub
 

Maxitos

XLDnaute Nouveau
Re : VBA PasteSpecial qui ne fonctionne pas

MJ13,

Ton code va me remplacer toutes mes cellules par 1000 et après les multiplier par 1000 ? Je ne comprends pas l'intérêt :confused:

tototiti2008,

Oui mais moi aussi si je fais un nouveau classeur ça fonctionne. Mon problème c'est que j'arrive pas à diagnostiquer pourquoi ça ne fonctionne pas dans CE classeur, avec CES données, qui sont évidemment confidentiels ...
 

tototiti2008

XLDnaute Barbatruc
Re : VBA PasteSpecial qui ne fonctionne pas

Re,

D'accord, alors je n'ai pas d'idées...
Juste pour dire, tu as l'air d'avoir multiplié les fils sur le sujet, pas trop apprécié sur le forum
Essaye de rester sur un fil pour un problème particulier
 

Maxitos

XLDnaute Nouveau
Re : VBA PasteSpecial qui ne fonctionne pas

tototiti2008,

Chaque fil m'a permis de répondre à une question précise :
- Comment selectionner une plage nommée en VBA
- Comment utiliser le contenu d'une cellule pour en faire une Range
- Et enfin mon problème de PasteSpecial.

Une question par fil, ça évite les fils "fourre-tout"

Voilà, non pas que j'ai à me justifier mais je préfère être clair.

Merci quand même ;)

Max
 

MJ13

XLDnaute Barbatruc
Re : VBA PasteSpecial qui ne fonctionne pas

Re

Il est sur que sans fichier depuis le début et sans une explication cohérente du problème :confused:.

En manuel ça fonctionne bien. Et justement c pour en faire des nombres que je multiplie par un scalaire.

Déjà, la j'aurais du mes dire: "Si j'avais su, je ne serais pas venu".
 

Maxitos

XLDnaute Nouveau
Re : VBA PasteSpecial qui ne fonctionne pas

Globalement, pour etre "coherent" la question serait :
"quelles peuvent etre les raisons pour qu'un PasteSpecial ne fonctionne pas en macro mais qu'il fonctionne en manuel?" ou encore " pourquoi un paste normal fonctionne et pas un pastespecial avec les memes parametres ?
Maintenant MJ13 ce n'etait pas un MP donc personne ne t'obligeait à repondre sans lire le fil...


Max
 

MichD

XLDnaute Impliqué
Re : VBA PasteSpecial qui ne fonctionne pas

Bonjour,


Voici un moyen de contournement.

Cette exemple utilise la cellule F1 de la Feuil1 pour introduire la valeur 1
et fait un copie de la cellule A1 sur la plage de cellule G2:G7 de la Feuil2
avec l'opération "Multiplier". Selon les besoins, on peut modifier la procédure
un peu!

VB:
Sub TEST()
Dim NFeuille As String
Application.ScreenUpdating = False
NFeuille = ActiveSheet.Name
With Worksheets("Feuil1")
    .Activate
    With .Range("F3")
        .Value = 1
        .Copy
    End With
End With
With Worksheets("Feuil2")
    .Activate
    .Range("g2:g7").Select
    SendKeys "{Down 2}" & "{TAB}" & "{Down 3}" & "~"
    Application.Dialogs(xlDialogPasteSpecial).Show
    .Range("G2").Select
End With
Worksheets("Feuil1").Range("F3") = 1
Application.CutCopyMode = False
Worksheets(NFeuille).Select
Application.ScreenUpdating = True
End Sub
 

Misange

XLDnaute Barbatruc
Re : VBA PasteSpecial qui ne fonctionne pas

Bonjour
pour ma part, ceci fonctionne parfaitement chez moi
Code:
Sub test3()

With Sheets("feuil1")
.Range("A1").Value = 1000
.Range("A1").Copy
End With
With Sheets("feuil2")
.Activate
.Range("maplage").Select

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlMultiply, SkipBlanks _
        :=False, Transpose:=False
End With
End Sub

En tous cas, il ne faut certainement pas prendre l'adresse du range pour faire l'opération que tu souhaites.
Je suis 100% d'ac avec Tototiti et avec Francedemo sur ce point (et d'autres !).
range("maplage").address renvoie ... l'adresse de la plage mais pas son contenu. Tu demandes donc à excel de multiplier 1 rue de la paix par 12 ce qu'excel ne sait évidemment pas faire.
en mettant= range("maplage").value ou récupères les valeurs qui sont contenues dans la plage et ce sont elles que tu multiplies.
.value étant la propriété par défaut d'un range tu peux ne pas le mettre.

Tu es nouveau sur ce forum, c'est une assez bonne idée de prendre en compte les remarques de quelqu'un qui y a posté plus de 10000 messages... Et respecter les habitudes d'un forum quand on y arrive maximise les chances d'obtenir des réponses, pour la question en cours et celles à venir éventuellement par la suite.
 
Dernière édition:

Discussions similaires

Réponses
2
Affichages
117

Statistiques des forums

Discussions
312 214
Messages
2 086 311
Membres
103 175
dernier inscrit
abcc