ActiveSheet.paste

Anonyme
2011-01-09T16:39:40+00:00

Bonjour

Je recupère des données numérique directement en les sélectionant et copiant sur IE8.

Je les recopie sur excel(V2000) en les selectionnant par la souris, puis bouton droit puis copier, retour sur Excel et collage via le bouton coller (ou ctrl+V). Tout va bien.

J'ai essayé d'automatiser cette action en créant une macro car il y a quelques petits règlages à faire en plus. Mais Activesheet.paste me créé des erreurs dans les chiffres. Alors que ctrl+v au clavier fonctionne impec.

Je pensais que ActiveSheet paste correspondait exactement au bouton coller, car c'est ce que me donne l'enregistreur de macros, mais ce n'est pas le cas.

merci d'avance

Microsoft 365 et Office | Excel | Pour la maison | Windows

Question verrouillée. Cette question a été migrée à partir de la Communauté Support Microsoft. Vous pouvez voter pour indiquer si elle est utile, mais vous ne pouvez pas ajouter de commentaires ou de réponses ni suivre la question.

0 commentaires Aucun commentaire
Réponse acceptée par l’auteur de la question
Anonyme
2011-01-23T17:53:06+00:00

A ) J'aimerais bien savoir ce que tu lui reproches à cette macro.

    Si le presse-papier n'est pas vide, tu sélectionnes la cellule où doit

     débuter la copie et tu appelles la macro...et ça fonctionne !

B ) Si tu tiens à la commande Sendkeys, voilà comment procéder :

Dans un module standard, tu copies cette procédure. Tu dois lui

donner un raccourci clavier en utilisant la fenêtre de la liste des

macros (alt + F8) / options.

Pour que cela fonctionne, tu dois l'appeler en utilisant le raccourci

clavier que tu lui as associé.

'--------------------------------------

Sub Collage_Special()

ActiveCell.Select

SendKeys "%e" & "v" & "{TAB 4}" & "{ENTER}"

Application.CommandBars.FindControl(ID:=755).Execute

End Sub

'--------------------------------------

Tu peux associer un raccourci clavier automatiquement lorsque

tu ouvres le classeur. Dans le ThisWorkbook, tu copies :

'----------------------------------------

Private Sub Workbook_Open()

Call Raccourci_Collage_Special

End Sub

'----------------------------------------

'Dans un module standard :

'------------------------------------------

Sub Raccourci_Collage_Special()

Application.MacroOptions "Raccourci_Collage_Special", , , , True, "M"

End Sub

'------------------------------------------

Et pour copier, tu utilises les touches "Maj + Ctrl + m"

ça fonctionne avec toutes les versions d'Excel (français)

en anglais, la séquence des lettres dans la commande "Sendkeys"

est différente.

MichD


Cette réponse a-t-elle été utile ?

0 commentaires Aucun commentaire
Réponse acceptée par l’auteur de la question
Anonyme
2011-01-18T14:48:53+00:00

Bonjour,

J'ai roulé ce petit test qui consiste à formater les cellules devant

recevoir les données avant que les données soient copiées.

Dans la feuil1, les données source sont en B5:B9

J'applique un format de cellule à la plage réceptrice : B22:B27

et je copie les données en utilisant la méthode "Paste" de la feuil1

et pour finir afin d'afficher le contenu des cellules à droite, j'inclus

cette ligne de code :  .Range("B22:B27").Replace ",", "."

Et le résultat est au rendez-vous.

Conclusion : applique le format de cellule à la plage de cellules devant

recevoir les données + la dernière ligne de code...

'------------------------------------

Sub test()

With Feuil1

    .Select

    .Range("B22:B27").NumberFormat = "# ##0.00#"

    .Range("B4:B9").Copy

    .Range("B22:B27").Item(1, 1).Select

    .Paste

    .Range("B22:B27").Replace ",", "."

End With

End Sub

'------------------------------------

MichD


"milloche" a écrit dans le message de groupe de discussion : *** Adresse électronique supprimée pour cause de confidentialité ***...

Une idée bête !

Au lieu de ActiveSheet.Paste, n'y aurait-il pas une commande VBA qui dirait

