OVH Cloud OVH Cloud

Collage spécial avec VBA

4 réponses
Avatar
Yadutaf
Bonjour à tous,

J'ai créé une procédure permettant d'importer des données d'un fichier Excel vers un
autre. Elle se présente ainsi :

nom = Split(monFichierData, "\")(UBound(Split(monFichierData, "\")))
Windows(nom).Activate
Application.Goto Reference:="Effectifs"
Selection.Copy
Range("A1").Select
ThisWorkbook.Activate
Sheets("Import").Select
Range("H1").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False

Lorsque cette procédure est lancée à partir du module dans lequel elle se trouve,
elle fonctionne parfaitement. Par contre j'ai créé sur une feuille "d'Accueil" un
bouton de commande pour la lancer et ça ne marche plus. En fait, dès que j'attache la
procédure à une feuille de calcul, que se soit la feuille d'accueil ou la feuille de
destination des données, l'instruction de collage spéciale retourne une erreur
d'exécution 1004. Je ne peux donc pas utiliser mon bouton de commande.

Merci pour votre aide.

4 réponses

Avatar
papou
Bonjour
Si ton bouton est un bouton de la boîte à outils contrôles :
Sur le bouton en mode création :
Clic droit, Propriété et tu affectes la valeur FALSE à la propriété
TakeFocusOnCLick

Cordialement
Pascal

"Yadutaf" a écrit dans le message de
news:cim4p6$ksi$
Bonjour à tous,

J'ai créé une procédure permettant d'importer des données d'un fichier
Excel vers un

autre. Elle se présente ainsi :

nom = Split(monFichierData, "")(UBound(Split(monFichierData, "")))
Windows(nom).Activate
Application.Goto Reference:="Effectifs"
Selection.Copy
Range("A1").Select
ThisWorkbook.Activate
Sheets("Import").Select
Range("H1").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone,
SkipBlanks:= _

False, Transpose:úlse

Lorsque cette procédure est lancée à partir du module dans lequel elle se
trouve,

elle fonctionne parfaitement. Par contre j'ai créé sur une feuille
"d'Accueil" un

bouton de commande pour la lancer et ça ne marche plus. En fait, dès que
j'attache la

procédure à une feuille de calcul, que se soit la feuille d'accueil ou la
feuille de

destination des données, l'instruction de collage spéciale retourne une
erreur

d'exécution 1004. Je ne peux donc pas utiliser mon bouton de commande.

Merci pour votre aide.


Avatar
Gloops
Bonjour,

Je suggère que la macro commence par sélectionner
explicitement la feuille source, par
ActiveWorkBook.WorkSheets(NomFeuille).Activate

De cette manière, avant de la lancer, on peut avoir un
bouton qui appelle une autre application, revient vers
Excel, passe par un autre classeur, pas de souci, une fois
que la macro est lancée, elle sélectionne bien ce qu'il
faut.

Donc l'ordre des opérations, c'est
Application.Activate
WorkBook.Activate
WorkSheet.Activate
Range.Select

En précisant un chouïa plus que je ne viens de le faire,
bien entendu, de quel classeur, quelle feuille et quel
champ il s'agit, sinon j'imagine qu'on se fait jeter.

-----Message d'origine-----
Bonjour à tous,

J'ai créé une procédure permettant d'importer des données
d'un fichier Excel vers un

autre. Elle se présente ainsi :

nom = Split(monFichierData, "")(UBound(Split
(monFichierData, "")))

Windows(nom).Activate
Application.Goto Reference:="Effectifs"
Selection.Copy
Range("A1").Select
ThisWorkbook.Activate
Sheets("Import").Select
Range("H1").Select
Selection.PasteSpecial Paste:=xlValues,
Operation:=xlNone, SkipBlanks:= _

False, Transpose:úlse

Lorsque cette procédure est lancée à partir du module
dans lequel elle se trouve,

elle fonctionne parfaitement. Par contre j'ai créé sur
une feuille "d'Accueil" un

bouton de commande pour la lancer et ça ne marche plus.
En fait, dès que j'attache la

procédure à une feuille de calcul, que se soit la feuille
d'accueil ou la feuille de

destination des données, l'instruction de collage
spéciale retourne une erreur

d'exécution 1004. Je ne peux donc pas utiliser mon bouton
de commande.


Merci pour votre aide.
.



Avatar
Gloops
Ah je réponds et j'en oublie en route.
A tout hasard, je précise que Copy est une méthode du
champ, alors que Paste est une méthode de la feuille de
destination. L'inverse risque de se solder par un message
d'erreur (à moins que les dernières versions soient plus
souples à cet égard).

-----Message d'origine-----
Bonjour à tous,

J'ai créé une procédure permettant d'importer des données
d'un fichier Excel vers un

autre. Elle se présente ainsi :

nom = Split(monFichierData, "")(UBound(Split
(monFichierData, "")))

Windows(nom).Activate
Application.Goto Reference:="Effectifs"
Selection.Copy
Range("A1").Select
ThisWorkbook.Activate
Sheets("Import").Select
Range("H1").Select
Selection.PasteSpecial Paste:=xlValues,
Operation:=xlNone, SkipBlanks:= _

False, Transpose:úlse

Lorsque cette procédure est lancée à partir du module
dans lequel elle se trouve,

elle fonctionne parfaitement. Par contre j'ai créé sur
une feuille "d'Accueil" un

bouton de commande pour la lancer et ça ne marche plus.
En fait, dès que j'attache la

procédure à une feuille de calcul, que se soit la feuille
d'accueil ou la feuille de

destination des données, l'instruction de collage
spéciale retourne une erreur

d'exécution 1004. Je ne peux donc pas utiliser mon bouton
de commande.


Merci pour votre aide.
.



Avatar
Yadutaf
Merci pour vos réponses à tous les deux.
Gloops m'a mis sur la bonne voie !