Bonjour,

je suis tout nouveau sur le forum, je l'ai pas mal parcouru mais je n'arrive pas à avoir réponse à mon problème :/

En fait, je réalise un registre dans lequel je viens intégrer des données dans un registre (nommé registre_traitement.xls) en provenance de fichiers sources ayant toujours la même structure (nommé fichier_traitement.xls). A partir du registre, j'ai créé un bouton affecté à une macro permettant d'aller sélectionner le fichier désiré.

Or, chacun des fichiers sources doivent s'incrémenter sur une ligne différente de mon fichier registre et là je bloque. Cela fait maintenant quelques jours que je passe à écumer les forums et les aides mais en vain

Donc si vous pouviez me mettre sur la voie, ce serait bien aimable à vous !

Je vous joint mon code afin que vous visualisiez mieux ce que je souhaite faire (j'ai coupé une bonne partie du code car redondant mais le principe est là !) :

Mon 1er essai :


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
Sub import_fiche()
 
Dim Fichier_Travail As String, Fichier As String
Dim Msg, Style, Title, Help, Ctxt, Response, MyString
 
ChDrive CHEMIN
 
'Set une variable qui va contenir le nom et le chemin du fichier à ouvrir.
Fichier = Application.GetOpenFilename(", *xlWindows", 0, "Sélectionner le ficher de traitement souhaité") 
 
'Test si un fichier a été sélectionné
If Fichier = "Faux" Then
    Msg = "Aucun fichier de traitement sélectionné"    ' Définit le message.
    Style = vbOKOnly    ' Définit les boutons.
    Title = "Abandon de la procédure !"    ' Définit le titre.
    ' Affiche le message.
    Response = MsgBox(Msg, Style, Title)
    Exit Sub 'Sort de la macro puisqu'aucun fichier n'a été sélectionné
Else 'Sinon, on ouvre le fichier sélectionné
      Workbooks.OpenText Filename:=Fichier
    Fichier_Travail = ActiveWorkbook.Name 'On donne à une variable le nom de ce fichier qu'on vient d'ouvrir.
End If
 
End Sub
Sub import_donnees_2()
'
'
'Reprise de la macro d'import de la fiche
    Application.Run "Registre_traitements.xls!import_fiche"
'
'
'--------------------------------------------------------------------------
 
'
'Sélection de la case N° de traitement
    Range("C30").Select
    Selection.Copy
'Sélection du registre et de la case N° de traitement
    Windows("Registre_traitements.xls").Activate
    n = Range("A8").End(xlDown).Row + 1
    MsgBox "Il serait judicieux de considérer la ligne " & n
    Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
'________________________________________________________________
 
'Sélection de la fiche et de la case Nom
    Windows("Fiche_traitement.xls").Activate
    Range("C31").Select
    Application.CutCopyMode = False
    Selection.Copy
'Sélection du registre et de la case pour la copie du Nom
    Windows("Registre_traitements.xls").Activate
    Range("B8:C8").Select
    ActiveSheet.Paste
 
 
'--------------------------------------------------------------------------
'Fermeture de la fiche de traitement et mise en avant du registre
    Windows("Fiche_traitement.xls").Close
    Windows("Registre_traitements.xls").Activate
End Sub
Après quelques heures de recherches j'ai aboutit à ceci mais qui ne m'avance pas plus car rien ne fonctionne ...


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
Sub import_fiche()
Dim Fichier_Travail As String, Fichier As String
Dim Msg, Style, Title, Help, Ctxt, Response, MyString
 
ChDrive CHEMIN
 
Fichier = Application.GetOpenFilename(", *xlWindows", 0, "Sélectionner le ficher de traitement souhaité")
 
'Test si un fichier a été sélectionné
If Fichier = "Faux" Then
    Msg = "Aucun fichier de traitement sélectionné"    ' Définit le message.
    Style = vbOKOnly    ' Définit les boutons.
    Title = "Abandon de la procédure !"    ' Définit le titre.
    ' Affiche le message.
    Response = MsgBox(Msg, Style, Title)
    Exit Sub 'Sort de la macro puisqu'aucun fichier n'a été sélectionné
Else 'Sinon, on ouvre le fichier sélectionné
      Workbooks.OpenText Filename:=Fichier
    Fichier_Travail = ActiveWorkbook.Name 'On donne à une variable le nom de ce fichier qu'on vient d'ouvrir.
End If
 
End Sub
Sub import_donnees_2()
'
'
'Reprise de la macro d'import de la fiche
    Application.Run "Registre_traitements.xls!import_fiche"
'
'
'--------------------------------------------------------------------------
Dim wb_source As Workbook
      Dim wb_target As Workbook
      Dim ws_source As Worksheet
      Dim ws_target As Worksheet
      Dim ln_target As Range
 
      Set wb_source = Workbooks.Open("C:\Documents and Settings\...\Fiche_traitement.xls")
      Set wb_target = ActiveWorkbook
 
      ' On ne considère que la première feuille de chaque classeur
      Set ws_source = wb_source.Worksheets(1)
      Set ws_target = wb_target.Worksheets(1)
 
 
    Set ln_target = wb_target.Worksheets(1).Cells(8, 1).End(xlDown).Offset(1).EntireRow
    ln_target.Cells("A8").Value = wb_source.Range("C30").Value
    Set ln_target = wb_target.Worksheets(1).Cells(8, 2).CurrentRegion.SpecialCells(xlCellTypeLastCell).Offset(1).EntireRow
    ln_target.Cells("B8:C8").Value = ws_source.Range("C31").Value
    Set ln_target = wb_target.Worksheets(1).Cells(8, 4).CurrentRegion.SpecialCells(xlCellTypeLastCell).Offset(1).EntireRow
    ln_target.Cells("D8:E8").Value = ws_source.Range("C32").Value
    Set ln_target = wb_target.Worksheets(1).Cells(8, 6).CurrentRegion.SpecialCells(xlCellTypeLastCell).Offset(1).EntireRow
    ln_target.Cells("F8:G8").Value = ws_source.Range("C33").Value
    Set ln_target = wb_target.Worksheets(1).Cells(8, 8).CurrentRegion.SpecialCells(xlCellTypeLastCell).Offset(1).EntireRow
    ln_target.Cells("H8").Value = ws_source.Range("C34").Value
    Set ln_target = wb_target.Worksheets(1).Cells(8, 9).CurrentRegion.SpecialCells(xlCellTypeLastCell).Offset(1).EntireRow
    ln_target.Cells("I8:J8").Value = ws_source.Range("C35").Value
    Set ln_target = wb_target.Worksheets(1).Cells(8, 11).CurrentRegion.SpecialCells(xlCellTypeLastCell).Offset(1).EntireRow
    ln_target.Cells("K8:L8").Value = ws_source.Range("C36").Value
 
 
'Fermeture de la fiche de traitement et mise en avant du registre
    Windows("Fiche_traitement.xls").Close
    Windows("Registre_traitements.xls").Activate
End Sub
Et je n'arrive pas non plus à définir un nom de fichier source variable : ils seront tous de la forme Fiche_traitement_*.xls. Comment faire ceci ?

Merci par avance du temps que vous m'accroderez