J'ai besoin d'un macro pour remplir un tableau dans la feuille 2 à partir d'un autre tableau excel dans la feuille 1 selon deux critére Poste de travail 1;2;3 et ligne 1;2;3;5;6;7;8;9;10.
Merci d'avance pour votre aide.
J'ai besoin d'un macro pour remplir un tableau dans la feuille 2 à partir d'un autre tableau excel dans la feuille 1 selon deux critére Poste de travail 1;2;3 et ligne 1;2;3;5;6;7;8;9;10.
Merci d'avance pour votre aide.
bonjour et bienvenue ATEF
Pourquoi ne pas faire avec un TCD avec comme segment la poste et la ligne surtout que normalement tu maîtrise pas VBA ??
Aussi je constate que don ton fichier exemple tu n'as que l5 et l6
Aussi est il nécessaire de faire des tableaux avec chaque fois 7 et exactement 7 lignes ?? d'ailleurs si je filtre Equipe 1 et L5 je trouve 74 employés comment faire dans ce cas ??
Je pense aussi à l'historique des affectation .....
Je crois qu'avant d'entamer la programmation il faut bien penser à tes besoins futurs et actuels
BONNE CONTINUATION
Je veux le faire avec VBA car c'est pas à moi de la manipuler.
Merci pour pour votre réponse.
Rebonjour ATEF , la forum
beaucoup de question lors de ma précédente intervention reste sans réponse dont la structure de tes tableaux qui vont recevoir les données qui réponds aux deux conditions
Mais le principe en général, à mon modeste avis (à adapter pour tes besoins) :
un userform et un bouton de commande ; choisir l'équipe en combobox1 et la ligne en combobox2 puis cliquer sur le bouton de commande
( filtrer et envoyer les données)
NB : je suis autodidacte et débutant donc à tester avec prudence
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 Private Sub CommandButton1_Click() Dim F1 As Worksheet Dim F2 As Worksheet Set F1 = Sheets("EMPLOYE") Set F2 = Sheets("AFFECTATION") Application.ScreenUpdating = False derlig = F2.Range("B" & Rows.Count).End(xlUp).Row derlig2 = F1.Range("A" & Rows.Count).End(xlUp).Row If derlig >= 10 Then F2.Range("B10:F" & derlig).ClearContents With F1 If Not .AutoFilter Is Nothing Then If .FilterMode Then .ShowAllData .AutoFilter.Range.AutoFilter End If i = .Cells(Rows.Count, 1).End(xlUp).Row .Range("A1:E" & i).AutoFilter Field:=4, Criteria1:=ComboBox1.Value .Range("A1:E" & i).AutoFilter Field:=5, Criteria1:=ComboBox2.Value F2.Activate F1.Range("A2:B" & derlig2).SpecialCells(xlCellTypeVisible).Copy Destination:=F2.Range("B10") End With F2.Cells(3, 4) = Date F2.Cells(5, 4) = ComboBox1.Value F2.Cells(7, 4) = ComboBox2.Value F1.Range("A1:E" & derlig2).AutoFilter Field:=1 F2.Select Application.ScreenUpdating = True End Sub Private Sub UserForm_Initialize() Dim F1 As Worksheet Dim F2 As Worksheet Set F1 = Sheets("EMPLOYE") Set F2 = Sheets("AFFECTATION") With F1 If Not .AutoFilter Is Nothing Then If .FilterMode Then .ShowAllData .AutoFilter.Range.AutoFilter End If End With Dim i As Integer For i = 2 To F1.Range("D65536").End(xlUp).Row ComboBox1 = F1.Range("D" & i) ComboBox2 = F1.Range("E" & i) If ComboBox1.ListIndex = -1 Then ComboBox1.AddItem F1.Range("D" & i) If ComboBox2.ListIndex = -1 Then ComboBox2.AddItem F1.Range("E" & i) Next i ComboBox1.Value = "" ComboBox2.Value = "" End Sub
Merci pour votre réponse
mais ça affiche l'erreur en image ci-joint
bonjour
avez vous changer le nom des onglets??
feuil1 et feuil2 ??
Partager