RECHERCHV - MACRO Pb langage VBA

matoupitou

XLDnaute Occasionnel
:eek:
hello et grd merci à celle ou celui qui pourra m'aider,

voilà
dans les cellules d'un fichier (toujours de br3 à ci3) j'ai besoin de croiser avec un fichier qui se trouve sur le répertoire common et qui comporte 18 onglets et pas plus de 10000 lignes par onglets

je tente d'écrire une macro pour automatiser ce croisement récurrent car 10 fois par jour !:)
MAIS IL ME DEMANDE 18 FOIS D'OUVRIR LA TABLE MATRICE comment puis-je faire pour qu'il me le demande qu'UNE FOIS ?

ActiveCell.FormulaR1C1 = _
"=VLOOKUP(RC43,'H:\COMMON\DC OPERATIONS\BACK OFFICE OPERATIONS\CROISEMENTS (réfs op)\common\DC OPERATIONS\BACK OFFICE OPERATIONS\CROISEMENTS (réfs op)\[ref13_en_OS_année_encours.xlsm]1'!R1C1:R10000C2,2,FALSE)"
Columns("BR:CI").Select

sachant que j'ai saisi comme formule dans le fichier
=RECHERCHEV($AQ3;'H:\COMMON\DC OPERATIONS\BACK OFFICE OPERATIONS\CROISEMENTS (réfs op)\common\DC OPERATIONS\BACK OFFICE OPERATIONS\CROISEMENTS (réfs op)\[ref13_en_OS_année_encours.xlsm]1'!$A$1:$B$10000;2;FAUX)

dans l'idéal il faudrait que cela se recopie jusqu'à la dernière ligne présente (sinon programmation jusque ligne 1500)

c'est clair que j'ai besoin d'aide (pédagogie SVP car je ne maîtrise mais pas du tout le langage VBA)
MERCI MERCI MERCI!
 

titiborregan5

XLDnaute Accro
Re : RECHERCHV - MACRO Pb langage VBA

Bonjour matoupitou, le forum,

alors pour aller jusqu'à la dernière ligne non vide tu dois faire une boucle (par exemple avec for ... next) et ensuite lui dire de trouver la dernière ligne -->
Code:
for i = 1 to range("br65000").end(xlup).row 
cells(i,2).value=application.vlookup(valeur cherchée, matrice de recherche, n° colonne à renvoyer, true/false)
next

Sans fichier exemple même très simplifié difficile d'être plus précis!
 

matoupitou

XLDnaute Occasionnel
Re : RECHERCHV - MACRO Pb langage VBA

[/QUOTE]bonsoir titborregan5 et MERCI MERCI de vous intéresser à mon souci

je n'ai pas l'option "joindre un fichier" dans la réponse (comment faire UN NOUVEAU MESSAGE?)
le ref13 en opé est le fameau TABLE MATRICE (à 18 onglets) quant à l'autre c'est le document type que je dois utiliser pour rapatrier les infos contenues dans le 1er fichier





undefined


Bonjour matoupitou, le forum,

alors pour aller jusqu'à la dernière ligne non vide tu dois faire une boucle (par exemple avec for ... next) et ensuite lui dire de trouver la dernière ligne -->
Code:
for i = 1 to range("br65000").end(xlup).row 
cells(i,2).value=application.vlookup(valeur cherchée, matrice de recherche, n° colonne à renvoyer, true/false)
next

Sans fichier exemple même très simplifié difficile d'être plus précis![/QUOTE]
 

matoupitou

XLDnaute Occasionnel
Re : RECHERCHV - MACRO Pb langage VBA

recoucou c moi
désolée je'avais pas vu l'option répondre à la discussion avec son gros "+"

voici les fichiers
LE FICHIER ref13 EST LA TABLE MATRICE
LE FICHIER Matrice_ref_FO... est le fichier où j'aimerais rapatrier les infos des colonnes B des 18 onglets du 1er fichier (si possible via une macro) puisque je fais ça très très très souvent

