VBA - RECHERCHEV multiples - Mettre à jour les valeurs
Bonjour,
Avant tout je vous remercie d'avance pour l'attention portée sur ce problème.
Je précise maintenant que je n'ai débuté que récemment la création de Macro via VBA, et que n'ayant pas trouvé de solution, je me permets de créer cette discussion.
Comme le précise le titre, mon but est de créer une série de RECHERCHEV (5 par lignes sur environ 3000 lignes), puisant les informations dans un autre classeur Excel que l'on sélectionne.
J'ai tenté de résoudre le problème par deux approches, aucune ne m'apportant satisfaction.
==
Dans un premier temps, j'essaie de sélectionner le fichier via :
Dim fd As FileDialog
Set fd = Application.FileDialog(msoFileDialogFilePicker)
Dim vrtSelectedItem As Variant
With fd
.AllowMultiSelect = False
If .Show = -1 Then
For Each vrtSelectedItem In .SelectedItems
Range("AB1") = vrtSelectedItem
Next
Else
End If
End With
Set fd = NothingEdit modo : code mis entre balises, merci d'y faire attention la prochaine fois
Puis plus loin de l'utiliser dans mes cellules :
Range("Q" & MACROLIGNE & "").FormulaLocal = "=SI($J" & MACROLIGNE & "="""";"""";SI(ESTNA(RECHERCHEV($J" & MACROLIGNE & ";'AB1'!$J$1:$AA$15000;8;0))=VRAI;"""";RECHERCHEV($J" & MACROLIGNE & ";'AB1'!$J$1:$AA$15000;8;0)))"MACROLIGNE étant une variable qui s'incrémente de 1 dans une boucle pour passer d'une ligne à l'autre.
Dans les faits, la formule finale fonctionne mais à chaque cellule qui doit faire la RECHERCHEV, on me demande de sélectionner à partir de quel fichier il doit mettre à jour les valeurs.
Ce qui peut être long à raison de 5 formules par ligne sur plus de 3000 lignes.
==
J'ai tenté donc de tricher en proposant une INPUTBOX dans laquelle on renseigne le mois et l'année pour le nom du fichier du dernier tableau à partir duquel pomper les informations.
Puisqu'on garde la même terminologie des fichiers d'un mois sur l'autre :
MOIS_TABLEAU_N_MOINS_1 = InputBox("Avec quel mois voulez-vous comparer ?" & vbCrLf & "(ATTENTION : SEUL FORMAT POSSIBLE MM-AA)", "MOIS DU TABLEAU PRECEDENT", "MM-AA")Puis d'utiliser cette valeur dans les cellules :
Range("Q" & MACROLIGNE & "").FormulaLocal = "=SI($J" & MACROLIGNE & "="""";"""";SI(ESTNA(RECHERCHEV($J" & MACROLIGNE & ";'[FICHIER EXEMPLE " & MOIS_TABLEAU_N_MOINS_1 & ".xlsx]Sheet1'!$J$1:$AA$15000;8;0))=VRAI;"""";RECHERCHEV($J" & MACROLIGNE & ";'[FICHIER EXEMPLE " & MOIS_TABLEAU_N_MOINS_1 & ".xlsx]Sheet1'!$J$1:$AA$15000;8;0)))"J'en suis arrivé à cette possibilité après avoir utilisé l'enregistreur de Macro.
Là, excellent je me dis, car il ne me demande plus de mettre à jour les valeurs.
(Si seulement
Mais si j'essaie de prendre un autre mois (par exemple 12-22 au lieu de 01-23) qu'avec lequel j'ai fait la première RECHERCHEV, il me demande de nouveau de mettre à jour ces données.
==
Voilà où j'en suis.
S'il y a un coup de patte là-dessus, ce serrait sans refus.
Bien cordialement.
Bonjour M4X1M3 et
Une petite présentation ICI serait la bienvenue
Ensuite je vous invite à lire :
- La charte du forum
Dans laquelle est indiqué :
1) de poster sur le bon forum (sujet déplacé)
2) qu'il est préférable de joindre un fichier anonymisé
3) de mettre le code entre balises grâce au bouton
4) de clôturer le fil quand vous aurez eu la solution
- Quelques fonctionnalités du forum à connaître
Merci pour votre participation
Cordialement
Bonjour BrunoM45.
Merci pour les infos, et d'avoir placé le sujet (j'ai tenté de faire au mieux).
Je ne sais pas par quel miracle, mais la deuxième macro a porté ses fruits après l'avoir réécrit une n-ième fois (il ne me demande plus qu'une seule fois le fichier dans lequel rechercher les données).
Je vais donc clore le post ici.
Merci encore, et à bientôt.