Macro qui Colle en valeur uniquement (sans copier) [Résolu]

mindfield06 6 Messages postés mardi 25 novembre 2008Date d'inscription 25 janvier 2009 Dernière intervention - 22 janv. 2009 à 17:57 - Dernière réponse : whitelegend 156 Messages postés vendredi 13 janvier 2006Date d'inscription 2 mars 2009 Dernière intervention
- 25 janv. 2009 à 18:18
Bonjour

Le problème est simple :

Je souahite créer une macro qui me permette d'effectuer des collages en valeur avec une macro de manière à pouvoir ensuite affecter un raccourci clavier à cette macro et faire la même chose qu'un contrl+V mais en valeur !

La difficulté pour moi réside dans le fait qu'il faut expliquer à la machine qu'il faut simplement coller en valeur dans la cellule sélectionnée ce qu'elle a stocké au préalable dans le presse papier. L'utilisateur aura pris soin auparavant de copier la valeur qui l'intéresse.

Voilà mon code qui ne fonctionne pas :

Sub Copcolval()


Application.CutCopyMode = True


Range("D10").Select


Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False


End Sub

Merci de votre aide
Afficher la suite 

Votre réponse

17 réponses

Meilleure réponse
us_30 2117 Messages postés lundi 11 avril 2005Date d'inscription 14 mars 2016 Dernière intervention - 22 janv. 2009 à 18:36
3
Merci
Bonsoir,

J'ai un peu de mal à comprendre tes explications, mais il me semble que tu veux simplemenent faire un COPIER / COLLER VALEUR de la cellule active, en résumé...

Donc :

Sub Macro()

Selection.Copy

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

End Sub

Amicalement,
Us.

Merci us_30 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 117 internautes ce mois-ci

Commenter la réponse de us_30
Meilleure réponse
mindfield06 6 Messages postés mardi 25 novembre 2008Date d'inscription 25 janvier 2009 Dernière intervention - 22 janv. 2009 à 19:20
3
Merci
Merci de ton aide mais pour être plus précis, je veux que la macro colle en valeur ce qui a été copié avant que la macro ne soit lancée.

Il ne faut donc pas qu'il y ait de ligne "Selection.Copy" dans le code, (et si on l'enlève de ta proposition, ça plante).

Je voudrais ensuite  affecter un touche clavier raccourci à cette macro qui permettra de faire des collages en valeur sans utiliser sa souris.

Merci mindfield06 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 117 internautes ce mois-ci

Commenter la réponse de mindfield06
Meilleure réponse
mindfield06 6 Messages postés mardi 25 novembre 2008Date d'inscription 25 janvier 2009 Dernière intervention - 22 janv. 2009 à 21:31
3
Merci
Bon pour réduire et tenter de simplifier encore le problème à son strict minimum, je le reformule en une seule phrase.

Comment faire un collage en valeur sans utiliser ni sa souris, ni le raccourci clavier Alt + L + V + V sous excel ?
Evidamment j'aimerai que la solution soit en vba et en référence absolue.

C'est mieux ?

Merci mindfield06 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 117 internautes ce mois-ci

Commenter la réponse de mindfield06
Meilleure réponse
whitelegend 156 Messages postés vendredi 13 janvier 2006Date d'inscription 2 mars 2009 Dernière intervention - 23 janv. 2009 à 08:11
3
Merci
Salut,



[../auteur/US30/488557.aspx us_30], je comprends parfaitement ce qu'il recherche maus je n'ai pas trouvé la solution encore...
Je vais tenter de te l'expliquer.

Le code que tu donne fonctionne très bien quand on veut copier/coller des données à l'intérieur d'excel.

Le selection.copy copie donc bien la sélection active  puis le pastescpecial colle ce qui à été copié en valeur.

Pas de problème pour cette manip.

La où ca se complique c'est:

Imagine toi sur internet, tu copier une phrase que tu vois sur un site qui se trouve donc en mémoire dans le clipboard de ton PC, comment pourrait-on faire pour acccéder à ce contenu en mémoire sous Excel ? c'est à dire de coller cette phrase copiée dans une cellule Excel.

Est-ce plus clair?

LC

Merci whitelegend 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 117 internautes ce mois-ci

Commenter la réponse de whitelegend
Meilleure réponse
us_30 2117 Messages postés lundi 11 avril 2005Date d'inscription 14 mars 2016 Dernière intervention - 23 janv. 2009 à 11:48
3
Merci
Bonjour,

Merci de venir en aide... Ton explication est très clair... mais où est le problème ?

En effet, si par exemple, je mets en surbrillance dans cette page, ton texte : "Est-ce plus clair?" puis je fais COPIER avec CTRL+C (ou click gauche, et copier dans le menu), et enfin j'ouvre Excel, je selectionne une cellule, et ensuite COLLER (CTRL+V), j'ai bien le texte du clipboard qui se colle...
Cette possibilité était déjà présente sous windows 95... Donc, je pense que ce n'est pas cela que recherche mindfiel... ou sinon, il cherche midi à quatorze heures...

Amicalement,
Us.

Merci us_30 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 117 internautes ce mois-ci

