Bonjour les amis svp j'ai encore besoin de votre aide svp sur le méme projet
1)j'ai un code qui est le lancement des passes dans le tunnel qui fonctionne actuellement très bien
voila l'image qui illustre ce qui est fait avec cette macro
Pièce jointe 214821
voila la macro de cette partie :
2) Ce second code fonctionne aussi sauf que c'est pas exactement ce que je voulais
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81 'boucle qui gére le tableau O:T et la colonne X et les colonne Z:AE Sub Plaque5_Cliquer() Dim UniteLavage As Long Dim d As Object Dim rep As String Dim i As Integer, j As Integer, c As Variant Dim Rng1, Rng2 As Range Dim N_Boucle As Integer, Nbre_Total_Boucl As Integer Dim Arret As Boolean Dim DerLig As Long '--- initialisation If [B1] = "" Then MsgBox "Insérer une valeur dans B1", 16: Exit Sub If [B4] = "" Then MsgBox "Insérer une valeur dans B4", 16: Exit Sub 'On enregistre la variable UniteLavage UniteLavage = [B1] Arret = False N_Boucle = 0 Nbre_Total_Boucl = Columns(1).Find("*", , , , , xlPrevious).Row - 6 '--- nb plats en colonne A Debug.Print "Nbre_Total_Boucl: "; Nbre_Total_Boucl Sheets("Interface").Activate '--- Do Until Range("B3") = Range("B4") '--- Tonnage tunnel = tonnage semaine N_Boucle = N_Boucle + 1 Debug.Print "N_Boucle: "; N_Boucle EntreePasses N_Boucle, Nbre_Total_Boucl Application.Wait Time + TimeSerial(0, 0, 2) 'attends 10 sec DoEvents If [T8] = "" Then '--- rien, continuer Else Set Rng1 = Columns(24).Cells.Find(Range("T8")) '--- Colonne 24 = X:X Debug.Print "VRng1.Address: "; Rng1.Address If Rng1 Is Nothing Then MsgBox Range("A7").Offset(N_Boucle, 0) & " non trouvé en colonne X" Else If Rng1.Offset(1, 2) <> "" Then MsgBox "Attention tous les emplacements sont occupés", vbOKOnly + vbExclamation, "Blocage" Exit Sub Else For i = 2 To 6 '--- décalage vers la gauche Rng1.Offset(1, i) = Rng1.Offset(1, i + 1) Next i Rng1.Offset(1, 7) = [B1] Rng1.Offset(1, 0) = Rng1.Offset(1, 0) + [B1] [B3] = [B3] + [B1] [T7] = "" [T8] = "" If Rng1.Offset(1, 2) <> "" Then MsgBox "Tous les emplacements de " & Rng1 & " sont occupés," & vbCrLf & _ "mais pourra continuer si le plat suivant" & vbCrLf & _ "n'est le même que " & Rng1, _ vbOKOnly + vbExclamation, "Attention" End If End If End If End If Loop MsgBox "Le tonnage tunnel a atteint le tonnage semaine.", , "Pour info" End Sub Sub EntreePasses(k As Integer, N As Integer) Dim i As Long, sPlat As String '--- décale les cellules vers la droite For i = 20 To 16 Step -1 Cells(7, i) = Cells(7, i - 1) Cells(8, i) = Cells(8, i - 1) Next i If k Mod N = 0 Then k = N Else k = k Mod N End If sPlat = Cells(k + 6, 1) '--- plat en ligne k + 6 If sPlat = "" Then Cells(7, 15) = "" Cells(8, 15) = "" Else Cells(7, 15) = [B1] '--- Unité lavage Cells(8, 15) = sPlat End If End Sub
voila l'image et la macro
Pièce jointe 214822
3) Si vous pouvez m'aidez à relier les deux parties et améliorer le fonctionnement de la 2éme partie :
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 'gestion des choix aléatoire des familles d'article dans le narlivté et affectation au séchoir Private Sub Worksheet_Change(ByVal Target As Range) Dim DerniereLigne, CptLigne, CptValeur As Integer CptValeur = 1 Recommence_la_boucle: If Mid(Target.Address, 2, 2) = "AE" Then If Target.Value <> "" Then Recommence_la_boucl: If Application.WorksheetFunction.CountIf(Columns("AN:AN"), Target.Offset(-1).Value) > 0 Then Valeur = Int(Application.WorksheetFunction.CountIf(Columns("AN:AN"), Target.Offset(-1).Value) * Rnd) + 1 DerniereLigne = Range("AN" & Rows.Count).End(xlUp).Row For CptLigne = 2 To DerniereLigne If Range("AN" & CptLigne).Value = Target.Offset(-1).Value Then If CptValeur = Valeur Then If Range("AH" & CptLigne).Value - Range("AJ" & CptLigne).Value < 0 Then GoTo Recommence_la_boucl Range("AQ" & CptLigne).Value = Range("AH" & CptLigne).Value - Range("AJ" & CptLigne).Value Sechoir = Range("AL" & CptLigne).Value UniteLavage = Range("AJ" & CptLigne).Value Set celluletrouvee = Range("AU:AU").Find(Sechoir, lookat:=xlWhole) If celluletrouvee Is Nothing Then MsgBox ("Séchoir introuvable") Else Range("AU" & celluletrouvee.Row + 1).Value = UniteLavage End If GoTo Recommence_la_boucle 'GoTo FinJob Else CptValeur = CptValeur + 1 End If End If Next CptLigne Else MsgBox ("Pas de correspondance dans le tableau AG:AS") End If End If End If FinJob: End Sub
je veux en faite que l'arriver de mes passe dans la colonne AE engendre le déclenchement de la deuxième partis , ce qui est fait maintenant mais je veux que au moment ou les passes son envoyer au séchoirs que ma colonne AE dois ce vider pour recevoir toutes les passe de la colonne AD et ainsi de suite jusqu'à que je fini toute les passe
après une seconde les séchoirs se vide pour recevoir les nouvelles passes
Aidez moi svp je suis bloqué sur ça depuis la semaine dernière
merci
Partager