FONCTION copiercollerValeur

Despages Messages postés 5 Date d'inscription vendredi 1 janvier 2010 Statut Membre Dernière intervention 29 janvier 2010 - 27 janv. 2010 à 07:34
Despages Messages postés 5 Date d'inscription vendredi 1 janvier 2010 Statut Membre Dernière intervention 29 janvier 2010 - 29 janv. 2010 à 07:42
Bonjour,

qui connaîtrait la FUNCTION équivalente au clic-droit-souris CopierCollerValeur ?? : pour récupérer la valeur d'une fonction quelconque (=gauche par ex.) se trouvant dans mycell

il me semble qu'il faille :
1/ une cellule : mycell_0 pour appeler cette fonction 'copiercollerValeur'
2/ une deuxième cellule : mycell_1, créée par cette même fonction 'copiercollerValeur' (> designée par offset dans la fonction !) qui receuille la valeur ...

pas trés costaud moi-même je me permet de poser la question sur le forum, je propose ceci, mais évidemment c'est imcomplet:

Function CopieValeur (range As Variant)
range.Copy
Selection.pastespecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End Function

en vous remerciant - Despages

7 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
27 janv. 2010 à 07:45
pas top le fait que ta fonction se base sur selection, et non sur une cellule 'target' a definir en parametre


Renfield - Admin CodeS-SourceS - MVP Visual Basic
0
Despages Messages postés 5 Date d'inscription vendredi 1 janvier 2010 Statut Membre Dernière intervention 29 janvier 2010
27 janv. 2010 à 20:15
Bonsoir, j'ai essayé ceci, mais malheureusement cela me renvoie = #valeur!

Function copievaleur(range As Variant)
Dim target
target = Application.ActiveCell.Offset(rowOffset:=3, columnOffset:=3).Activate
range.Copy
target.pastespecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
End Function

pas trés bon le gars !!

Despages
0
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
27 janv. 2010 à 21:34
Public Sub copval()
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End Sub
0
Despages Messages postés 5 Date d'inscription vendredi 1 janvier 2010 Statut Membre Dernière intervention 29 janvier 2010
28 janv. 2010 à 07:12
Je recherche une FONCTION, pas une procédure, de telle façon à gérer une base de donnée en dynamique ET extensible, en insérant à la demande, au choix, ou des lignes ou des colonnes.
Effectivement, et pour avoir chercher sur différents forums, je n'ai jamais trouvé la fonction en question; bien que simple cette fonction semble présenter des difficultés d'écriture.
A priori le clic droit souris coller valeur existe bien, il doit donc bien être possible d'écrire la fonction pour le remplacer, étant entendu qu'il faille le faire avec deux cellules cibles : une cellule pour la fonction elle même et une cellule d'offset pour la valeur (cette cellule d'offset étant générée par la fonction elle-même)

Despages
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
28 janv. 2010 à 09:05
je crois que je viens de comprendre...

quand tu dis FONCTION tu veux dire "utilisable dans une formule"

du coup, c'est hyper simple :
Sub test()
    Range("A1") = "Hello World!"
    Range("A2") = "=Left(A1,6)"
    
    '# Premier cas possible:
    '# on copie la valeur (pas la formule) de la cellule selectionnée vers la cellule C1
    Range("A2").Select
    CopyValue , Range("C1")
    
    '# Deuxième cas :
    '# copie de la valeur de A2 vers la cellule selectionnée
    Range("C2").Select
    CopyValue Range("A2")
    
    '# troisième cas possible, copie de A2 vers C3
    CopyValue Range("A2"), Range("C3")
    
    '# Quatrième possibilité, une fonction utilisable dans une formule:
    Range("C4").Formula = "=ValeurCellule(A2)"
End Sub

Sub CopyValue(Optional voFrom As Range, Optional voTo As Range)
    If Nothing Is voFrom Then
        Set voFrom = Selection
    End If
    If Nothing Is voTo Then
        Set voTo = Selection
    End If
    If Not voFrom Is voTo Then
        voTo.Value = voFrom.Value
    End If
End Sub

Function ValeurCellule(Target As Range) As Variant
    If Not Nothing Is Target Then
        ValeurCellule = Target.Value
    End If
End Function



Renfield - Admin CodeS-SourceS - MVP Visual Basic
0
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
28 janv. 2010 à 11:17
1. Déjà la rubrique c'est VBA (Excel) ou langauge dérivé.

2. Si la fonction doit être utilisée dans le tableur excel sous la forme d'une formule. Réponse simple : c'est pas possible !
Une fonction dans ce cas ne peut agir que sur la cellule appelante uniquement. D'où le recours à une SUB (procédure).

3. Si la fonction n'est qu'un appel à partir d'une SUB, alors, du mon point de vue, elle est inutile et devrait plutôt faire partie de la SUB. (Retour au point 2).

Amicalement,
Us.
0
Despages Messages postés 5 Date d'inscription vendredi 1 janvier 2010 Statut Membre Dernière intervention 29 janvier 2010
29 janv. 2010 à 07:42
Bonjour,

merci à Renfield pour toutes ces possibilités et également à us_30 qui fait echo à une contradiction patente: dans une cellule quelconque, et si l'on fait appel à une FONCTION on verra (visuellement) dans le tableur excel le résultat de la fonction (comme demandé) et, si l'on se place sur la cellule elle-même on trouvera évidemment la FONCTION;

Donc, si l'on veut récupérer absolument la VALEUR, à mon sens, il faut mobiliser deux cellules:

- une pour la fonction (as usual)

- et la deuxième qui sera crée par offset à l'intérieure même de la FONCTION, par une ligne de code

=====================================================================
Hello Word !!

Hello Hello

'=GAUCHE(B3;5) Hello

* Ligne de code dans la fonction génére la 2ème cellule "valeur"
=====================================================================

encore merci de votre aide à tous deux - Despages
0