Commenter la réponse de us_30
Meilleure réponse
whitelegend 156 Messages postés vendredi 13 janvier 2006Date d'inscription 2 mars 2009 Dernière intervention - 23 janv. 2009 à 13:39
3
Merci
Re,

Sisi c'est parfaitement ce que tu décris que recherche mindfiel, mais ce fameux COLLER( CTR+V) ne doit pas être fait manuellement mais l'intermédaire de la macro qui fera ce coller elle même.

Donc en gros le code pourrait être

Range("A1").text  = Clipboard.getText

Mais l'objet clipboard n'est pas reconnu par vba...

La commande .pastespecial ne fonctionne que si l'élément copier est une sélection dans Excel ( le classeur actif ou un autre)

Voila je pense avoir fait le maximum pour éclaircir la situation.

LC

Pensez à accepter les réponses qui vous servent 

Merci whitelegend 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 117 internautes ce mois-ci

Commenter la réponse de whitelegend
Meilleure réponse
whitelegend 156 Messages postés vendredi 13 janvier 2006Date d'inscription 2 mars 2009 Dernière intervention - 24 janv. 2009 à 16:34
3
Merci
Re,

je voulais liu proposer ce code là oui mais un problème se pose que je n'ai pas résolu et donc je n'ai pas donné ce code c'est que VBA ne veut pas reconnaitre "DataObject"... il doit falloir ajouter une référence mais laquelle ...

LC

Pensez à accepter les réponses qui vous servent 

Merci whitelegend 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 117 internautes ce mois-ci

Commenter la réponse de whitelegend
Meilleure réponse
us_30 2117 Messages postés lundi 11 avril 2005Date d'inscription 14 mars 2016 Dernière intervention - 25 janv. 2009 à 09:43
3
Merci
Capricieux Excel...

IL faut mettre une Useform avec cette déclaration (hors de toute procédure)

Dim MyData As DataObject

puis dans un module la macro1 :

Sub Macro1()
    Set MyData = New DataObject
    MyData.GetFromClipboard
    ActiveCell.Value = MyData.GetText(1)
End Sub

Pourquoi passer par une useform pour la déclaration... I don't know ! is-it a problem ?
En effet, je crois qu'il y a un petit subtilité d'utilisation qui constitue une espèce de bug avec le presse papier, si on ne veut pas passer par une userform... Malgré tout, après une première utilisation, on peut supprimer l'userform, le presse papier continu de fonctionner pour la session d'excel ouverte...  mais bon.

Amicalement,
Us.

Merci us_30 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 117 internautes ce mois-ci

Commenter la réponse de us_30
Meilleure réponse
whitelegend 156 Messages postés vendredi 13 janvier 2006Date d'inscription 2 mars 2009 Dernière intervention - 25 janv. 2009 à 10:34
3
Merci
ohoh...

Et quelle subtilité !

Merci en effet moi non plus je ne comprends pas pourquoi... certainement un bug oui, je pense que ce sujet en aideras plus d'un à l'avenir.

Amicalement
LC

Pensez à accepter les réponses qui vous servent 

Merci whitelegend 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 117 internautes ce mois-ci

Commenter la réponse de whitelegend
Meilleure réponse
mindfield06 6 Messages postés mardi 25 novembre 2008Date d'inscription 25 janvier 2009 Dernière intervention - 25 janv. 2009 à 14:24
3
Merci
Re-bonjour

Désolé pour le délai de réponse, j'étais occupé mais je vois que vous avez avancé.
Pour reprendre ce dont j'ai besoin explicitement même si je pense que whitelegend avait mieux cerné.

Dans Excel
1) je copie le contenu d'une cellule, le contenu est enregistré dans le presse papier.
2) Ensuite je sélectionne une autre cellule, n'importe laquelle
3) On lance la macro

 La macro doit pouvoir coller en valeur ce qui a été copié lors de l'étape 1

C'est tout, voilà
Merci encore

Merci mindfield06 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 117 internautes ce mois-ci

Commenter la réponse de mindfield06
Meilleure réponse
whitelegend 156 Messages postés vendredi 13 janvier 2006Date d'inscription 2 mars 2009 Dernière intervention - 25 janv. 2009 à 14:27
3
Merci
Re,

Bon je vois que j'avais compris plus comliqué que ce que tu veux.... Néanmoins ce sujet donnera les 2 solutions.

Mindfield, toutes les réponses et solutions sont dans les messages que nous avons posté.

Accepte les réponses qui te conviennent afin de pouvoir en faire profiter les autres ;)

LC

Pensez à accepter les réponses qui vous servent 

Merci whitelegend 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 117 internautes ce mois-ci

Commenter la réponse de whitelegend
Meilleure réponse
mindfield06 6 Messages postés mardi 25 novembre 2008Date d'inscription 25 janvier 2009 Dernière intervention - 25 janv. 2009 à 17:55
3
Merci
J'ai testé ça marche

Je voulais juste ajouter que pour ceux comme moi qui auraient à se servir de cette macro le but de traiter des données chiffrées, il est utile de modifier dans le Userform,  le "As DataObject" en "As Integer".

