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 :

Macro pour rechercher valeur dans une liste et copier valeur associée d'une autre colonne [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2017
    Messages : 4
    Par défaut Macro pour rechercher valeur dans une liste et copier valeur associée d'une autre colonne
    Bonjour à tous et à toutes,

    Je vous expose brièvement mon problème:

    J'utilise un logiciel de gestion de frêt qui me permet une exportation au format csv.

    Afin de rendre cette exportation plus digeste (198 colonnes), j'ai créé une macro me permettant de supprimer toutes celles qui m'étaient inutiles.
    Mon problème réside sur 2 colonnes: Expéditeur et Intitulé de chargement qui sont extraits sous forme de code.
    Par exemple:
    - Expéditeur Lambda devient 869000125689
    - Palette bois devient 3AA

    J'ai réussi à me procurer l'ensemble des correspondances sous forme de tableaux que j'ai intégré à mon classeur sous 2 feuilles ("Sites" et "Intitulé cargaison").

    J'importe le csv dans une feuille temporaire afin d'effectuer les suppressions colonnes, mises en forme afin de la coller à la suite de mon tableau d'archive dans une feuille "Historique".

    J'aimerai toutefois que le "coller" final se fasse avec les correspondances Expéditeur et Intitulé chargement.

    J'ai songé à utiliser le RECHERCHEV, mais la cellule destination est celle qui contient la donnée recherchée.

    Auriez-vous une voie sur laquelle m'aiguiller?

    Merci du temps que vous m'accorderez.

  2. #2
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

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

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    Bonjour et bienvenue au forum !
    Je ne vois pas bien où est ton problème. RECHERCHEV m'a l'air bien adapté :
    Nom : recherchev.png
Affichages : 1701
Taille : 12,0 Ko

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2017
    Messages : 4
    Par défaut
    Bonjour riaolle,

    Merci pour ta réponse.

    Nom : Capturer.JPG
Affichages : 1634
Taille : 57,1 Ko

    Voici à quoi ressemble basiquement mon tableau d'historique.
    Chaque extraction du logiciel effectuée vient se rajouter à la suite après passage à la moulinette pour enlever les colonnes superflues.
    La "moulinette" est simplement une copie des colonnes dans la feuille "temp" de mon classeur vers la feuille "historique".
    Il m'est donc impossible de rajouter une formule RECHERCHEV dans les cellules sous peine d'effacer la référence à rechercher.

    Je pensait plutôt me lancer sur une recherche dans une listbox, mais je ne sais pas si celà est possible sans usf.

    La solution la plus simpliste serait de rajouter via le VBA d'une formule =RECHERCHEV à droite de mon extraction "temp" et de venir copier ces valeurs, mais commençant la programmation VBA, je voulais explorer toutes les pistes possibles.

    En espérant avoir était plus précis sur ma "problématique".

    Dans l'attente de votre réponse.

  4. #4
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

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

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    Si tu ne veux pas passer par VBA, il faudra créer une colonne en plus pour mettre le résultat de la RECHERCHEV, en effet. A toi de voir si c'est embêtant. A la limite, tu peux réduire la taille des colonnes de références our qu'elles ne soient pas trop visibles.
    Maintenant, si tu veux réécrire par dessus les références pour y mettre le nom correspondant, il va falloir passer par VBA. Ce n'est pas une opération très difficile, même si tu commences en VBA. Voici quelques pistes pour construire ton code :
    • Il va falloir faire une boucle sur les lignes à travailler.
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      Dim i As Long
      For i = 1 To derniereLigne
          'actions à faire sur une ligne
      Next i
      Si tu rajoutes au fur & à mesure des données, il ne faudra pas commencer la boucle sur la ligne n°1, mais sur la première nouvelle ligne --> à voir comment la repérer.
    • Pour repérer la dernière ligne non vide d'une colonne (A par exemple), on utilise :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      Dim derLig As Long
      derLig = Sheets("ma feuille").Cells(Rows.Count, 1).End(xlUp).Row
    • On n'inscrira pas une formule dans une autre cellule, mais on remplacera directement la référence par le nom grâce à Applicatin.VlookUp. Par ex., sur la cellule Ai:
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      Range("A" & i).Value = Application.VlookUp(Range("A" & i).Value, Range("tableauReferences"), 2, 0)
      tableauReferences est une plage de cellules nommée.

    J'espère que tu pourras avancer comme cela !

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2017
    Messages : 4
    Par défaut
    Un grand merci à toi raiolle.

    Ton dernier code fonctionne à merveille.

    Toutefois, nouveau problème : l'extraction csv me met les codes expéditeur convertis en texte.
    La fonction VLOOKUP me renvoie systématiquement #N/A.

    Problème de format je pense.

    Fonctionne totalement pour les codes contenants.

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2017
    Messages : 4
    Par défaut
    Après quelques recherches fructueuses, j'ai trouve une parade:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Range("C" & ldeb).Value = Range("C" & ldeb) * 1
    Range("C" & ldeb).Value = Application.VLookup(Range("C" & ldeb).Value, Range("ListeSites"), 2, 0)
    Je ne sais pas si c'est la bonne, mais ça a l'air de fonctionner.

    Merci pour ton aide raiolle.

    Je passe donc le sujet en résolu.

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

Discussions similaires

  1. Requête dans une requête sur une même colonne
    Par safraga dans le forum Développement
    Réponses: 2
    Dernier message: 02/10/2015, 10h07
  2. Remplacer une requête sur une class par une valeur constante ?
    Par Lillie CHARLOTTE dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 02/06/2015, 09h59
  3. [Toutes versions] Faire en VBA une requête sur une requête paramétrée
    Par guidav dans le forum VBA Access
    Réponses: 3
    Dernier message: 15/02/2012, 17h10
  4. Réponses: 1
    Dernier message: 30/08/2011, 09h53
  5. Tri d'une requête sur une valeur ou une autre
    Par mims1664 dans le forum Requêtes
    Réponses: 2
    Dernier message: 21/08/2009, 17h40

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