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 Vlookup VBA [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Avatar de eric4459
    Homme Profil pro
    Ingénieur Gestion de Projets
    Inscrit en
    Avril 2014
    Messages
    605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Gestion de Projets
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 605
    Par défaut Fonction Vlookup VBA
    Bonjour,
    J'ai une feuille nommée "data" dans un classeur avec plusieurs colonnes, l'une de ces colonnes (colonne G) contient des données textes, il peut y avoir un nombre important de lignes.
    Ces données sont issues d'une liste de choix dont la source se trouve sur une autre feuille nommée "WBS" en colonne B.
    Je souhaites import cette feuille excel dans une application particulière (Primavera), or je ne peux importer du texte que dans une limite du nombre de caractères.
    J'ai donc créé un code correspondant à chacune des données de ma liste de choix en colonne D de ma feuille WBS.


    En colonne G feuille "data" j'ai "CONCEPT SELECTION" de ma ligne 2 à ma ligne 10, puis "CONCEPT DEFINITION" etc..

    En colonne B de ma feuille "WBS" j'ai en ligne 2 " CONCEPT SELECTION"
    en ligne 3 " CONCEPT DEFINITION"

    En colonne D de ma feuille "WBS" j'ai en ligne 2 "CD"
    en ligne 3 "CS"

    Je souhaite remplacer dans la feuille "data" les données de la colonne G par les données de la colonne D de la feuille "WBS" qui correspondent

    J'ai pensé utiliser la fonction Vlookup en VBA mais je bloque sur les paramètres à utiliser, je connais un peu le VBA mais pas suffisamment pour mon problème.
    Merci d'avance pour vos conseils ou votre aide
    "Vous n’avez cessé d’essayer ? Vous n’avez cessé d’échouer ? Aucune importance !
    Réessayez, échouez encore, échouez mieux." Samuel Beckett
    Pensez aux balises et
    Visitez les FAQ Excel et allez faire un tour ici
    Tutoriels de SilkyRoad

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

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

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Bonjour,

    Je pense qu'un simple Replace pourrait faire l'affaire.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Data").columns("G").Replace "CONCEPT SELECTION", "CS"
    Ça pourrait être modifié avec des variables
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Data").columns("G").Replace Original, Remplacement
    Donc, à partir d'une boucle dans la feuille WBS, tu lis chaque valeur en B et D et tu remplaces toute la colonne G de Data

  3. #3
    Membre émérite
    Avatar de eric4459
    Homme Profil pro
    Ingénieur Gestion de Projets
    Inscrit en
    Avril 2014
    Messages
    605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Gestion de Projets
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 605
    Par défaut
    Bonjour,
    Je ne connais pas non plus la fonction replace, voici le code que j'ai commencé mais lorsque la condition est atteinte la macro s'arrete et repart sur la premiere Sub de mon module.

    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
     Sub Activity_code()
    ActiveWorkbook.Sheets("WBS").Activate
    Dim i As Integer
           Dim data As Worksheet
           Set data = ActiveWorkbook.Sheets("WBS")
            i = 1
            j = 1
            While data.Cells(i, 2) <> ""
            If Sheets("data").Cells(j, 7) = data.Cells(i, 2) Then
            Sheets("data").Cells(j, 7).Replace Sheets("data").Cells(j, 7), data.Cells(i, 4)
            End If
             i = i + 1
            j = j + 1
            Wend
     
     
    End Sub
    Que dois-je y mettre?
    "Vous n’avez cessé d’essayer ? Vous n’avez cessé d’échouer ? Aucune importance !
    Réessayez, échouez encore, échouez mieux." Samuel Beckett
    Pensez aux balises et
    Visitez les FAQ Excel et allez faire un tour ici
    Tutoriels de SilkyRoad

  4. #4
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

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

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    En reprenant ta méthode, j'irais comme ceci
    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
    Dim i As Integer
    Dim data As Worksheet
    Dim Valeur as String, Remplacement as String
           Set data = ActiveWorkbook.Sheets("WBS")
            i = 1
            While data.Cells(i, 2) <> ""
               Valeur = data.Cells(i, 2) 
               Remplacement = data.Cells(i, 4) 
     
               Sheets("data").Columns("G").Replace Valeur, Remplacement
     
               i = i + 1
            Wend
     
    End Sub

  5. #5
    Membre émérite
    Avatar de eric4459
    Homme Profil pro
    Ingénieur Gestion de Projets
    Inscrit en
    Avril 2014
    Messages
    605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Gestion de Projets
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 605
    Par défaut
    Merci beaucoup, cela fonctionne parfaitement.
    Le code que j'ai créé commence à fonctionner, j'ai un petit problème d’incrémentation de i et j que j'essayerai de résoudre plus tard pour le fun en attendant j'utiliserai votre proposition, que je dois adapter tout de même car il faut répéter l’opération sur d'autres colonnes.
    Merci encore
    "Vous n’avez cessé d’essayer ? Vous n’avez cessé d’échouer ? Aucune importance !
    Réessayez, échouez encore, échouez mieux." Samuel Beckett
    Pensez aux balises et
    Visitez les FAQ Excel et allez faire un tour ici
    Tutoriels de SilkyRoad

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

Discussions similaires

  1. [XL-2010] Fonction Vlookup en VBA ne marche pas: erreur execution 9
    Par jgresse1025 dans le forum Macros et VBA Excel
    Réponses: 89
    Dernier message: 02/04/2015, 14h10
  2. [Toutes versions] Problème pour Coder la fonction vlookup/recherchev en VBA
    Par alexandra1989 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 06/02/2012, 19h54
  3. [VBA-E]import de fonction dans vba
    Par vincent.tr dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 22/12/2006, 22h05
  4. Réponses: 7
    Dernier message: 31/08/2006, 09h41
  5. [VBA-E]Fonction vlookup et chemin d'accès fichier
    Par rustic51 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 13/06/2006, 23h01

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