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-23T15:19:49+00:00

    Bon dimanche

    je crois qu'on tourne en rond

    Fais moi un petit essai avec SendKeys STP

    http://www.cijoint.fr/cjlink.php?file=cj201101/cijxHfhn5w.xls


    Milloche

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

    0 commentaires Aucun commentaire
  2. Anonyme
    2011-01-22T20:58:41+00:00

    Essaie ce cette manière :

    Petite explication : Ton problème provient du fait que lorsque

    tu copies directement avec l'aide du raccourci clavier Ctrl + V

    la virgule correspond directement au séparateur décimal défini

    dans le panneau de configuration Windows. Excel n'a pas à

    interpréter sur la donnée que tu insères dans la cellule. Pour lui

    indépendamment du nombre de chiffres après la virgule, il sait

    qu'ils appartiennent tous à la partie décimale du nombre.

    Lorsque tu utilises la méthode "Paste" de l'objet Worksheet pour

    copier les données, dès que tu es en VBA, Excel utilise le séparateur

    décimal en VBA qui est toujours le "POINT" et le séparateur des

    milliers qui est la virgule ou l'espace. Lorsque VBA effectue une copie

    vers une cellule, il fait automatiquement la substitution pour le

    séparateur décimal et celui des milliers. Si le nombre a plus de 2

    chiffres après la virgule, il prend l'initiative d'interpréter le nombre

    et conclut alors que la virgule représente un séparateur des milliers,

    d'où la problématique !

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

    Sub test()

    Dim X As String, N As Long

    '************Variables à définir***************

    N = 25

    'N représente le nombre de lignes de la plage où seront

    'copiées les données. Assure-toi de mettre un chiffre

    'suffisamment grand pour couvrir tous les cas de figure.

    *******************************************

    With ActiveCell.Resize(N)

        .NumberFormat = "@"

        X = .Parent.Name

        With Worksheets(X)

          .Paste

        End With

        .Replace ",", "."

        .NumberFormat = "General"

    End With

    End Sub

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

    MichD


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

    Non, ya un schmilblick

    Les chiffres avec trois décimales au copiage sur IE se retrouvent toujours après ta nouvelle macro avec séparateur de milliers (cad un espace) au lieu de la virgule.

    32,551 à l'origine sur l'affichage de IE devient 32 551,rien   après ta nouvelle macro.

    Je précise si je ne l'ai pas déjà fait que l'écran de mon programme sur IE que je copie par sélection avec ma souris en tirant, puis bouton droit sur la selection (alors sur fond bleu) et copier affiche la virgule pour les décimales, contrairement à d'autres programmes boursiers qui affichent le point.

    Les touches CTRL+V elles donnent toujours un bon collage, sans décimale non significative, mais qu'on peut rajouter vite fait avec la commande "format"

    Vous avez dit bizarre, comme c'est bizarre !


    Milloche

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

    0 commentaires Aucun commentaire
  3. Anonyme
    2011-01-22T17:43:48+00:00

    Non, ya un schmilblick

    Les chiffres avec trois décimales au copiage sur IE se retrouvent toujours après ta nouvelle macro avec séparateur de milliers (cad un espace) au lieu de la virgule.

    32,551 à l'origine sur l'affichage de IE devient 32 551,rien   après ta nouvelle macro.

    Je précise si je ne l'ai pas déjà fait que l'écran de mon programme sur IE que je copie par sélection avec ma souris en tirant, puis bouton droit sur la selection (alors sur fond bleu) et copier affiche la virgule pour les décimales, contrairement à d'autres programmes boursiers qui affichent le point.

    Les touches CTRL+V elles donnent toujours un bon collage, sans décimale non significative, mais qu'on peut rajouter vite fait avec la commande "format"

    Vous avez dit bizarre, comme c'est bizarre !


    Milloche

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

    0 commentaires Aucun commentaire