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 :

Récupérer les valeurs d'un autre tableau


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 116
    Points : 67
    Points
    67
    Par défaut Récupérer les valeurs d'un autre tableau
    Bonjour

    J'ai créé ce code pour comparer les valeurs de deux colonnes et si une valeur est identique
    je souhaiterai renvoyer dans la colonne L de la feuille en cours la valeurs de la colonne 5 de la feuille source.

    Mais ce code ne renvoi pas la bonne valeur

    Merci pour une piste



    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
    Sub CopyValeurColonne5()
    Dim VALEURA As String, VALEURB As String
    '
    For i = 2 To Range("a65000").End(xlUp).Row
    VALEURA = Range("I" & i).Value
    For j = 2 To Range("a65000").End(xlUp).Row
    VALEURB = Sheets("FILT").Range("I" & j)
     
    If VALEURA = VALEURB Then  'si trouvé
    Cells(i, 12) = Sheets("FILT").Range("I" & j).Offset(0, -4).Value  'renvoie la valeur de la colonne E dans la colonne L
     
    End If
    Next j
    Next i
    End sub

  2. #2
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour

    Citation Envoyé par counterbob Voir le message
    Bonjour


    Mais ce code ne renvoi pas la bonne valeur

    Merci pour une piste
    Ben quoi ?

    Exécuter pas à pas avec des espions, la pile des appels et en regardant ce qui se passe sur la feuille de calcul.
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  3. #3
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Pour commencer, un petit nettoyage de ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub CopyValeurColonne5()
    Dim i As Long, j As Long
     
    For i = 2 To Cells(Rows.Count, "I").End(xlUp).Row
        For j = 2 To Sheets("FILT").Cells(Rows.Count, "I").End(xlUp).Row
            If Sheets("FILT").Cells(j, "I").Value = Cells(i, "I").Value Then
                Cells(i, "L") = Sheets("FILT").Cells(j, "E").Value
                Exit For
            End If
        Next j
    Next i
    End sub
    Mais pour faire plus efficace, il faudrait remplacer le second For To par un Find.

    Pour que ça fonctionne correctement, il faut s'assurer que la feuille active au lancement de la macro soit bien la feuille destination.

    Citation Envoyé par counterbob Voir le message
    J'ai créé ce code pour comparer les valeurs de deux colonnes et si une valeur est identique
    je souhaiterai renvoyer dans la colonne L de la feuille en cours la valeurs de la colonne 5 de la feuille source.
    Pourquoi ne pas avoir fait ça avec des fonctions Excel (un mélange de INDEX et EQUIV par exemple) ?
    Ce serait plus simple, plus sûr, plus souple et plus rapide.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 116
    Points : 67
    Points
    67
    Par défaut
    Merci, c’est parfait
    Je ne veux pas mettre de formule dans les cellules car il y a 45000 lignes et j’ai remarqué que le délai de mise à jour était trop lent et la taille du classeur trop importante, de plus le classeur et en mode partagé.
    Merci encore

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupérer les valeurs d'une autre table
    Par salmabarik dans le forum SAS Base
    Réponses: 1
    Dernier message: 25/01/2018, 10h11
  2. Récupérer les valeurs d'un autre formulaire
    Par galanga dans le forum VBA Access
    Réponses: 3
    Dernier message: 27/05/2016, 16h56
  3. Réponses: 20
    Dernier message: 03/06/2008, 09h56
  4. Réponses: 1
    Dernier message: 26/02/2008, 11h51
  5. Réponses: 4
    Dernier message: 19/03/2007, 17h12

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