resolu Macro recherchev avec base de données sur une feuille distincte

chris6999

XLDnaute Impliqué
Bonsoir

Encore une question sur les macros recherchev.
J'ai trouvé pleins de fils intéressant mais malheureusement rien qui corresponde à mes attentes.

J'ai une feuille "liste" que je souhaiterais alimenter avec les données de la feuille "BD Identifiants" à partir d'une critère commun.
Ce critère se trouve dans la colonne C ( critère identifiant) dans la feuille "Liste " et également dans la colonne K de ma base de données "BD Identifiants".
Le but est de compléter les valeurs pour chaque ligne correspondante comme suit :
Dans liste colonne H (ou 8) Renvoie valeur colonne C (ou3)
Dans liste colonne I (ou 9) Renvoie valeur colonne D (ou 4)
Dans liste colonne J (ou 10) Renvoie valeur colonne G (ou 7)
Dans liste colonne K (ou 11) Renvoie valeur colonne P (ou 16)

Et ceci pour chaque ligne lorsque la colonne A est non vide

Lorsque le critère commun n'existe pas alors ne rien compléter

Je ne sais pas si c'est possible car le critère commun dans "BD identifiants" se trouve derrière ou devant les valeurs des colonnes recherchées.

Quelqu'un peut-il m'aider. Je joins bien sûr un fichier qui vaut mieux que de grands discours.

Merci d'avance
Cordialement et bonne soirée
 

Pièces jointes

  • TEST MACRO RECHERCHEV.xls
    642 KB · Affichages: 81
  • TEST MACRO RECHERCHEV.xls
    642 KB · Affichages: 76
  • TEST MACRO RECHERCHEV.xls
    642 KB · Affichages: 69
Dernière édition:

Regueiro

XLDnaute Impliqué
Re : Macro recherchev avec base de données sur une feuille distincte

Bonsoir Le Forum, Chris6999
Transforme tes données de la feuille "bd identifiants" en Tableau
Ensuite sur la Feuille "Liste"
En H4 à tirer vers le bas
Code:
=INDEX(Tableau1[A positionner dans liste colonne  H (ou 8)];EQUIV($C4;Tableau1[Critère correspondance];0))

En I4 à tirer vers le bas
Code:
=INDEX(Tableau1[A positionner dans liste colonne I (ou 9)];EQUIV($C4;Tableau1[Critère correspondance];0))

Tu adaptes pour les autres
A+
 

chris6999

XLDnaute Impliqué
Re : Macro recherchev avec base de données sur une feuille distincte

Bonjour Regueiro et merci pour ta réponse mais c'est un code VB que je recherche et non une formule.
Je te souhaite une bonne journée



Bonsoir Le Forum, Chris6999
Transforme tes données de la feuille "bd identifiants" en Tableau
Ensuite sur la Feuille "Liste"
En H4 à tirer vers le bas
Code:
=INDEX(Tableau1[A positionner dans liste colonne  H (ou 8)];EQUIV($C4;Tableau1[Critère correspondance];0))

En I4 à tirer vers le bas
Code:
=INDEX(Tableau1[A positionner dans liste colonne I (ou 9)];EQUIV($C4;Tableau1[Critère correspondance];0))

Tu adaptes pour les autres
A+
 

Staple1600

XLDnaute Barbatruc
Re : Macro recherchev avec base de données sur une feuille distincte

Bonjour à tous


