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 :

Valeur d'une cellule transférée d'une feuille à une autre feuille


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Novembre 2019
    Messages : 4
    Par défaut Valeur d'une cellule transférée d'une feuille à une autre feuille
    Bonjour,

    Voilà maintenant plusieurs jours que je me casse la tête sur quelque chose que me paraissait pourtant très simple à la base.

    Je vous explique mon problème :
    J'ai un classeur avec entre autres deux feuilles, "Données d'entrée" et "Personnel".

    Dans la feuille données d'entrée, j'ai un tableau de deux colonnes, "Fonction" et "Coût horaire". Dans ce tableau, j'ai entré plusieurs lignes (ex: Coffreur, 35€).

    Dans la feuille Personnel, on retrouve ces deux colonnes, "Fonction" et "Coût horaire". Dans mon userform de la feuille Personnel, j'ai une ComboBox qui me permet de sélectionner n'importe quelle ligne de la colonne "Fonction" de la feuille "Données d'entrée" et qui inscrit la sélection dans la case "Fonction" de la feuille "Personnel".

    Mon but serait que le coût horaire s'inscrive directement sur la feuille Personnel une fois le choix de la Fonction validé dans mon UserForm.

    J'ai trouvé un moyen de le faire pour un nombre de ligne fixe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    If ActiveCell = "Macon" Then
    Tauxhoraire = Worksheets("Données d'entrée").Range("M3")
    End If
     
    If ActiveCell = "Coffreur" Then
    Tauxhoraire = Worksheets("Données d'entrée").Range("M4")
    End If
    Mais cela ne marche pas si une fois le codage terminé, on vient ajouter des lignes dans le tableau Données d'entrée.

    Je suis sûr que ce n'est pas quelque chose de compliqué mais je commence tout juste en VBA et j'ai un peu de mal.

    Merci par avance pour votre aide.

  2. #2
    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 et bienvenue sur le Forum,

    Tu peux utiliser la méthode Find et son corollaire FindNext.
    Pour chaque cellule trouvée, la cellule décalée (méthode Offset) sera informée de la valeur de la zone de texte du formulaire.

    Consulte l'exemple de code dans cet espace.

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Novembre 2019
    Messages : 4
    Par défaut
    Bonjour,

    Tout d'abord merci pour les conseils, j'ai pu mieux appréhender la méthode Find.

    En revanche, ça ne fonctionne toujours pas. Le problème vient du fait que j'indique que la recherche doit être faite en fonction du choix dans la liste déroulante de mon UserForm.

    En fouillant sur internet, j'ai pu écrire les lignes ci-dessous. La ligne 11 est celle qui fait beuguer mon vba et on m'indique
    Mauvaise utilisation du Me
    J'ai vraiment l'impression de tourner en rond et j'aimerais de nouveau qu'on m'aide


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    Sub usingFind()
     
    Dim oWkSht As Worksheets
    Dim lastrow As Long, i As Long, c As Long
     
    Dim myCell As Range
     
    Set oWkSht = Sheets("Données d'entrée")
    lastrow = oWkSht.Range("L" & Rows.Count).End(xlUp).Row
     
    c = Me.ZLFonction
     
    Set myCell = oWkSht.Range("M3:M" & lastrow).Find(What:=c, LookIn:=xlValues)
     
    If Not myCell Is Nothing Then
        MsgBox "Valeur trouvée dans la cellule" & myCell.Value
     
    End If
    Exit Sub
     
    End Sub

    Merci d'avance !

  4. #4
    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,

    2 remarques au préalable
    - Pour tout report de code, merci d'utiliser les balises #
    Celui-ci n'en sera que plus lisible
    - La sortie anticipée de la procédure, telle qu'elle est reportée, n'a aucune utilité

    Cela étant.

    A quoi correspond

    Si, comme je le présume, il s'agit d'un contrôle de formulaire, alors il faut lui affecter une propriété (.Value, .Text...)
    Mais comme c est déclarée en Long, il faudrait plus d'informations.

  5. #5
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Je lis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim oWkSht As Worksheets
    ......
    Set oWkSht = Sheets("Données d'entrée")
    Si oWkSht est typée comme une collection (celle des feuilles), elle ne saurait ensuite se voir affecter une feuille.

  6. #6
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 478
    Par défaut
    Bonjour le Fil,

    Citation Envoyé par unparia Voir le message
    Si oWkSht est typée comme une collection (celle des feuilles), elle ne saurait ensuite se voir affecter une feuille.
    J'ajouterais qu'il ne suffit pas de supprimer le "s" : une feuille générique (membre de Sheets) n'est pas toujours une feuille de calcul (Worksheet)

  7. #7
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Novembre 2019
    Messages : 4
    Par défaut
    Citation Envoyé par MarcelG Voir le message
    Bonjour,

    ZLFonction est bien un contrôle de formulaire où l'on trouve plusieurs fonctions(coffreur, finisseur,...). J'ai donc tenté le .Text mais rien ne fonctionne, je ne comprend pas...

    Citation Envoyé par unparia Voir le message
    Bonjour unparia,

    Pour tout vous dire, j'ai trouvé une vidéo sur Youtube où quelqu'un réalise un transfert de données d'une feuille à une autre en fonction d'une recherche. Mais dans cette vidéo, il n'utilise pas de formulaire avec une liste déroulante comme je voudrais le faire et c'est là que se situe mon problème.

Discussions similaires

  1. Réponses: 11
    Dernier message: 05/07/2019, 12h20
  2. Réponses: 2
    Dernier message: 04/09/2015, 10h09
  3. [XL-2010] Récupérer une valeur d'une autre cellule d'une autre feuille
    Par psylo24 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/11/2012, 18h03
  4. [XL-2003] report de valeur d'une autre feuille
    Par gexk5 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/04/2009, 08h08
  5. Réponses: 7
    Dernier message: 13/10/2007, 23h31

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