VBA - Tri conditionnel & copie dans un autre fichier
Bonjour Mesdames, Messieurs,
Aujourd'hui est un grand jour puisque, après tant de fichiers analysés à la mains, je me révolte. Aujourd'hui, je me lance dans la programmation VBA.
Je vous explique ma mission :
J'ai dans un dossier A à l'adresse suivante C:\Users\hadri\OneDrive\Bureau\Daher\Quality\33B6658\BeforeToolUpdate\ qui contient un ensemble de fichiers .xlsm, possédant tous la même structure.
Dans un autre dossier, j'ai un fichier Analysis4C à l'adresse suivante "C:\Users\hadri\OneDrive\Bureau\Daher\Quality\Analysis\Analysis4C.xlsm".
Je voudrais créer une macro qui :
- Ouvre le premier fichier du Dossier A en feuille "Form 3 EN9102"
- Si J173 est non vide :
_ouvrir fichier Analysis4C
_dans la première case vide de la colonne A, insérer le nom du fichier (étape que je n'ai pas du tout réussi à coder)
_ Copier A173
_ Coller A173 dans fichier Analysis4C dans la première case vide de la colonne B
_ Copier C173
_Coller C173 dans fichier Analysis4C dans la première case vide de la colonne C
_ Copier G173
_Coller G173 dans fichier Analysis4C dans la première case vide de la colonne D
_ Copier J173
_Coller J173 dans fichier Analysis4C dans la première case vide de la colonne E
- Ouvre le second fichier du Dossier A en feuille "Form 3 EN9102"
Je vais finalement récupérer un fichier Analysis4C contenant toutes les lignes des fichiers du dossier A où J173 n"est pas vide.
La tambouille que j'ai préparée :
Sub BoucleFichiers()
Dim Chemin As String, Fichier As String
Dim wB As Workbook 'Analysis4C
Set wB = Workbooks.Open(Filename:="C:\Users\hadri\OneDrive\Bureau\XXX\Quality\Analysis\Analysis4C.xlsm")
'Définit le répertoire contenant les fichiers
Chemin = "C:\Users\hadri\OneDrive\Bureau\XXX\Quality\33B6658\BeforeToolUpdate\"
'Boucle sur tous les fichiers xlsm du répertoire.
Fichier = Dir(Chemin & "*.xlsm")
Do While Len(Fichier) > 0
'écrit le résultat dans la fenêtre d'exécution (Ctrl+G)
Debug.Print Chemin & Fichier
Fichier = Dir()
Sheets("Form 3 EN9102 (EN)").Select 'séléction feuille FORM 3
If IsEmpty(Range("J173").Value) = False Then 'Si non conformité détéctée dans L173
Range("A173").Select 'Séléctionne cases appropriées L173
Selection.Copy 'copie cellule A173
wB.Open 'ouvrir fichier Analysis4C
Selection.Paste (Range("B2").End(xlDown).Offset(1).Select) 'coller sur première cellule vide en B
wB.Close 'fermer fichier Analysis4C
Range("C173").Select 'Séléctionne cases appropriées L173
Selection.Copy 'copie cellule C173
wB.Open 'ouvrir fichier Analysis4C
Selection.Paste (Range("C2").End(xlDown).Offset(1).Select) 'coller sur première cellule vide en B
wB.Close 'fermer fichier Analysis4C
Range("G173").Select 'Séléctionne cases appropriées L173
Selection.Copy 'copie cellule G173
wB.Open 'ouvrir fichier Analysis4C
Selection.Paste (Range("D2").End(xlDown).Offset(1).Select) 'coller sur première cellule vide en B
wB.Close 'fermer fichier Analysis4C
Range("J173").Select 'Séléctionne cases appropriées L173
Selection.Copy 'copie cellule J173
wB.Open 'ouvrir fichier Analysis4C
Selection.Paste (Range("E2").End(xlDown).Offset(1).Select) 'coller sur première cellule vide en B
wB.Close 'fermer fichier Analysis4C
End If
Loop
End Sub
Je suis certain que je commets des erreurs sur la syntaxe, et peut être même des atrocités sur la philosophie de VBA.
Je suis preneur de toute aide, sur une partie ou le tout.
Je vous remercie d'avoir pris le temps de me lire.