c vrai que les onglet du fichier table matrice ne comportent pas tjrs le même nbre de lignes
en revanche sur le fichier matrice c tjrs au même endroit (j'ai saisi 1 2 3 4 etc... >18)
je croise les doigts pour que vous m'aidiez encore +

voilà où j'en suis
ch'tit rappel

ActiveCell.FormulaR1C1 = _
"=VLOOKUP(RC43,'H:\COMMON\DC OPERATIONS\BACK OFFICE OPERATIONS\CROISEMENTS (réfs op)\common\DC OPERATIONS\BACK OFFICE OPERATIONS\CROISEMENTS (réfs op)\[ref13_en_OS_année_encours.xlsm]1'!R1C1:R10000C2,2,FALSE)"
Columns("BR:CI").Select

sachant que je saisie comme formule
=RECHERCHEV($AQ3;'H:\COMMON\DC OPERATIONS\BACK OFFICE OPERATIONS\CROISEMENTS (réfs op)\common\DC OPERATIONS\BACK OFFICE OPERATIONS\CROISEMENTS (réfs op)\[ref13_en_OS_année_encours.xlsm]1'!$A$1:$B$10000;2;FAUX)
 

Pièces jointes

  • ref13_en_OS_année_encours.xlsm
    342.2 KB · Affichages: 68
  • matrice_ref_FO_croisopé_test.xlsx
    752.1 KB · Affichages: 70

titiborregan5

XLDnaute Accro
Re : RECHERCHV - MACRO Pb langage VBA

Bonjour,

il faut déjà que tu fasses ta boucle et ta recherchev pour la colonne correspondant à l'onglet 1.
Ensuite avec un offset(0,1 jusqu'à 17) tu feras tous les autres onglets!

Voici un exemple qu'on pourrait simplifier sur 3 points minimum:

  • un recherchev sur un classeur fermé (je ne sais pas faire de tête)
  • une boucle pour les onglets (corrigé)
  • et une plage mieux définie que colonne A & B ...

Sinon le code suivant marche, j'ai changé le nom de ton fichier où on recherche en ref13.
Code:
Sub recherchev()
ref = "C:\Documents and Settings\XXX.YYY\Bureau\ref13.xlsm" 'chemin du fichier
ref2 = "ref13.xlsm" 'nom du fichier


Application.DisplayAlerts = False
Workbooks.Open (ref)
ThisWorkbook.Activate

For i = 3 To Range("a65000").End(xlUp).Row

    For j = 70 To 87
        Cells(i, j).Value = Application.VLookup(Cells(i, 43).Value, Workbooks(ref2).Sheets(Cells(2, j)).Range("a:b").CurrentRegion, 2, False)
    Next
Next

Workbooks(ref2).Close
Application.DisplayAlerts = True
End Sub


Y a sûrement mieux mais en tout cas ça marche chez moi!
dis moi ce qu'il en est chez toi!
A+
 
Dernière édition:

matoupitou

XLDnaute Occasionnel
Re : RECHERCHV - MACRO Pb langage VBA

BAH SUIS TROP NULLE ça bug et là tt de suite suis découragée
la ligne mise en bleue doit être mal écrite AU SECOURS


Sub auto_rech_ref13()
'
' auto_rech_ref13 Macro
' croisemnt auto ref13 en opé sur matrice étape4

ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-27],'[ref13.xlsm]1'!C1:C2,2,FALSE)"
ActiveWindow.SmallScroll ToRight:=8
'
ref = "H:\COMMON\DC OPERATIONS\BACK OFFICE OPERATIONS\CROISEMENTS (réfs op)\ref13.xlsm"
ref2 = "ref13.xlsm" 'nom du fichier
Application.DisplayAlerts = False
Workbooks.Open (ref)
ThisWorkbook.Activate
For j = 70 To 87
Cells(i, j).Value = Application.VLookup(Cells(i, 43).Value, Workbooks(ref2).Sheets(Cells(2, j)).Range("a:b").CurrentRegion, 2, False) Next

For i = 3 To Range("a65000").End(xlUp).Row
Next

Application.DisplayAlerts = False
Workbooks.Open (ref)
ThisWorkbook.Activate
Workbooks(ref2).Close
Application.DisplayAlerts = True

End Sub
 

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16