Application.Run"Le bouton coller d'excel"

Ne rigole pas, on sait jamais !


Milloche

Cette réponse a-t-elle été utile ?

0 commentaires Aucun commentaire

25 réponses supplémentaires

  1. Anonyme
    2011-01-24T22:16:26+00:00

    Merci pour toutes ces explications que je vais conserver au cas ou.

    Mon problème était le cas précis que je t'avais exposé. Non pas quelque chose d'universel. Je pensais être clair. Seulement tu n'avais pas accès à ces données que je copiais (mon pressepapier). C'est pourquoi je me demande sur quelles bases tu me répondais. Mais pour moi le problème est résolu.

    A une prochaine fois sur ce nouveau forum ou je suis un peu perturbé, je préférais l'ancien !

    Cordialement


    Milloche

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  2. Anonyme
    2011-01-24T19:45:01+00:00

    | J'ai bien fait d'insister car au 1er essai, BINGO, j'obtiens

    | enfin exactement ce que me donnait avant "CTRL+V"

    | Et pas de raccourci clavier etc. J'ai simplement dans ma

    | macro "mise à jour" remplacé "ActiveSheet.Paste"

    | par tes 2 lignes de code.

    ** Ce que tu énonces est vrai seulement si tu as fait un "copier"

             sur des données qui sont à l'extérieur d'Excel et que tu tentes

             de les "coller" dans une feuille de calcul.

    ** Si tu fais un "copier" d'une plage de cellules vers un "coller"

             dans une autre plage de cellules, ton approche devrait être

             déficiente... c'est pour cela que j'ai spécifié qu'il fallait créer

             un raccourci clavier pour exécuter cette macro pour tenir

             compte des diverses origines du "coller".

    ** Autre détail, si ton "copier" est fait à l'extérieur d'Excel, tu

             conserves la possibilité de faire un "Coller" de ces données

             jusqu'au moment où tu "copies" autre chose dans le presse-papier.

             Ce n'est pas le cas si tes données proviennent d'une plage de cellules

             Par exemple, dès que tu tapes = dans une cellule, l'ancienne valeur

             émanant d'une plage de cellules n'est plus valide, mais le demeure

             si le "copier" est fait ailleurs d'une plage de cellules.

    ** Conclusion, ton approche s'applique seulement si le "copier" est

             fait à l'extérieur d'Excel... la mienne est bonne pour tous les cas

             de figure.

    ** Il serait souhaitable de mettre en première ligne de la procédure,

             On Error Resume Next pour éviter l'apparition du message de déboggage

             dans les cas où la macro est utilisée avec un presse-papier vide.

    ** Tu peux même copier une image avec cette commande, ou des contrôles

              qui sont sur ta feuille.

    Activecell.select

    S'assurer que la feuille a le focus lors de l'exécution de la macro.

    'SendKeys  ===> pour envoyer la séquence des lettres à la fenêtre "Collage spécial"

    SendKeys "%e" & "v" & "{TAB 4}" & "{ENTER}"

    'C'est cette commande qui ouvre la fenêtre "Collage spécial"

    Application.CommandBars.FindControl(ID:=755).Execute

    MichD


    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  3. Anonyme
    2011-01-24T16:15:39+00:00

    Le dimanche te porte bonheur !

    J'ai bien fait d'insister car au 1er essai, BINGO, j'obtiens enfin exactement ce que me donnait avant "CTRL+V"

    Et pas de raccourci clavier etc. J'ai simplement dans ma macro "mise à jour" remplacé "ActiveSheet.Paste" par tes 2 lignes de code. Cette macro effectue après le collage quelques menus travaux qui suppriment les liens hypertexte et des dessins(boutons) qui sont gènants, et règle qelques paramètres comme la taille de police et l'affichage à 2 décimales.

    Je me demandais hier aussi comment tu pouvais être aussi sûr de toi alors que tu ne pouvais pas connaitre le contenu de MON presse-papier au départ de l'action.

    Tes 2 lignes de code, (que je ne comprends même pas) je n'aurais jamais pu les trouver seul.

    Alors CHAPEAU et merçi


    Milloche

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire