Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2019 Recherche valeur et déterminer ligne

xorf

XLDnaute Nouveau
Bonjour à tous,

J'essaie d'adapter différents codes trouvés sur le net et le forum pour mon besoin mais malheureusement je n'y arrive pas....

Je viens donc vers vous pour avoir un peu d'aide.

Les données :

J'ai différents fichiers Excel où dans la colonne "AH" j'ai des numéros sur chaque ligne à partir de la 6ème (qui peuvent varier de 1 à 20 et donc sur 1 à 20 lignes maximum). Ces nombres sont triés de façon aléatoire dans la colonne AH.

Ensuite dans la cellule "XA65" j'ai aussi des chiffres qui varient de 1 à 20.

Ce que je souhaiterai :

C'est un script VBA qui permet de récupérer le nombre dans la cellule "XA65" puis ensuite d'aller chercher la ligne qui correspond à ce même nombre dans la colonne "AH". Puis une fois que la ligne est déterminée, aller copier les valeurs des cellules de la colonne "F, K,N,Q,R,S" de la ligne concernée, puis de les coller à partir de AD65 (donc AD65, AE65, AF,65,AG65 etc....)

Exemple :

Si pour :

AH10 = 4
XA = 4
Le script détermine que c'est la ligne numéro 10 où se situe le nombre 4 et cela va copier les valeurs de F10, K10, N10, Q10, R10, S10

Merci beaucoup par avance.
 

xorf

XLDnaute Nouveau
Bonjour
Si je poste sur 2 forums c’est qu’à ce jour, je n’ai pas eu encore de réponse à cette question. Et si j’arrive à solutionner ce problème, cela permettra de joindre le lien vers la réponse pour aider, peut-être, des personnes qui recherchent une base de script pour la même fonction.

Si je n’ai pas annexé le fichier Excel en question, c’est que l’auteur l’interdit pour des droits d’auteur. Sinon je l’aurai déjà fait évidement…
C’est aussi pour cela, je l’espère, que j’ai détaillé au mieux le besoin.
Après il n’est pas impossible non plus que je puisse fournir un fichier avec des nombres dans les colonnes citées ci-dessus si cela peut aider…
 

Gégé-45550

XLDnaute Accro
Bonjour,
Dans une cellule libre de votre choix, la formule
VB:
=LIGNE(INDEX(AH6:AH25;EQUIV(XA65;AH6:AH25;0)))
renverra le numéro de la ligne ou est située la référence contenue dans la cellule XA65, je vous laisse écrire la suite pour la recopie qui n'a rien de compliqué.
Cordialement,
 

xorf

XLDnaute Nouveau

Bonjour,
Merci pour votre retour.
Effectivement cela retourne bien la ligne, merci pour cette base.
Néanmoins, je n'arrive pas à reformuler cela en VBA afin que la ligne soit la variable pour la recopie.
Je pense donc utiliser en VBA la recopie de formule afin d'afficher directement les valeurs cherchées dans les cellules concernées.
Par exemple quand : =LIGNE(INDEX(AH6:AH25;EQUIV(XA65;AH6:AH25;0))) ressort la ligne 16
J'aurai voulu par exemple recopier la valeur F16 dans une cellule.
J'ai tenté de me mettre dans la cellule concernée (où j veux afficher la valeur) et faire =F(LIGNE(INDEX(AH6:AH25;EQUIV(XA65;AH6:AH25;0)))) ce qui permettrait d'avoir plus simplement =F16 mais cela ne ressort pas la valeur de F16.

En VBA j'ai actuellement ça :
ActiveCell.FormulaR1C1 = _
"=ROW(INDEX(R[-48]C[25]:R[-29]C[25],MATCH(R[11]C[616],R[-48]C[25]:R[-29]C[25],0)))"

Il me manque le moyen de rajouter le F devant...

Et ensuite je multiplierai le code autant de fois que nécessaire pour afficher K(LIGNE), Q(LIGNE) etc....

Merci encore de votre aide
 

xorf

XLDnaute Nouveau
J'avais essayé mais cela ressort le texte brut "F16"

J'ai trouvé cette solution avec la formule INDIRECT

VB:
=INDIRECT("$F"&LIGNE(INDEX(AH6:AH25;EQUIV(XA65;AH6:AH25;0))))

Et là ça me retourne bien la valeur de F16
Il me reste plus qu'à intégrer cette formule dans chaque cellule par VBA avec l'enregistreur de macro et cela devrait être bon !

En tout cas, merci pour votre aide !
 

xorf

XLDnaute Nouveau
Bonsoir,

Si cela peut aider certains, un membre du forum Excel-Pratique m'a communiqué ce code qui fonctionne parfaitement :

VB:
Sub Recopie()
    Dim Valeur As Long, Pos As Long
    Application.ScreenUpdating = False
    Valeur = Range("XA65").Value
    Pos = Application.Match(Valeur, Range("AH6:AH25"), 0) + 5
    Range("AD65").Value = Range("F" & Pos).Value
    Range("AE65").Value = Range("K" & Pos).Value
    Range("AF65").Value = Range("N" & Pos).Value
    Range("AG65").Value = Range("Q" & Pos).Value
    Range("AH65").Value = Range("R" & Pos).Value
    Range("AI65").Value = Range("S" & Pos).Value
End Sub

Sujet résolu pour ma part.
 

Discussions similaires

Réponses
3
Affichages
227
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…