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 :
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 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
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 ?
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
Merci par avance du temps que vous m'accroderez![]()
Partager