Bonjour à tous,

Je vous pose le contexte :
* 1 fois par semaine, une collègue fait un extraction BO pour un avoir la "descente de portefeuille" (*) au format xls.
* Pour les chantiers déjà existant, elle fait une recherchev qui pointe sur la "descente de portefeuille" de la semaine passée afin de récupérer des calculs déjà faits.
* Pour les nouveaux chantiers, elle fait ses calculs.
* Q. Comment applique-t-elle sa recherchev ?
R. Elle copie sa formule sur la 1ère cellule concernée d'une colonne puis l'applique sur les cellules qui suivent dans la même colonne.

C'est chronophage et elle doit faire cela sur plusieurs colonnes.
Difficulté supplémentaire = le nombre de ligne de ce tableau n'est pas fixe ; cela varie selon les semaines.

(*) descente de portefeuille = suivi des avancées chantiers basé sur un numéro de dossier


J'aimerais lui faire gagner du temps de traitement et j'ai pensé à un script vba sauf que je suis une bille (ou une bite, c'est comme tu veux) (**)
L'objectif de ce script est de :
* aller chercher une valeur dans un autre fichier excel (colonne 32), là ou le numéro de chantier est le même (colonne 1) et l'appliquer sur la colonne 32 du nouveau fichier
* appliquer cette recherche / application tant qu'un numéro de chantier existe en colonne 1 du nouveau fichier
* une fois que toutes les valeurs sont appliquées, vider les cellules en erreur ou dont la valeur = 0


Si vous pouviez m'apporter la solution sur un plateau d'argent, ce serait géantissime.
A défaut, si vous pouviez m'aiguiller, je serai très heureux aussi


Modification :
J'ai oublié de préciser que j'ai fait un enregistrement macro comme suit :
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
17
18
19
20
21
Sub LYCOS()
'
' LYCOS Macro
'       RechercheV
'            correspondance entre numero de dossier colonne A de la descente de portefeuille semaine passee et semaine en cours
'            insertion des valeurs dans les colonnes AF AG et AG
'            application jusqu'aux cellules ligne 400
'
 
'
    ActiveCell.FormulaR1C1 = _
        "=IFERROR(VLOOKUP(RC[-31],'D:\TESTDDP\Ancien\[DDPOLD.xls]descente de P'!R10C1:R400C37,32,FALSE),"""")"
    Range("AG10").Select
    ActiveCell.FormulaR1C1 = _
        "=IFERROR(VLOOKUP(RC[-32],'D:\TESTDDP\Ancien\[DDPOLD.xls]descente de P'!R10C1:R400C37,33,FALSE),"""")"
    Range("AH10").Select
    ActiveCell.FormulaR1C1 = _
        "=IFERROR(VLOOKUP(RC[-33],'D:\TESTDDP\Ancien\[DDPOLD.xls]descente de P'!R10C1:R400C37,34,FALSE),"""")"
    Range("AF10:AH10").Select
    Selection.AutoFill Destination:=Range("AF10:AH400"), Type:=xlFillDefault
End Sub
Cet enregistrement ne me satisfait pas dans le sens où il ne prend pas en compte les différences de nombres de lignes selon les fichiers ; il s'applique jusqu'à la ligne 400, que les lignes soient alimentées ou non.

En plus, le fichier peut évoluer (ajout/suppr de colonnes) et je ne sais pas comment faire pour que la recherche se fasse par rapport à un nom de colonne au lieu des numérotations
Par ex, le 1er IfError concerne la colonne 32 (AF, nommée ETUDE), le 2nd est pour la colonne 33 (AG, nommée EXE) et le dernier pour la colonne 34 (AH, nommée MARCHE)