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 :

Fonction Copier Valeur


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 5
    Par défaut Fonction Copier Valeur
    Bonjour,

    Excel / VBA

    j'ai qq difficultées à finaliser une FONCTION "CopieValeur"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Function CopieValeur (range As Variant)
        range.Copy
        Selection.pastespecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
    End Function
    Exemple:
    en B1 : "ragondin";
    en C1 = DROITE(B1;3) => ce qui donne "din"
    en B6 : ma fonction = CopieValeur(C1)

    résultat = 0 et non pas "din"

    merci de votre aide

    nota : je cherche une FONCTION et non pas une procédure (Sub) ou l'utilisation du copier valeur avec clic droit souris

    merci encore

    Despages

  2. #2
    Membre Expert Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Par défaut
    J'ai essayé la fonction suivante qui fonctionne :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Function copievaleur(ByVal Macell As Range) As String
    copievaleur = Macell.Value
    End Function

  3. #3
    Membre à l'essai
    Inscrit en
    Janvier 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 5
    Par défaut
    Citation Envoyé par aalex_38 Voir le message
    J'ai essayé la fonction suivante qui fonctionne :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Function copievaleur(ByVal Macell As Range) As String
    copievaleur = Macell.Value
    End Function
    Bien merci,

    Module5

    1/on trouvevisiblement bien "din" dans Macell de la feuille excel: cad la valeur de la cellule copiée; à contrario si l'on se place sur Macell, évidemment, on retrouve "=CopieValeur(Macell)" F15

    2/avec un copier/coller valeur (clicdroit_souris) = "din" visible ET dans Macell ET "din" dans la cellule Macell (plus de fonction) elle même E15

    ah ! là là!

    slts - Despages
    Fichiers attachés Fichiers attachés

  4. #4
    Membre Expert Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Par défaut
    re,

    1/on trouvevisiblement bien "din" dans Macell de la feuille excel: cad la valeur de la cellule copiée; à contrario si l'on se place sur Macell, évidemment, on retrouve "=CopieValeur(Macell)" F15

    2/avec un copier/coller valeur (clicdroit_souris) = "din" visible ET dans Macell ET "din" dans la cellule Macell (plus de fonction) elle même E15

    Je ne comprend pas ta demande, peux-tu préciser (retour lundi)

  5. #5
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 127
    Par défaut
    Salut
    Alors, si je comprend ton probleme
    MaCell contient du text, par exemple ragondin (c'est pas courant comme exemple ^^)
    Dans CelluleX tu veux que le text "din" soit placé, correspondant au 3 dernières lettres du mot contenu dans Macell
    Hors lorsque tu clique sur CelluleX, on se rend compte que ce n'est pas du text mais une formule.
    Tu as donc 2 choix possibles
    1/ Tu veux vraiment le texte "din" dans CelluleX et surtout pas une formule.
    Dans ce cas de figure, il va te falloir utiliser, par exemple, l'évènement Change de l'objet Worksheet, ainsi a chaque changement du contenu de Macell, tu changera le contenu de CelluleX en y inscrivant les 3 dernier caractères de MaCell.

    2/Tu acceptes qu'il y ai une formule dans CelluleX mais si l'utilisateur clique sur cette cellule, tu ne veux pas qu'il vois le formule utilisée.
    Dans ce cas tu gardes par exemple la formule "=Droite(Macell,3) dans celluleX et dans Format de cellule de celluleX, onglet protection, tu coches Masquer. Par contre pour que le masquage soit effectif, il te faudra Proteger ta feuille, ce qui implique de bien régler les formats de cellules (prtection- verouiller/Masquer) pour que l'utilisateur puisse saisir ce qu'il veux. En fonction de ta version d'excel tu aura plus ou moins de possibilité (exemple sur excel 2003 une fois la feuille protégée, tu ne pourras plus faire de filtre ...)

    A++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  6. #6
    Membre à l'essai
    Inscrit en
    Janvier 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 5
    Par défaut Function CopierValeur
    Citation Envoyé par Qwazerty Voir le message
    Salut
    Alors, si je comprend ton probleme
    MaCell contient du text, par exemple ragondin (c'est pas courant comme exemple ^^)
    Dans CelluleX tu veux que le text "din" soit placé, correspondant au 3 dernières lettres du mot contenu dans Macell
    Hors lorsque tu clique sur CelluleX, on se rend compte que ce n'est pas du text mais une formule.
    Tu as donc 2 choix possibles
    1/ Tu veux vraiment le texte "din" dans CelluleX et surtout pas une formule.
    Dans ce cas de figure, il va te falloir utiliser, par exemple, l'évènement Change de l'objet Worksheet, ainsi a chaque changement du contenu de Macell, tu changera le contenu de CelluleX en y inscrivant les 3 dernier caractères de MaCell.

    2/Tu acceptes qu'il y ai une formule dans CelluleX mais si l'utilisateur clique sur cette cellule, tu ne veux pas qu'il vois le formule utilisée.
    Dans ce cas tu gardes par exemple la formule "=Droite(Macell,3) dans celluleX et dans Format de cellule de celluleX, onglet protection, tu coches Masquer. Par contre pour que le masquage soit effectif, il te faudra Proteger ta feuille, ce qui implique de bien régler les formats de cellules (prtection- verouiller/Masquer) pour que l'utilisateur puisse saisir ce qu'il veux. En fonction de ta version d'excel tu aura plus ou moins de possibilité (exemple sur excel 2003 une fois la feuille protégée, tu ne pourras plus faire de filtre ...)

    A++
    Qwaz
    Bonjour,

    réponse 1

    oui, tout à fait, je désire bien récupérer la valeur absolue et non pas la fonction, soit "din" de notre fameux ragondin , et ceci, malgré !! l'appel de la fonction copiervaleur

    pourquoi ?? parce que d'autres fonctions s'enchaînent à la suite, à partir de "CelluleX", et la premiére_suivante fonction (la prochaine) n'accepte que des valeurs_absolues (= din), au cas contraire (=CopieValeur(MaCell)) j'ai le fameux "#Valeur!" comme résultat de la fonction suivante

    à contrario, je suis plutôt pas trés costaud_arithméticien, , aussi si vous ..... compléter la function soumise plus haut cela me serait bien symphatique/utile

    merci - slts - Despages

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 102
    Par défaut
    Bonjour

    Une fonction par définition renvoie une valeur contrairement à "sub"
    On doit donc écrire dans le corps de la procédure

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ........................
    CopieValeur= valeur retournée
    .......................
    C'est cette valeur que l'on retrouve dans la cellule.

    JP014

Discussions similaires

  1. [XL-2007] Copier-coller en fonction de valeurs en vba
    Par PersianPrince dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 03/08/2010, 16h48
  2. [VBA]fonction pour copier valeur ET format
    Par daniel_gre dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 07/08/2008, 00h00
  3. [vbexcel]tri ou regroupement de ligne en fonction de valeur.
    Par Mugette dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 12/12/2005, 18h22
  4. Réponses: 4
    Dernier message: 23/09/2005, 14h15
  5. fonction operator, valeur de retour
    Par butch dans le forum C++
    Réponses: 21
    Dernier message: 20/09/2004, 10h30

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