VBA RechercheV avec table_matrice jusqu'à la dernière ligne
Jerome
-
Jerome -
Jerome -
Bonjour,
Je me permets de solliciter votre aide car je rencontre une difficulté sur Excel et plus précisément en VBA. En effet, je réalise une rechercheV/Vlookup sur une autre feuille de mon classeur, mais la difficulté ne se trouve pas là.
Ma difficulté est due au faite que la table_matrice (plage où je vais chercher mon info) est amenée à évoluer. C'est à dire que la semaine 1 je peux avoir 600 ligne, la semaine 2 900 lignes, la semaine 3 10.000 lignes etc. Du coup, quand je réalise ma macro à l'instant T, (je précise que c'est des données bloquées avec le $ sur le tableur et surtout que je ne suis vraiment pas bon en VBA), il va me bloquer ma table_matrice jusqu'à la dernière ligne de cette semaine. Mon problème est que sur les semaines d'après, il risque de ne pas retrouver plusieurs données et me proposer un (#N/A) alors que la donnée est belle et bien présente mais plus bas.
Pour éclaircir ma pensée :
En gros imaginons que cette semaine, je cherche dans ma liste un n° pour savoir à quelle personne il appartient. Sur Excel (tableur) je vais écrire =RECHERCHEV(I4;$A$2:$B$13;2;0) en partant du principe que I4 = 0 je retrouverais le résultat "Christine".
Colonne A Colonne B
00 Christine
01 Christine
02 Christine
03 Christine
04 Monique
05 Monique
06 Monique
07 Monique
08 Fatima
09 Fatima
10 Fatima
11 Fatima
Mais du coup la semaine suivante, en VBA la donnée serait bloquée jusqu'à B13 alors que cette semaine ci imaginons que j'ai plus de donnée et que je cherche : Sur Excel (tableur) =RECHERCHEV(I4;$A$2:$B$13;2;0) en partant du principe que I4 = 15 je retrouverais le résultat "#N/A". alors que je voudrais "Jean"
Colonne A Colonne B
00 Christine
01 Christine
02 Christine
03 Christine
04 Monique
05 Monique
06 Monique
07 Monique
08 Fatima
09 Fatima
10 Fatima
11 Fatima
12 Jean
13 Jean
14 Jean
15 Jean
Voici un modèle du code VBA, en gros je vais chercher ma donnée dans la feuille qui s'appelle "IEP S-1" et ce que j'aimerais c'est que le point d'arrivée de la matrice ne soit pas R7905C18, mais la dernière ligne du tableau
Range("S2").Select
ActiveCell.FormulaR1C1 = _
"=IFERROR(VLOOKUP(RC[-5],'IEP S-1'!R2C13:R7905C18,6,0),""Non"")"
Je sais que j'ai la possibilité de mettre un chiffre plus élevé comme R150000C18 pour être tranquille, mais je voulais un code plus propre et surtout éviter d'alourdir ma macro qui est déjà très lourde.
Merci à tous pour votre aide,
Amicalement
Jérôme
Configuration: Windows / Chrome 102.0.0.0
Je me permets de solliciter votre aide car je rencontre une difficulté sur Excel et plus précisément en VBA. En effet, je réalise une rechercheV/Vlookup sur une autre feuille de mon classeur, mais la difficulté ne se trouve pas là.
Ma difficulté est due au faite que la table_matrice (plage où je vais chercher mon info) est amenée à évoluer. C'est à dire que la semaine 1 je peux avoir 600 ligne, la semaine 2 900 lignes, la semaine 3 10.000 lignes etc. Du coup, quand je réalise ma macro à l'instant T, (je précise que c'est des données bloquées avec le $ sur le tableur et surtout que je ne suis vraiment pas bon en VBA), il va me bloquer ma table_matrice jusqu'à la dernière ligne de cette semaine. Mon problème est que sur les semaines d'après, il risque de ne pas retrouver plusieurs données et me proposer un (#N/A) alors que la donnée est belle et bien présente mais plus bas.
Pour éclaircir ma pensée :
En gros imaginons que cette semaine, je cherche dans ma liste un n° pour savoir à quelle personne il appartient. Sur Excel (tableur) je vais écrire =RECHERCHEV(I4;$A$2:$B$13;2;0) en partant du principe que I4 = 0 je retrouverais le résultat "Christine".
Colonne A Colonne B
00 Christine
01 Christine
02 Christine
03 Christine
04 Monique
05 Monique
06 Monique
07 Monique
08 Fatima
09 Fatima
10 Fatima
11 Fatima
Mais du coup la semaine suivante, en VBA la donnée serait bloquée jusqu'à B13 alors que cette semaine ci imaginons que j'ai plus de donnée et que je cherche : Sur Excel (tableur) =RECHERCHEV(I4;$A$2:$B$13;2;0) en partant du principe que I4 = 15 je retrouverais le résultat "#N/A". alors que je voudrais "Jean"
Colonne A Colonne B
00 Christine
01 Christine
02 Christine
03 Christine
04 Monique
05 Monique
06 Monique
07 Monique
08 Fatima
09 Fatima
10 Fatima
11 Fatima
12 Jean
13 Jean
14 Jean
15 Jean
Voici un modèle du code VBA, en gros je vais chercher ma donnée dans la feuille qui s'appelle "IEP S-1" et ce que j'aimerais c'est que le point d'arrivée de la matrice ne soit pas R7905C18, mais la dernière ligne du tableau
Range("S2").Select
ActiveCell.FormulaR1C1 = _
"=IFERROR(VLOOKUP(RC[-5],'IEP S-1'!R2C13:R7905C18,6,0),""Non"")"
Je sais que j'ai la possibilité de mettre un chiffre plus élevé comme R150000C18 pour être tranquille, mais je voulais un code plus propre et surtout éviter d'alourdir ma macro qui est déjà très lourde.
Merci à tous pour votre aide,
Amicalement
Jérôme
Configuration: Windows / Chrome 102.0.0.0
A voir également:
- Vba recherche v
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Hyper-v download - Télécharger - Divers Utilitaires
- Recherche photo - Guide
- Je recherche une chanson - Guide
- Moteur de recherche 1fichier ✓ - Forum Réseaux sociaux
5 réponses
Bonjour,
À tenter (sans VBA) avec les fonctions indirect() et nbval() pour chercher le nombre de valeurs dans l'une des deux colonnes du tableau de recherches - formule à adapter en remplaçant Feuil2! pas le nom réel de la feuille
Cordialement
À tenter (sans VBA) avec les fonctions indirect() et nbval() pour chercher le nombre de valeurs dans l'une des deux colonnes du tableau de recherches - formule à adapter en remplaçant Feuil2! pas le nom réel de la feuille
=RECHERCHEV(I4;INDIRECT("Feuil2!$A$2:$B$"&NBVAL(Feuil2!B:B));2;0)
Cordialement
Bonjour
En VBA pour avoir le n°de la dernière ligne non vide de la colonne B :
Ensuite mettre cette variable dans ta formule :
Cdlmnt
Via
En VBA pour avoir le n°de la dernière ligne non vide de la colonne B :
Ligne = Columns(2).Find("*", , , , xlByColumns, xlPrevious).Row
Ensuite mettre cette variable dans ta formule :
ActiveCell.Formula = "=IFERROR(VLOOKUP(I4,$A$2:$B$" & ligne & ",2,0),""non"")"
Cdlmnt
Via
Bonjour
C'est IFERROR et non IERROR
La rectification effectuée la formule fonctionne bien chez moi
Je ne vois pas pourquoi cela retournerait un 0 chez toi car soit la formule est incorrecte et cela renvoie une erreur, soit la formule est correcte mais la valeur en A1 n'est pas trouvée et cela renvoie non
Impossible d'en dire plus sans avoir vu ton fichier
Si ton problème persiste, fournis ton fichier en le postant su cjoint.com, en faisant créer un lien que tu copies et reviens coller ici dans ton prochain message
Cdlmnt
Via
C'est IFERROR et non IERROR
La rectification effectuée la formule fonctionne bien chez moi
Je ne vois pas pourquoi cela retournerait un 0 chez toi car soit la formule est incorrecte et cela renvoie une erreur, soit la formule est correcte mais la valeur en A1 n'est pas trouvée et cela renvoie non
Impossible d'en dire plus sans avoir vu ton fichier
Si ton problème persiste, fournis ton fichier en le postant su cjoint.com, en faisant créer un lien que tu copies et reviens coller ici dans ton prochain message
Cdlmnt
Via
Bonjour via55,
Encore merci pour votre aide. Du coup je pensais ne plus avoir de problème, mais quand je vais chercher mon information dans une autre feuille (Feuil1 par exemple) ça ne fonctionne pas. Il me renvoie à un 0. Sauriez vous pourquoi et comment résoudre ce souci ?
Sub VBA()
ligne = Sheets("Feuil1").Columns(2).Find("*", , , , xlByColumns, xlPrevious).Row
ActiveCell.Formula = "=IERROR(VLOOKUP(A1,Feuil1!$A$2:$B$" & ligne & ",2,0),""non"")"
End Sub
Encore merci ++++++++++++++ pour votre aide,
Amicalement
Encore merci pour votre aide. Du coup je pensais ne plus avoir de problème, mais quand je vais chercher mon information dans une autre feuille (Feuil1 par exemple) ça ne fonctionne pas. Il me renvoie à un 0. Sauriez vous pourquoi et comment résoudre ce souci ?
Sub VBA()
ligne = Sheets("Feuil1").Columns(2).Find("*", , , , xlByColumns, xlPrevious).Row
ActiveCell.Formula = "=IERROR(VLOOKUP(A1,Feuil1!$A$2:$B$" & ligne & ",2,0),""non"")"
End Sub
Encore merci ++++++++++++++ pour votre aide,
Amicalement
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Un grand merci de vous être penché sur mon problème et d'y avoir consacré du temps. Votre réponse et très intéressante, mais au vu des réponse je pense que celle de via55 correspond plus à mes attentes.
Encore un grand merci pour votre aide,
Amicalement