Bonjour à tous et à toutes,
Je retourne vers vous pour mon tout premier post dans un forum. dans le cadre de mon apprentissage je manipule le langage VBA pour la première fois dans mon cursus, et là je suis bloqué depuis lundi :? .
Mon problème est le suivant :
je manipule deux grands fichier excel : le premier INV le deuxième MARD, la colonne commune entre les deux c'est le n° de référence.
Aprés avoir effectuer des opérations de mise en page sur les des deux fichiers, j'essai de faire un Vlookup dans INV afin de récupérer la colonne des emplacements des références existant dans MARD.
à chaque inventaire on a un nouveau fichier INV et un nouveau fichier MARD. Le challenge que j'ai donc est de développer une macro avec des noms de fichier variable, qui pourra effectuer les mises en pages et le Vlookup sur chaque nouveau paire INV et MARD à chaque inventaire.
Pour cela, j'ai créer un UserForm dans le fichier INV qui affiche la liste des fichiers ouverts et qui demande au utilisateur de sélectionner le fichier MARD :
Une fois le fichier sélectionné ( et dans le code du bouton 'selectionner' dans la UserForm) je récupére le nom exacte du fichier MARD, et je l'active afin de faire ma mise en page et mon Vlookup :
La mise en page se passe bien, mais le Vlookup bloque, après plusieurs essaies, j'ai rencontré à chaque fois un de ces deux types de problème :
- soit il m'affiche une erreur #N/A (que je remplace par 0)
- soit il me sort une fenêtre pour pour parcourir le fichier à la main (chose qui me sert pas trop vu que j'ai plus de plus de 17 000 lignes :aie: )
voilà ma dernière tentative qui n'a pas marché non plus qui retourne 0 (#N/A) :
(je fais deux Vlookup car j'ai deux colonnes d'emplacement, une pour chaque magasin. WB_Pricipal est une variable workbook content le fichier INV)
J’espère que j'ai bien expliqué ce qui me prend la tête depuis lundi et je vous remercie d'avance pour votre aide.
Cordialement.
Je retourne vers vous pour mon tout premier post dans un forum. dans le cadre de mon apprentissage je manipule le langage VBA pour la première fois dans mon cursus, et là je suis bloqué depuis lundi :? .
Mon problème est le suivant :
je manipule deux grands fichier excel : le premier INV le deuxième MARD, la colonne commune entre les deux c'est le n° de référence.
Aprés avoir effectuer des opérations de mise en page sur les des deux fichiers, j'essai de faire un Vlookup dans INV afin de récupérer la colonne des emplacements des références existant dans MARD.
à chaque inventaire on a un nouveau fichier INV et un nouveau fichier MARD. Le challenge que j'ai donc est de développer une macro avec des noms de fichier variable, qui pourra effectuer les mises en pages et le Vlookup sur chaque nouveau paire INV et MARD à chaque inventaire.
Pour cela, j'ai créer un UserForm dans le fichier INV qui affiche la liste des fichiers ouverts et qui demande au utilisateur de sélectionner le fichier MARD :
Code:
Sub mac()
'Comptage des fenetres ouvertes
n = Application.Windows.Count
' Ecriture dans affichage
UserForm1.ListBox1.AddItem ("Liste des Classeurs ouverts")
For i = 1 To n
v = Application.Windows.Item(i).Caption
UserForm1.ListBox1.AddItem (v)
Next i
UserForm1.Show
End Sub
Une fois le fichier sélectionné ( et dans le code du bouton 'selectionner' dans la UserForm) je récupére le nom exacte du fichier MARD, et je l'active afin de faire ma mise en page et mon Vlookup :
Code:
Dim nom_fichier As String
nom_fichier = UserForm1.ListBox1.List(Index)
Workbooks(workbook_travail).Activate
La mise en page se passe bien, mais le Vlookup bloque, après plusieurs essaies, j'ai rencontré à chaque fois un de ces deux types de problème :
- soit il m'affiche une erreur #N/A (que je remplace par 0)
- soit il me sort une fenêtre pour pour parcourir le fichier à la main (chose qui me sert pas trop vu que j'ai plus de plus de 17 000 lignes :aie: )
voilà ma dernière tentative qui n'a pas marché non plus qui retourne 0 (#N/A) :
Code:
Dim a, b
b = ActiveSheet.UsedRange.Rows.Count
Dim plage1, plage2 As Range
Set plage1 = Application.Workbooks(nom_fichier).Worksheets("magasin_1").Columns("C:AS")
Set plage2 = Application.Workbooks(nom_fichier).Worksheets("magasin_2").Columns("C:AS")
WB_Principal.Activate
For a = 2 To b
Worksheets(1).Activate
If Cells(a, 2) <> "SLoc" And Cells(a, 2) <> "" Then
Cells(a, 5).Select
ActiveCell.FormulaR1C1 = _
"=IFERROR(application.VLOOKUP(RC[-2],plage2,43,FALSE),0)"
Worksheets(1).Activate
Cells(a, 4).Select
ActiveCell.FormulaR1C1 = _
"=IFERROR(application.VLOOKUP(RC[-1],plage1,43,FALSE),0)"
ElseIf Cells(a, 2) = "SLoc" Then Rows(a).Delete
End If
Next
(je fais deux Vlookup car j'ai deux colonnes d'emplacement, une pour chaque magasin. WB_Pricipal est une variable workbook content le fichier INV)
J’espère que j'ai bien expliqué ce qui me prend la tête depuis lundi et je vous remercie d'avance pour votre aide.
Cordialement.