Bonjour à tous, je n'ai aucune formation que ce soit sur excel mais normalement je me débrouille quand même pour faire de bon programme en marco. Aujourd'hui J'ai un petit soucis avec une loop qui ne fonctionne pas comme je veux. Le but du fichier est que l'opérateur entre des numéros de pièces dans un tableau et ensuite selectionne avec une checkbox les étiquettes qu'il veut imprimer soit en rouge soit en jaune. j'ai mit mon fichier en pièce jointe pour une meilleur compréhension. J'ai créé une loop mais elle ne fonctionne pas bien. aussi j'ai associé mes checkbox 2 par 2 en leur donnant le non de jauneX et rougeX en fonction de la ligne où elle se trouve. J'aimerai que cette relation soit semblable pour chaque ligne sans avoir à entrer 93 fois la même macro.
voici mes code:
checkbox:
Private Sub Jaune7_Click()
If Jaune7.Value = True Then
Range("K7") = "Jaune"
Rouge7.Value = False
Else
If Jaune7.Value = False And Rouge7.Value = False Then
Range("K7") = ""
End If
End If
End Sub
Private Sub rouge7_Click()
If Rouge7.Value = True Then
Range("K7") = "Rouge"
Jaune7.Value = False
Else
If Jaune7.Value = False And Rouge7.Value = False Then
Range("K7") = ""
End If
End If
End Sub
et pour la génération des étiquettes:
Sub gener()
For lin = 7 To 93
If Range("k" & lin) = "Jaune" Then
Sheets("Jaune").Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = Sheets("Donnée").Range("C" & lin)
Range("C7") = [donnée!C2] 'W/O
Range("C8") = [donnée!C3] 'Engine Type
Range("C9") = Sheets("Donnée").Range("B" & lin) 'Description
Range("C10") = Sheets("Donnée").Range("B" & lin) 'Part Number
Range("C11") = Sheets("Donnée").Range("D" & lin) 'Serial Number
Range("B14") = Sheets("Donnée").Range("E" & lin) 'TSN
Range("F14") = Sheets("Donnée").Range("F" & lin) 'CSN
If Sheets("DONNÉE").CheckBox173.Value = True Then
Range("C13") = "X"
Else
If Sheets("DONNÉE").CheckBox174.Value = True Then
Range("G13") = "X"
End If
'ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
'IgnorePrintAreas:=False
ActiveWindow.SelectedSheets.Delete
End If
Else
If Range("k" & lin) = "Rouge" Then
Sheets("Rouge").Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = Sheets("Donnée").Range("C" & lin)
Range("C7") = [donnée!C2] 'W/O
Range("C8") = [donnée!C3] 'Engine Type
Range("C9") = Sheets("Donnée").Range("B" & lin) 'Description
Range("C10") = Sheets("Donnée").Range("B" & lin) 'Part Number
Range("C11") = Sheets("Donnée").Range("D" & lin) 'Serial Number
Range("B14") = Sheets("Donnée").Range("E" & lin) 'TSN
Range("F14") = Sheets("Donnée").Range("F" & lin) 'CSN
If Sheets("DONNÉE").CheckBox173.Value = True Then
Range("C13") = "X"
Else
If Sheets("DONNÉE").CheckBox174.Value = True Then
Range("G13") = "X"
End If
End If
End If
'ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
'IgnorePrintAreas:=False
ActiveWindow.SelectedSheets.Delete
End If
Next lin
End SubJ'espère ne pas trop vous découragé étant donné que mes code sont surement très loin des standard habituelle.
Merci
voici mes code:
checkbox:
Private Sub Jaune7_Click()
If Jaune7.Value = True Then
Range("K7") = "Jaune"
Rouge7.Value = False
Else
If Jaune7.Value = False And Rouge7.Value = False Then
Range("K7") = ""
End If
End If
End Sub
Private Sub rouge7_Click()
If Rouge7.Value = True Then
Range("K7") = "Rouge"
Jaune7.Value = False
Else
If Jaune7.Value = False And Rouge7.Value = False Then
Range("K7") = ""
End If
End If
End Sub
et pour la génération des étiquettes:
Sub gener()
For lin = 7 To 93
If Range("k" & lin) = "Jaune" Then
Sheets("Jaune").Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = Sheets("Donnée").Range("C" & lin)
Range("C7") = [donnée!C2] 'W/O
Range("C8") = [donnée!C3] 'Engine Type
Range("C9") = Sheets("Donnée").Range("B" & lin) 'Description
Range("C10") = Sheets("Donnée").Range("B" & lin) 'Part Number
Range("C11") = Sheets("Donnée").Range("D" & lin) 'Serial Number
Range("B14") = Sheets("Donnée").Range("E" & lin) 'TSN
Range("F14") = Sheets("Donnée").Range("F" & lin) 'CSN
If Sheets("DONNÉE").CheckBox173.Value = True Then
Range("C13") = "X"
Else
If Sheets("DONNÉE").CheckBox174.Value = True Then
Range("G13") = "X"
End If
'ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
'IgnorePrintAreas:=False
ActiveWindow.SelectedSheets.Delete
End If
Else
If Range("k" & lin) = "Rouge" Then
Sheets("Rouge").Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = Sheets("Donnée").Range("C" & lin)
Range("C7") = [donnée!C2] 'W/O
Range("C8") = [donnée!C3] 'Engine Type
Range("C9") = Sheets("Donnée").Range("B" & lin) 'Description
Range("C10") = Sheets("Donnée").Range("B" & lin) 'Part Number
Range("C11") = Sheets("Donnée").Range("D" & lin) 'Serial Number
Range("B14") = Sheets("Donnée").Range("E" & lin) 'TSN
Range("F14") = Sheets("Donnée").Range("F" & lin) 'CSN
If Sheets("DONNÉE").CheckBox173.Value = True Then
Range("C13") = "X"
Else
If Sheets("DONNÉE").CheckBox174.Value = True Then
Range("G13") = "X"
End If
End If
End If
'ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
'IgnorePrintAreas:=False
ActiveWindow.SelectedSheets.Delete
End If
Next lin
End SubJ'espère ne pas trop vous découragé étant donné que mes code sont surement très loin des standard habituelle.
Merci