IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Collage en valeurs


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Chef de projet logistique
    Inscrit en
    Janvier 2019
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet logistique
    Secteur : Alimentation

    Informations forums :
    Inscription : Janvier 2019
    Messages : 22
    Par défaut Collage en valeurs
    Bonjour à tous,

    Je recherche une macro permettant de coller en valeur seulement. Les copies pouvant se faire de différents fichiers excel. Je souhaite que sur mon workbook tous les collages soient en valeur.

    J'ai trouvé cette macro qui marche très bien mais qui colle automatiquement lorsqu'on fait un clique une cellule. Or, je souhaiterai que le collage se fasse soit avec un ctrl + V soit un clique droit.

    Pouvez-vous m'aider svp

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    coller en valeur seulement
        On Error Resume Next
        Target.PasteSpecial xlPasteValues
        Application.CutCopyMode = True
    End Sub

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    je souhaiterai que le collage se fasse soit avec un ctrl + V soit un clique droit.
    • Pour le clic droit, utiliser la procédure événementielle Worksheet_BeforeRightClick
    • Pour assigner un raccourci clavier à une procédure
      1. Onglet [Développeur]
      2. Commande Macros du groupe Code
      3. dans la boîte de dialogue qui s'ouvre, tu sélectionnes la procédure (macro)
      4. ensuite Options... et Ctrl+ la lettre que tu veux (pour éviter toute confusion, évite tout de même d'utiliser la même lettre qu'un raccourci connu)


    Et si c'est l'objet Target dont on doit garder la valeur, il y a plus simple qu'un Copier/Collage spécial - Valeur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
      With Target
       .Value = .Value
      End With
      Cancel = True
    End Sub
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Bonjour à vous,

    Salut Philippe.

    Je rebondis sur

    J'utilise depuis longtemps cette astuce (qui m'a été fournie par le grand mercatog) sans m'être penché sur son explication.
    Si j'ai bien compris ce qui est mentionné en anglais ici
    VBA évalue la formule pour en informer la cellule.
    C'est du moins ce que j'ai compris, mes connaissances en anglais étant égales à celles d'une vache espagnole (ou plutôt italienne dans mon cas )
    Mais je reste sur ma faim.
    Si vous avez une explication plus complète, alors je suis preneur.

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 173
    Billets dans le blog
    53
    Par défaut
    Bonjour Marcel,
    Mais non Value est la propriété qui contient la valeur de la cellule comme Formula contient la formule quand il y en a.
    Si tu as dans la cellule A2 la formule Voilà ce que renvoie les propriétés de Range("A2")
    • Formula: =10+20
    • Value : 30

    donc quand on écrit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    With Range("A2")
    .Value = .Value
    End With
    On force la propriété Value à conserver uniquement le résultat de la formule et l'explication en anglais explique que c'est similaire à la fonction EVALUATE
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Philippe,

    (Je ne voudrais pas polluer cette discussion)

    Je me suis mal exprimé.

    Si tu écris

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub essai_value()
    With Worksheets("MAWKS").Range("X1")
            .FormulaR1C1 = "=1+1"
            .Value = .Value
    End With
    End Sub
    Quel processuss amène VBA à écrire 2 au lieu de 1+1?

    J'ai lu cette explication au sein même du Forum. Je n'arrive pas à la retrouver.

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 173
    Billets dans le blog
    53
    Par défaut
    Bonjour Marcel,
    Je ne connais pas le mécanisme interne aux propriétés de l'objet Range mais je suppose que lorsqu'il y a une formule dans une cellule, la propriété Value prend son résultat (elle l'évalue) et lorsqu'il n'y a pas de de formule elle l'affiche
    On pourrait également utiliser cette syntaxe pour effectuer un Collage Spécial-Valeur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    With Range("C13")
     .Formula = .Value
    End With
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  7. #7
    Membre averti
    Femme Profil pro
    Chef de projet logistique
    Inscrit en
    Janvier 2019
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet logistique
    Secteur : Alimentation

    Informations forums :
    Inscription : Janvier 2019
    Messages : 22
    Par défaut
    Bonjour Philippe,

    Ce fichier sera remplie par des personnes externes et donc ils seront obligés de faire soit un ctrl + V soit un clique droit.

    Du coup ta macro n'ira pas pour ce cas.

  8. #8
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Ce fichier sera remplie par des personnes externes et donc ils seront obligés de faire soit un ctrl + V soit un clique droit.
    Du coup ta macro n'ira pas pour ce cas.
    Ah bon ?
    Mon exemple montre pourtant comment le faire avec un clic droit et il est tout à fait possible d'associer comme je te l'ai indiqué un raccourci clavier (même Ctrl+V mais personnelement).

    Ceci dit est-il si compliqué d'expliquer aux personnes externes que Ctrl+C c'est copier et qu'un clic droit permet de sélectionner le bouton 123 qui est l'équivalent de Collage Special - Valeur ?
    Nom : 190118 - Colla Spécial Valeur.png
Affichages : 492
Taille : 9,4 Ko
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

Discussions similaires

  1. autoriser un seul utilisateur à faire un copier collage spécial valeur
    Par fafa7777 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/06/2008, 10h43
  2. uniquement copier collage spécial valeur
    Par fafa7777 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 01/06/2008, 18h25
  3. Collage spécial : valeurs
    Par Djohn dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 28/02/2008, 18h03
  4. Réponses: 2
    Dernier message: 14/05/2007, 15h10
  5. [VBA-E] Collage des valeurs avec liaison
    Par boux2 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 25/07/2006, 13h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo