Macro d'importation auto qui ne fonctionne pas
Bonjour à tous.
Je travaille sur l'importation automatique de lignes de données se trouvant dans un fichier source selon le department afin de pouvoir classer les notes de frais par department.
Voici la macro que j'ai tenté mais elle ne fonctionne malheureusement pas.
Sub Importation_par_département()
Application.Calculation = xlManual
Application.CutCopyMode = False
Selection.Copy
Workbooks.Open Filename:= _
"\\FILES\travail\Fichier source.xls"
Windows("Fichier source.xls").Activate
Sheets("France").Select
For Each c In Sheets("France").Range("B4:B3000")
If c.Value = "Finance" Then
c.Select
End If
Next c
Windows("Tri fournisseurs.xlsm").Activate
Sheets("Finance").Select
Range("A3").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Windows("Fichier source.xls").Activate
Application.CutCopyMode = False
ActiveWindow.Close
Windows("Tri fournisseurs.xlsm").Activate
End Sub
Je pense que le problem est dans la fonction select.
Ce que je souhaite c'est que la macré sélectionne toutes les lignes de A à L qui contiennent dans la colonne B le mot "Finance" pour ensuite les coller à la suite dans le fichier Tri fournisseurs.
Voilà si quelqu'un peut m'aider ?!
Merci d'avance
Bonjour
Apparemment, tu fais un coller (paste) sans avoir fait de copier (copy).
Mais si tu joignais ton fichier, le diagnostic pourrait être plus facile à établir et le remède suivre dans la foulée !
Bye !
Ah oui
Voici le fichier source et le fichier Tri fournisseurs.
Merci
Voici donc un essai, si j'ai bien compris ce que tu voulais faire.
Les 2 fichiers doivent être dans le même dossier.
Si ce n'est pas le cas, il te faudra un peu adapter. Mais attention : le nom du fichier source doit être strictement identique à celui utilisé dans la maro, y compris pour l'extension.
".xls" est différent de ".xlsx". Sinon => bug !
A te relire
Génial merci beaucoup c'est parfait !
Cela fonctionne top avec les fichiers d'exemple par contre lorsque j'adapte la macro pour les fichiers réels (deux dossiers différents) cela bug non pas à cause du chemin mais à cause de cette ligne apparemment :
For Each C In .Range("B2:B" & .Range("B" & Rows.Count).End(xlUp).Row)
Voici la macro adaptés ;
Option Explicit
Dim DocDép, Chemin, C, Lgn
Sub Importer_par_département()
Application.ScreenUpdating = False
Cells(2, "A").CurrentRegion.Offset(2, 0).ClearContents
Set DocDép = ActiveSheet
Chemin = "\\SRVGEFILES\travail\Suppliers\Extractions" & "\"
Workbooks.Open Filename:=Chemin & "Extraction EU.xls"
DocDép.Activate
With Workbooks("Extraction EU.xls").Sheets("Challenge")
For Each C In .Range("B2:B" & .Range("B" & Rows.Count).End(xlUp).Row)
If C.Value = "Finance" Then
.Range(C.Offset(0, -1), C.Offset(0, 5)).Copy '(lignes, colonnes)
Lgn = Cells(Rows.Count, "A").End(xlUp)(2).Row
Cells(Lgn, "A").PasteSpecial xlPasteAll
End If
Next C
End With
Cells(1, 1).Select
Windows("Extraction EU.xls").Activate
ActiveWindow.Close
End Sub
J'ai vérifié, le fichier source Extraction EU est bien un fichier xls.
J'ai modifié la ligne :
If C.Value = "Finance" Then
.Range(C.Offset(0, -1), C.Offset(0, 5)).Copy '(lignes, colonnes)
afin que la macro copie également les colonnes A et B.
Du coup je ne saisis pas mon erreur :/
Merci d'avance.
Bonjour
J'ai bien décelé une erreur dans ta modification(1) mais cela ne devrait pas empêcher la macro de marcher.
Essaie de joindre les 2 dossiers avec lesquels tu as le problème, en passant par http://www.cjoint.com s'il sont trop gros.
Je regarderai de plus près : pour corriger un bug, il faut pouvoir le reproduire...
A te relire.
(1) cette instruction :
.Range(C.Offset(0, -1), C.Offset(0, 5)).Copy '(lignes, colonnes)te fait copier des lignes vides. Il te faut :
.Range(C.Offset(0, -1), C.Offset(0, 3)).Copy '(lignes, colonnes)