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

18fichier-source.xlsx (10.26 Ko)

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

22fichier-source.xlsx (10.26 Ko)

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)
Rechercher des sujets similaires à "macro importation auto qui fonctionne pas"