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.
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.