Un grand merci aux deux pro du vba qui m'ont aidé même si on a eu un peu de mal à se comprendre au début.

Merci mindfield06 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 117 internautes ce mois-ci

Commenter la réponse de mindfield06
Meilleure réponse
mindfield06 6 Messages postés mardi 25 novembre 2008Date d'inscription 25 janvier 2009 Dernière intervention - 25 janv. 2009 à 18:00
3
Merci
Une dernière chose, par contre je comprends pas vraiment pourquoi, quand je copie ça me change la hauteur de ligne  dans excel ?
C'est quoi ce bin's ?

Merci mindfield06 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 117 internautes ce mois-ci

Commenter la réponse de mindfield06
Meilleure réponse
whitelegend 156 Messages postés vendredi 13 janvier 2006Date d'inscription 2 mars 2009 Dernière intervention - 25 janv. 2009 à 18:18
3
Merci
Re,

redimensionnent automatique des cellules.. c'est dans le format de cellule que ca se règle ca.

LC

Nota: Pour un autre problème un autre sujet -> cf règles ;)

Pensez à accepter les réponses qui vous servent 

Merci whitelegend 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 117 internautes ce mois-ci

Commenter la réponse de whitelegend
us_30 2117 Messages postés lundi 11 avril 2005Date d'inscription 14 mars 2016 Dernière intervention - 22 janv. 2009 à 19:48
0
Merci
Euh... là, en termes de précision, j'ai déjà connu mieux...

J'ai du mal à cerner ton problème. IL faudrait prendre un exemple simple et explicite, peut-être pour expliquer...
Par exemple, est-ce que tu veux faire un copier d'une cellule contenant une formule, par exemple =PI(), puis faire un coller en valeur ? ... Donc là, je ne vois pas ton problème...
où est-ce qu'après le copier, perdre le focus (avec échappe), et ensuite faire un coller ?

Amicalement,
Us.
Commenter la réponse de us_30
us_30 2117 Messages postés lundi 11 avril 2005Date d'inscription 14 mars 2016 Dernière intervention - 22 janv. 2009 à 22:18
0
Merci
 Non c'est pire... Je ne vois pas en quoi ma première proposition n'est pas satisfaisante maintenant ?
On tourne en rond. Comme je te l'ai dit, décrit plutôt un exemple de manipulation, car tel que tu écris les choses en 2 lignes, je peux en faire au moins 4 interprêtations possibles.

Et maintenant, tu veux une référence absolue ?! ... tu dis tout et rien à la fois... Tant que tu n'arrivera pas à exprimer correctement quels sont les élélements de départ, et le résultat final... ben, je ne serais pas en mesure de formuler une bonne réponse. A moins, que c'est moi qui soit vraiment bouché ce soir... mais je te signale que tu ne réponds pas à ma demande : "IL faudrait prendre un exemple simple et explicite". (et donc je ne dis pas de reformuler une question encore plus vaguement qu'au premier post...)

Pour te guider, essayes de présenter les choses ainsi :

- Dans la cellule A1, j'ai une formule, disons : =PI()

- Je la copie. Par exemple avec CTRL+C.

- Dans la cellule B2, je veux coller la valeur du nombre précédemment copiée, soit obtenir dans B2 : 3,14156...

- Question : Comment le faire en VBA et que cela soit accessible par un raccourci.
- Question : Je voudrais que la cellule de départ soit celle qui se trouve selectionnée au lancement de la macro.
- Question : La cellule d'arrivé soit toujours B2.

etc... c'est qu'un exemple de présentation, mais j'espère quelle pourrait aider à une compréhension mutuelle... enfin, bref...

Amicalement,
Us.
Commenter la réponse de us_30
us_30 2117 Messages postés lundi 11 avril 2005Date d'inscription 14 mars 2016 Dernière intervention - 23 janv. 2009 à 23:37
0
Merci
bou... je tombe le cul par terre ! ... enfin...

Pour faire le Coller par VBA (donc réinventer la roue), voici une proposition de code :

Sub Macro1()
'
' Macro1 Macro
' Macro enregistrée le 23/01/2009 par Us
'
' Touche de raccourci du clavier: Ctrl+Maj+V
'



    Set MyData = New DataObject
    MyData.GetFromClipboard
    ActiveCell.Value = MyData.GetText(1)
End Sub



Attention, ici seul un texte sera collé... Et pis ensuite pour attribuer le raccourci clavier, il suffit de le définir à l'invite lors d'un enregistrement d'une macro...

On pourrait tout aussi bien coder l'envoi de la simulation de CTRL+V... soit :

Sub Macro4()
'
' Macro4 Macro
' Macro enregistrée le 23/01/2009 par Us
'
' Touche de raccourci du clavier: Ctrl+Maj+B
'
    SendKeys ("^V")
End Sub

Voilà donc.

=

Mais tout ceci signifie refaire CTRL+V déjà natif... c'est donc tout simplement complétement archi-idiot. Faut mieux perdre son temps à des choses qui seront plus utiles...

Merci WhiteLegend pour aide.

Amicalement,
Us.
Commenter la réponse de us_30

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.