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 :

RECHERCHEV sous VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Trader
    Inscrit en
    Janvier 2020
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Trader
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2020
    Messages : 16
    Par défaut RECHERCHEV sous VBA
    Bonjour à tous,

    je sais que la RechercheV sous VBA est un sujet assez récurrent mais malgré tous les sujets parcourus je n'ai pas réussi à trouver de solution adaptable.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim DerniereLigne2 As Integer
    Dim i As Integer
    Dim DerniereLigne As Integer
     
    DerniereLigne = Cells(Rows.Count, 7).End(xlUp).Row
    DerniereLigne2 = Worksheets("Données").Cells(Rows.Count, 2).End(xlUp).Row
     
      For i = DerniereLigne To 4 Step -1
        Range("C" & i).FormulaLocal = "=RECHERCHEV(B&i ;Données!B2:C193; 2; 0)"
      Next i
    Voici ce que j'ai pour le moment mais qui ne marche pas.

    Voilà la formule qui marche =RECHERCHEV(Events!B4;Données!$B$2:$C$193;2;0).

    La feuille "Events" étant mon activesheet et "Données" ma feuille2

    J'aimerai transformer cette formule sous VBA pour mettre la rechercheV sur toutes les cellules utiles de la colonne C (d'où la boucle).
    Pour cela je ne sais pas comment faire pour que la valeur_cherchée prenne B puis "i"
    Même chose pour la colonne C du table_matrice qui ne devrait pas être C193 mais C puis "DerniereLigne2" puisque la longueur de la liste est sujette à changement.

    J'espère que j'ai réussi à me faire comprendre,
    si une âme charitable pouvait m'aider à trouver ce qui serait à modifier pour faire une RECHERCHEV avec des variables sous VBA ce serait très gentil

    Merci d'avance

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre averti
    Homme Profil pro
    Trader
    Inscrit en
    Janvier 2020
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Trader
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2020
    Messages : 16
    Par défaut
    Bonjour,

    Merci pour les liens mais malheureusement, je crois qu'uniquement la partie "Comment rendre dynamique les références à des cellules dans une formule ?" du deuxième liens me serait peut-être utile à la résolution du mon problème mais je ne comprends pas l'utilisation des balises :/

    j'aurais besoin d'insérer dans un premier temps

    =RECHERCHEV(Events!B4;Données!$B$2:$C$193;2;0) dans la cellule C4
    =RECHERCHEV(Events!B5;Données!$B$2:$C$193;2;0) dans la cellule C5
    =RECHERCHEV(Events!B6;Données!$B$2:$C$193;2;0) dans la cellule C6

    etc etc...

  4. #4
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    bonjour
    la demande n'est pas claire au moins pour moi ; peux tu afficher un capture écran des données de départ et ou un exemple pour essayer de t'aider

  5. #5
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    à tester
    une réponse selon ma compréhension
    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
    Sub test()
    Dim F1 As Worksheet
    Dim F2 As Worksheet
    Set F1 = Sheets("Events")
    Set F2 = Sheets("Données")
    Dim plage As Range
    Dim I As Long
    Dim L As Integer
    Dim X As Range
    I = F2.Cells(Rows.Count, 2).End(xlUp).Row
    MsgBox I
    Set plage = F2.Range("B2:C" & I)
    Set X = F1.Range("B4")
    F1.Range("C4") = Application.WorksheetFunction.VLookup(X, plage, 2, 0)
    Set plage = Nothing: Set X = Nothing
    End Sub

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Merci pour les liens mais malheureusement, je crois qu'uniquement la partie "Comment rendre dynamique les références à des cellules dans une formule ?" du deuxième liens me serait peut-être utile à la résolution du mon problème
    Le premier lien sert d'introduction au second et la lecture de celui-ci t'aurait déjà fait comprendre qu'il n'y a aucune raison d'utiliser une boucle pour écrire une formule sur plusieurs lignes.

    mais je ne comprends pas l'utilisation des balises
    La balise sert tout simplement de mot clé pour y insérer ensuite la bonne adresse ou un argument, etc. tout ce qui est variable et c'est la fonction Replace qui permet d'effectuer ce remplacement

    Petit exemple
    : Le remplacement de la balise [TableauClient] par l'adresse où se trouve la plage de cellules de la matrice de recherche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub t()
      Const Mask As String = "=VLOOKUP(C2,[TableauClient],2,FALSE)"
      MsgBox Replace(Mask, "[TableauClient]", "Client!$A$2:$M$105")
    End Sub
    Résultat renvoyé : =VLOOKUP(C2,Client!$A$2:$M$105,2,FALSE) ce qui dans excel se transformera par =RECHERCHEV(C2;Client!$A$2:$M$105;2;FAUX)
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  7. #7
    Expert éminent 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
    Par défaut
    Place correctement tes guillemets. La variable ne fait pas elle-même partie de la chaine (prends modèle sur le paramètre du Range, tu comprendras).
    Il faut aussi laisser le nom de la feuille source dans la formule.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Range("C" & i).FormulaLocal = "=RECHERCHEV(Events!B" & i & ";Données!B2:C193; 2; 0)"
    Je ne comprends pas non plus le Step -1 dans ton For To.
    Ca voudrait dire que DerniereLigne est inférieur à 4 ???

    En supposant que c'est une erreur et que DerniereLigne est supérieur à 4, il serait plus simple d'écrire tout ça sans boucle For To (en mettant des $ où il faut) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Range("C4:C" & DerniereLigne).FormulaLocal = "=RECHERCHEV(Events!B4 ;Données!B$2:C$193; 2; 0)"

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

Discussions similaires

  1. [XL-2013] RechercheV sous condition en VBA
    Par MrCMTueurx dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 03/04/2019, 20h35
  2. Probleme de rechercheV sous VBA
    Par sakhob dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 20/11/2014, 15h18
  3. Equivalent recherchev, sous vba, entre deux fichiers et avec plusieurs critères
    Par Gallinettechouette dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 29/07/2013, 13h01
  4. (VBA-A] Requete access sous VBA
    Par vanima dans le forum VBA Access
    Réponses: 12
    Dernier message: 20/07/2004, 16h07
  5. Syntaxe PARAMETERS pour requête sous VBA
    Par GAGNON dans le forum VBA Access
    Réponses: 3
    Dernier message: 28/11/2003, 11h39

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