Redistribution d'un tableau sur d'autres classeurs
Bonjour à tous,
Je suis en stage dans une entreprise et j'ai été chargé de simplifier la vie à l'un des employés qui recense des pannes de machines dans le monde (et il en a beaucoup).
Voila en gros le problème :
Je dispose d'un classeur "New Failed Boards" avec un tableau recensant toutes les machines tombées en panne l'année passée avec leur modèle (colonne A), le lieu et la date de panne entre autres.
Je dispose d'un autre classeur "Cartes en panne" avec une feuille par modèle de machine (la feuille porte le nom du modèle), chaque feuille recensant les machines tombées en panne par le passé.
Et je souhaite que les données de mon classeur "New Failed Boards" aillent automatiquement à la suite du tableau correspondant (si une machine est de tel modèle, elle va dans la feuille correspondante, à la suite de celles qui y figurent déjà).
Ensuite il faudra tracer des graphes pour chaque modèle, mais c'est une autre affaire.
Pour faire ça, je me suis lancé dans la création d'une macro mais je n'ai que quelques connaissances en C et Maple, alors le VBA a du mal à rentrer dans ma tête (malgré tous les tutos que j'ai trouvé) ! En particulier j'ai du mal à accepter le fait qu'on ne déclare presque jamais les variables d'une macro...
J'espère que mon explication était plus ou moins clair. Merci d'avance à vous !
Voilà ce que j'ai fais, soyez indulgent avec moi svp :?
Code:
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
| Sub Repartir2()
For Each F In Workbooks("Cartes en panne")
Dim p As Object
Dim i As Integer
p = FirstEmpty(F)
i = 2
While Not IsEmpty(Workbooks("New Failed Boards").Worksheets("Feuil1").Cells(i, A))
If Workbooks("New Failed Boards").Worksheets("Feuil1").Cells(i, A).Value = F.Name Then
p.Value = Workbooks("New Failed Boards").Worksheets("Feuil1").Cells(i, A).Value
'Il faudra rajouter les cases en B,C,D,E,F pour copier toute la ligne
Selection.Offset(1, 0).Activate
End If
Wend
Next
End Sub
Private Function FirstEmpty(ByVal feuille As Object) As Object
Worksheets("feuille").Range("A1").Select
Do While Not (IsEmpty(ActiveCell))
Selection.Offset(1, 0).Select
Loop
End Function |