chris6999
Une formule peut s'utiliser dans une macro.
Tu as les formules désormais, à toi de jouer maintenant,chris ;)
En t'inspirant de cette petit macro ci-dessous
(et avec le concours de l'enregistreur de macros)
Code:
Sub FormulesEtVBA()
Dim DerLig&
DerLig = 9
Range(Cells(1, "A"), Cells(DerLig, "A")).Formula = "=ROW()^ROW()"
Range(Cells(1, "B"), Cells(DerLig, "B")).FormulaLocal = "=AUJOURDHUI()+LIGNE()"
Range(Cells(1, "C"), Cells(DerLig, "C")).FormulaR1C1 = "=RC[-2]/100"
End Sub
 

chris6999

XLDnaute Impliqué
Re : Macro recherchev avec base de données sur une feuille distincte

Bonjour Staple

J'ai suivi tes conseils et enregistrer ma formule en VBA et cela fonctionne nickel.
C'est juste merveilleux

Merci encore


Sub test()

Dim DerLig&
DerLig = 500
Range(Cells(4, "G"), Cells(DerLig, "G")).Formula = "=IF(RC[-6]="""","""",IF(ISERROR(VLOOKUP(RC3,'bd identifiants'!R1C1:R700C23,5,0)),0,VLOOKUP(RC3,'bd identifiants'!R1C1:R700C23,5,0)&"" ""&VLOOKUP(RC3,'bd identifiants'!R1C1:R700C23,4,0)))"
Range(Cells(4, "H"), Cells(DerLig, "H")).Formula = "=IF(RC[-6]="""","""",IF(ISERROR(VLOOKUP(RC3,'bd identifiants'!R1C1:R700C23,8,0)),0,VLOOKUP(RC3,'bd identifiants'!R1C1:R700C23,8,0)))"
Range(Cells(4, "I"), Cells(DerLig, "I")).Formula = "=IF(RC[-6]="""","""",IF(ISERROR(VLOOKUP(RC3,'bd identifiants'!R1C1:R700C23,17,0)),0,VLOOKUP(RC3,'bd identifiants'!R1C1:R700C23,17,0)))"

End Sub
 
Dernière édition:

chris6999

XLDnaute Impliqué
Re : Macro recherchev avec base de données sur une feuille distincte

Bonjour néné06 et merci pour ce code qui colle pile poil avec ce que je recherche.
Toutefois il ne semble pas fonctionner car j'utilise Excel 2003.
J'ai pourtant converti le fichier...
Dommage et merci encore
 

néné06

XLDnaute Accro
Re : Macro recherchev avec base de données sur une feuille distincte

Re,

Il n'y a pas de raison pour qu'il ne tourne pas sur 2003 ?

Retestes avec cette feuille !

A+

René
 

Pièces jointes

  • TEST MACRO RECHERCHEVbis.xls
    313 KB · Affichages: 59
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Macro recherchev avec base de données sur une feuille distincte

Re

Une formule* inscrite en VBA
(inspirée par la solution VBA de néné06 que je salue au passage ;))
Code:
Sub FormulesEnVBAbis()
Dim cols, i&
cols = [{"C","D","G","P"}]
Sheets("bd identifiants").Range("K2:K563").Name = "IDENT"
For i = 1 To 4
Sheets("Liste").Cells(4, "G").Offset(, i).Resize(100).FormulaR1C1 = "=INDIRECT(""'bd identifiants'!" & CStr(cols(i)) & """" & "&MATCH(RC3,IDENT,0))"
Next i
End Sub

A peaufiner, finaliser... ou pas ;)
 

chris6999

XLDnaute Impliqué
Re : Macro recherchev avec base de données sur une feuille distincte

Merci Staple1600

Re

Une formule* inscrite en VBA
(inspirée par la solution VBA de néné06 que je salue au passage ;))
Code:
Sub FormulesEnVBAbis()
Dim cols, i&
cols = [{"C","D","G","P"}]
Sheets("bd identifiants").Range("K2:K563").Name = "IDENT"
For i = 1 To 4
Sheets("Liste").Cells(4, "G").Offset(, i).Resize(100).FormulaR1C1 = "=INDIRECT(""'bd identifiants'!" & CStr(cols(i)) & """" & "&MATCH(RC3,IDENT,0))"
Next i
End Sub

A peaufiner, finaliser... ou pas ;)
 

Regueiro

XLDnaute Impliqué
Re : Macro recherchev avec base de données sur une feuille distincte

Bonsoir Le Forum, Chris6999
Alors une Formule en VBA avec tableau.

Code:
Sub Remplir3()
Dim lig&
lig = Cells(4, "A").End(xlDown).Row
With Range(Cells(4, "H"), Cells(lig, "H")).Resize(, 4)
.FormulaR1C1 = "=IF(RC3<>"""",INDEX(Tableau1,MATCH(RC3,Tableau1[Critère correspondance],0),MATCH(R2C,Tableau1[#Headers],0)),"""")"
.Value = .Value
End With
End Sub
A+
bonne Soirée
Ton fichier en retour avec plusieurs variantes
 

Pièces jointes

  • XLD_Macro-recherchev.xlsm
    103.1 KB · Affichages: 41

Discussions similaires

Statistiques des forums

Discussions
312 215
Messages
2 086 333
Membres
103 188
dernier inscrit
evebar