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

Microsoft 365 VBA - RECHERCHEV multiples dans un autre classeur sélectionné

M4x1m3

XLDnaute Nouveau
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, aucunes 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 = Nothing

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 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.
 
Solution
Bonjour,

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.

M4x1m3

XLDnaute Nouveau
Bonjour,

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.
 

Discussions similaires

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