Macro coller depuis presse-papier
Résolu/Fermé
touroul
Messages postés
475
Date d'inscription
mardi 5 octobre 2010
Statut
Membre
Dernière intervention
11 novembre 2024
-
27 juil. 2015 à 22:23
Le Pingou Messages postés 12230 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 15 janvier 2025 - 22 nov. 2016 à 23:02
Le Pingou Messages postés 12230 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 15 janvier 2025 - 22 nov. 2016 à 23:02
A voir également:
- Macro coller depuis presse-papier
- Presse papier - Guide
- Presse-papier : mieux l'utiliser avec Windows 10 et 11 - Guide
- Presse papier iphone ✓ - Forum Windows 7
- Presse papier - Forum iPhone
- Presse papier windows 7 - Forum Word
17 réponses
Le Pingou
Messages postés
12230
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
15 janvier 2025
1 454
27 juil. 2015 à 22:49
27 juil. 2015 à 22:49
Bonjour,
En principe vous copier et coller depuis la macro qui se trouve sur le classeur 2.
Le code suivant ou vous adaptez les noms selon vos besoins :
En principe vous copier et coller depuis la macro qui se trouve sur le classeur 2.
Le code suivant ou vous adaptez les noms selon vos besoins :
Sub copiercl1colllercl2() ' copier le tableau du classeur 1 Windows("nomcla1.xlsx").Activate Sheets(1).Range("plage du tableau").Copy ' coller dans classeur 2 sur feuille "MESS1" dès [A1] Windows("nomcla2.xlsm").Activate Sheets("MESS1").Range("A1").Select Sheets("MESS1").Paste End Sub
touroul
Messages postés
475
Date d'inscription
mardi 5 octobre 2010
Statut
Membre
Dernière intervention
11 novembre 2024
16
28 juil. 2015 à 07:15
28 juil. 2015 à 07:15
Bonjour Le Pingou
Merci pour le bout de code, mais ça ne peut pas fonctionner dans mon cas, car comme mentionné dans le premier message, le nom de la feuille à copier est variable, et le nom de fichier variable.
Une autre idée ?
Merci d'avance
Merci pour le bout de code, mais ça ne peut pas fonctionner dans mon cas, car comme mentionné dans le premier message, le nom de la feuille à copier est variable, et le nom de fichier variable.
Une autre idée ?
Merci d'avance
Le Pingou
Messages postés
12230
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
15 janvier 2025
1 454
28 juil. 2015 à 12:00
28 juil. 2015 à 12:00
Bonjour,
Eh bien sans référence précise pour le tableau à copier il n'est pas possible de réaliser une macro, vous devez donc le faire manuellement.
Ou trouver un point commun pour que la macro détecte le tableau !
Eh bien sans référence précise pour le tableau à copier il n'est pas possible de réaliser une macro, vous devez donc le faire manuellement.
Ou trouver un point commun pour que la macro détecte le tableau !
touroul
Messages postés
475
Date d'inscription
mardi 5 octobre 2010
Statut
Membre
Dernière intervention
11 novembre 2024
16
28 juil. 2015 à 16:16
28 juil. 2015 à 16:16
Bonjour
Merci de votre réponse.
Malheureusement, le nom de fichier source est généré par un .EXE et je ne peux pas le fixer.
Je ne comprends pas pourquoi la macro annule le contenu de mon presse-papiers. Pardon d'insister, mais n'y a-t-il vraiment aucun moyen de fixer son contenu en mémoire ou dans une feuille Excel ?
Merci pour votre aide en tout cas
Merci de votre réponse.
Malheureusement, le nom de fichier source est généré par un .EXE et je ne peux pas le fixer.
Je ne comprends pas pourquoi la macro annule le contenu de mon presse-papiers. Pardon d'insister, mais n'y a-t-il vraiment aucun moyen de fixer son contenu en mémoire ou dans une feuille Excel ?
Merci pour votre aide en tout cas
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
touroul
Messages postés
475
Date d'inscription
mardi 5 octobre 2010
Statut
Membre
Dernière intervention
11 novembre 2024
16
28 juil. 2015 à 18:03
28 juil. 2015 à 18:03
Bonjour Le Pivert
Merci bien pour cette solution.
Cependant, j'obtiens une erreur "erreur de compilation - type défini par l'utilisateur non défini".
D'après mes recherches ce message est lié à "Microsoft ActiveX Data Objects 2.0 Library".
Est-ce quelque chose à installer en plus, ou à activer ?
Google ne m'a pas apporté de réponse compréhensible ..; vous connaissez ça ?
En tout cas merci beaucoup
Merci bien pour cette solution.
Cependant, j'obtiens une erreur "erreur de compilation - type défini par l'utilisateur non défini".
D'après mes recherches ce message est lié à "Microsoft ActiveX Data Objects 2.0 Library".
Est-ce quelque chose à installer en plus, ou à activer ?
Google ne m'a pas apporté de réponse compréhensible ..; vous connaissez ça ?
En tout cas merci beaucoup
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
Modifié le 29 mars 2018 à 18:11
Modifié le 29 mars 2018 à 18:11
Voici les références que j'ai:
touroul
Messages postés
475
Date d'inscription
mardi 5 octobre 2010
Statut
Membre
Dernière intervention
11 novembre 2024
16
28 juil. 2015 à 20:57
28 juil. 2015 à 20:57
Il me manquait "Microsoft Forms 2.0", je l'ai installé depuis Développeur > Visual Basic > Outils > Références > Parcourir > FM20.DLL
Ceci m'a débarrassé du message.
Je sens que je suis pas loin du bout, mais rien ne se colle (j'ai du faire une erreur dans la macro).
Puis-je vous demander de faire un essai chez vous ?
Voici la macro :
Je vous en remercie par avance !
Ceci m'a débarrassé du message.
Je sens que je suis pas loin du bout, mais rien ne se colle (j'ai du faire une erreur dans la macro).
Puis-je vous demander de faire un essai chez vous ?
Voici la macro :
Sub Collage1()
Dim MyData As New DataObject
Dim strClip As String
On Error GoTo NotText
MyData.GetFromClipboard
strClip = MyData.GetText
Sheets("COLG1").Select
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
NotText:
Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
End Sub
Je vous en remercie par avance !
Le Pingou
Messages postés
12230
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
15 janvier 2025
1 454
Modifié par Le Pingou le 28/07/2015 à 23:06
Modifié par Le Pingou le 28/07/2015 à 23:06
Bonjour,
Votre procédure doit être comme suit :
Salutations.
Le Pingou
Votre procédure doit être comme suit :
Sub Collage1() Dim MyData As New DataObject Dim strClip As String On Error GoTo NotText MyData.GetFromClipboard strClip = MyData.GetText Sheets("COLG1").Range("A1").PasteSpecial Paste:=xlValues, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False NotText: End Sub
Salutations.
Le Pingou
touroul
Messages postés
475
Date d'inscription
mardi 5 octobre 2010
Statut
Membre
Dernière intervention
11 novembre 2024
16
29 juil. 2015 à 06:48
29 juil. 2015 à 06:48
Bonjour
Merci pour ce code simplifié et propre.
J'ai compris ce matin pourquoi ce code ne fonctionnait pas, même avec ce code :
En réalité, le fichier source n'est pas un fichier Excel, mais un fichier CSV, et le presse-papier ne s'importe pas depuis un 'copier' effectué sur un CSV.
Je peux changer d'avis ?
Y aurait-il moyen, par macro, de faire appel à une boîte de dialogue avec un 'Parcourir' pour montrer à Excel où se trouve le CSV, et de demander à la macro de copier la feuille1 (Sheet1) dans la feuille COLLG1 du fichier qui contient la macro ?
Pardon pour ce revirement, mais j'essaie de m'adapter.
Merci encore pour votre bonne volonté
Merci pour ce code simplifié et propre.
J'ai compris ce matin pourquoi ce code ne fonctionnait pas, même avec ce code :
En réalité, le fichier source n'est pas un fichier Excel, mais un fichier CSV, et le presse-papier ne s'importe pas depuis un 'copier' effectué sur un CSV.
Je peux changer d'avis ?
Y aurait-il moyen, par macro, de faire appel à une boîte de dialogue avec un 'Parcourir' pour montrer à Excel où se trouve le CSV, et de demander à la macro de copier la feuille1 (Sheet1) dans la feuille COLLG1 du fichier qui contient la macro ?
Pardon pour ce revirement, mais j'essaie de m'adapter.
Merci encore pour votre bonne volonté
Le Pingou
Messages postés
12230
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
15 janvier 2025
1 454
29 juil. 2015 à 08:53
29 juil. 2015 à 08:53
Bonjour,
Eh bien si c'est un fichier d'extension [csv] alors remplacer la ligne :
Note: pourquoi vouloir absolument utiliser une macro alors que le simple Copier (Ctrl+C) et le coller (Ctrl+V) et nettement plus rapide....!
Salutations
Le Pingou
Eh bien si c'est un fichier d'extension [csv] alors remplacer la ligne :
Sheets("COLG1").Range("A1").PasteSpecial Paste:=xlValues, Operation:=xlNone, _Par la suivante et cela fonctionne :
SkipBlanks:=False, Transpose:=False
Sheets("COLG1").Range("A1").PasteSpecial Paste:=xlValues
Note: pourquoi vouloir absolument utiliser une macro alors que le simple Copier (Ctrl+C) et le coller (Ctrl+V) et nettement plus rapide....!
Salutations
Le Pingou
touroul
Messages postés
475
Date d'inscription
mardi 5 octobre 2010
Statut
Membre
Dernière intervention
11 novembre 2024
16
29 juil. 2015 à 13:06
29 juil. 2015 à 13:06
@ Le Pingou : c'est parce que derrière le copier/coller il y a tout un tas d'autres opérations que je n'ai pas mentionné parce qu'elles ne me posent pas de problème.
Et aussi parce qu'il y a de nombreux utilisateurs et qu'il faut uniformiser ...
Merci @ plus
Et aussi parce qu'il y a de nombreux utilisateurs et qu'il faut uniformiser ...
Merci @ plus
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
29 juil. 2015 à 08:03
29 juil. 2015 à 08:03
voici une macro pour rechercher le chemin d'un classeur. Il suffit de changer xls en csv et remplacer A1 par une variable:
Dim Fichier As Variant 'Affichage de la la boîte de dialogue standard "Ouvrir" pour sélectionner un fichier 'sur le disque dur. 'GetOpenFilename permet de lire le nom du fichier sélectionné par l'utilisateur sans 'réellement ouvrir le fichier. Fichier = Application.GetOpenFilename("Fichiers (*.xls;*.xla),*.xls;*.xla") [A1] = Fichier 'inscrire le chemin du fichier sur la feuille 1 'Vérifie si l'utilisateur a cliqué sur le bouton "Annuler" ou sur la croix de fermeture. If Fichier = False Then MsgBox "Opération Annulée" 'pour sortir de la procédure Exit Sub End If
Le Pingou
Messages postés
12230
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
15 janvier 2025
1 454
29 juil. 2015 à 08:58
29 juil. 2015 à 08:58
Bonjour cs_Le Pivert,
Bonne solution sauf qu'il doit traiter un fichier d'extension [csv] et dans se cas il ne le verra pas .......(*.xls;*.xla),*.xls;*.xla")...!
Salutations
Le Pingou
Bonne solution sauf qu'il doit traiter un fichier d'extension [csv] et dans se cas il ne le verra pas .......(*.xls;*.xla),*.xls;*.xla")...!
Salutations
Le Pingou
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
29 juil. 2015 à 11:35
29 juil. 2015 à 11:35
Tu n'as pas tout lu!
Il suffit de changer xls en csv et remplacer A1 par une variable:
@+
Il suffit de changer xls en csv et remplacer A1 par une variable:
@+
touroul
Messages postés
475
Date d'inscription
mardi 5 octobre 2010
Statut
Membre
Dernière intervention
11 novembre 2024
16
29 juil. 2015 à 13:02
29 juil. 2015 à 13:02
Remplacement XLS par CSV : c'était fait et ça a fonctionné.
C'est la variable qui m'a posé problème, car le chemin d'accès n'était pas fixe.
Donc je n'ai pas pu remplacer Fichier par c:\Exemple\Fichier.xls
@ plus
C'est la variable qui m'a posé problème, car le chemin d'accès n'était pas fixe.
Donc je n'ai pas pu remplacer Fichier par c:\Exemple\Fichier.xls
@ plus
touroul
Messages postés
475
Date d'inscription
mardi 5 octobre 2010
Statut
Membre
Dernière intervention
11 novembre 2024
16
29 juil. 2015 à 08:59
29 juil. 2015 à 08:59
Salut
Je suis en train d'adapter le code.
Ca a l'air de fonctionner.
Je vous fais un reply dès que j'ai fini ou si je coince vraiment.
A plus, merci à vous
Je suis en train d'adapter le code.
Ca a l'air de fonctionner.
Je vous fais un reply dès que j'ai fini ou si je coince vraiment.
A plus, merci à vous
touroul
Messages postés
475
Date d'inscription
mardi 5 octobre 2010
Statut
Membre
Dernière intervention
11 novembre 2024
16
29 juil. 2015 à 10:03
29 juil. 2015 à 10:03
Et bien ça y est, je coince et je vais devoir à nouveau vous demander le coup de patte final.
Dommage, j'y étais presque.
J'ai essayé d'adapter votre code, mais le
Je suis tombé sur un autre bout de code que j'ai adapté et que voici :
De cette façon, ma feuille source s'importe bien dans le fichier qui contient la macro, et dans la bonne feuille.
Le problème, c'est que les valeurs sont alors considérées comme du texte et non des nombres (sauf la colonne L car elle ne contient pas de décimales).
C'est cette partie qui ne fonctionne pas :
Je l'ai obtenu à partir de l'enregistreur de macros, mais si je fais "à la main" exactement la même chose que pendant l'enregistrement, aucun problème mes valeurs sont bien considérées comme des nombres.
Mais qu'est-ce que je fais de travers ???
Si vous avez des idées ...
Dommage, j'y étais presque.
J'ai essayé d'adapter votre code, mais le
[A1] = Fichierm'a bloqué.
Je suis tombé sur un autre bout de code que j'ai adapté et que voici :
Sub ImportCSV()
Dim FichierCSV1
FichierCSV1 = Application.GetOpenFilename("Fichiers (*.csv), *.csv")
If FichierCSV1 <> False Then
With Worksheets("COLLG1")
.UsedRange.ClearContents
With .QueryTables.Add(Connection:="TEXT;" & FichierCSV1 & "", Destination:=.Range("A1"))
.PreserveFormatting = False
.TextFileSemicolonDelimiter = True
.Refresh BackgroundQuery:=False
.Delete
End With
End With
End If
Sheets("COLLG1").Select
Cells.Select
Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
End Sub
De cette façon, ma feuille source s'importe bien dans le fichier qui contient la macro, et dans la bonne feuille.
Le problème, c'est que les valeurs sont alors considérées comme du texte et non des nombres (sauf la colonne L car elle ne contient pas de décimales).
C'est cette partie qui ne fonctionne pas :
Sheets("COLLG1").Select
Cells.Select
Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Je l'ai obtenu à partir de l'enregistreur de macros, mais si je fais "à la main" exactement la même chose que pendant l'enregistrement, aucun problème mes valeurs sont bien considérées comme des nombres.
Mais qu'est-ce que je fais de travers ???
Si vous avez des idées ...
touroul
Messages postés
475
Date d'inscription
mardi 5 octobre 2010
Statut
Membre
Dernière intervention
11 novembre 2024
16
29 juil. 2015 à 10:07
29 juil. 2015 à 10:07
Laissez tomber !
J'ai trouvé :
Il faut taper
Selection.Replace What:=".", Replacement:=","
et non Selection.Replace What:=".", Replacement:="."
A plus
J'ai trouvé :
Il faut taper
Selection.Replace What:=".", Replacement:=","
et non Selection.Replace What:=".", Replacement:="."
A plus
touroul
Messages postés
475
Date d'inscription
mardi 5 octobre 2010
Statut
Membre
Dernière intervention
11 novembre 2024
16
29 juil. 2015 à 13:04
29 juil. 2015 à 13:04
Non c'est l'inverse, désole :
Ne pas taper :
Selection.Replace What:=".", Replacement:=","
Mais plutôt :
Selection.Replace What:=".", Replacement:="."
Même si c'est étonnant, ça fonctionne ainsi
Ne pas taper :
Selection.Replace What:=".", Replacement:=","
Mais plutôt :
Selection.Replace What:=".", Replacement:="."
Même si c'est étonnant, ça fonctionne ainsi
touroul
Messages postés
475
Date d'inscription
mardi 5 octobre 2010
Statut
Membre
Dernière intervention
11 novembre 2024
16
29 juil. 2015 à 11:29
29 juil. 2015 à 11:29
Tout est nickel
Merci encore pour votre aide.
Je marque en résolu ...
Bonne journée !
Merci encore pour votre aide.
Je marque en résolu ...
Bonne journée !
Bonjour,
J'ai ce bout de code:
Worksheets("Retour").QueryTables.Add("TEXT;" & Frecent, [H2]).Refresh
Le résultat est qu'il insère une nouvelle colonne A avec le résultat voulu
Comment je peux corriger ce code afin qu'il colle à A2 le texte au lieu de l'insérer ds une nouvelle colonne A2 ?
Merci de vos réponses.
J'ai ce bout de code:
Worksheets("Retour").QueryTables.Add("TEXT;" & Frecent, [H2]).Refresh
Le résultat est qu'il insère une nouvelle colonne A avec le résultat voulu
Comment je peux corriger ce code afin qu'il colle à A2 le texte au lieu de l'insérer ds une nouvelle colonne A2 ?
Merci de vos réponses.
Le Pingou
Messages postés
12230
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
15 janvier 2025
1 454
22 nov. 2016 à 23:02
22 nov. 2016 à 23:02
Bonjour paqmarc,
Ce poste est comme RESOLU depuis plus d’une année. Je pense que vous aurez plus de chance d’avoir une réponse en créant un nouveau poste en expliquant votre problème qui n’est certainement pas le même que pour ce poste.
Ce poste est comme RESOLU depuis plus d’une année. Je pense que vous aurez plus de chance d’avoir une réponse en créant un nouveau poste en expliquant votre problème qui n’est certainement pas le même que pour ce poste.
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
28 juil. 2015 à 17:42
28 juil. 2015 à 17:42
Bonjour,
Cette macro récupère la plage de cellule qui a été copiée et mise dans le presse papier. Bien entendu, il ne faut rien mettre ensuite dans le presse papier. Il suffit alors de sélectionner l'endroit où l'on veut mettre la plage et d'appeler la macro:
Cette macro récupère la plage de cellule qui a été copiée et mise dans le presse papier. Bien entendu, il ne faut rien mettre ensuite dans le presse papier. Il suffit alors de sélectionner l'endroit où l'on veut mettre la plage et d'appeler la macro:
Sub Format_Sheet() Dim MyData As New DataObject Dim strClip As String On Error GoTo NotText MyData.GetFromClipboard strClip = MyData.GetText Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False NotText: End Sub