Bouton + Macro : Triple numéro / date / impression
Bonjour à tous,
J'ai besoin d'un petit coup de main, et comme le sujet de ce post ne permet pas de tout dire, je vous explique mon cas :
Sur le fichier joint exemple.xls, se trouve 6 feuilles, nommées respectivement Muscu 2013, Suivi de séances, ProtA, ProtB, Feuil1 et Feuil1(2); Feuil1(2) étant une simple copie de Feuil1.
Muscu 2013 référence des personnes avec certaines données qui sont ensuite retrouvés dans ProtA ou ProtB, des lors que l'on inscrit le nom de cette personne dans une des deux feuilles.
Sur chacune de ces feuilles se trouve trois boutons, qui me permettent une fois ma feuille complétée, de retranscrire directement sur ma feuille Suivi de séance les données qui me sont nécessaires, et ensuite m'imprime ma feuille ProtA ou ProtB.
Jusque là, tout fonctionne. Mais voici le début du problème
J'ai créé la feuille Feuil1, qui va me servir pour imprimer des étiquettes pour un complément à ajouter en plus.
Grace à la fonction SI, j'ai trouvé un petit système qui me permet de retranscrire directement les données écrites sur ProtA ou ProtB, en fonction de celle qui a le numéro de préparation le plus élevé.
De ce fait, le numéro de préparation du complément doit suivre celui retranscrit en ProtA ou B.
Ex : Pour Mr X. Prot A = N°10, Complément = N°11.
Pour les week-ends, je produit le Vendredi pour Vendredi, Samedi, Dimanche, d'où le bouton Triple.
A partir de la macro "impression transfert en Triple" de la feuille ProtA, j'ai bidouillé la macro pour essayer de :
- Retranscrire en triple les infos de Feuil1 sur la feuille Suivi de séance, avec un intervalle de 2 entre chaque numéro de préparation
- Avoir les trois numéro de préparation dans la case N° de préparation
- Avoir l'impression de 3 étiquettes, une avec le jour de fabrication, une avec le jour de fabrication + 1, et jour de fabrication + 2.
J'en suis donc arrivé à cette macro :
Sheets("Suivi des séances").Select
Rows("7:7").Select
Selection.Insert Shift:=xlDown
Selection.Insert Shift:=xlDown
Selection.Insert Shift:=xlDown
Sheets("Feuil1").Select
Range("B6").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Suivi des séances").Select
Range("B7:B9").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("Feuil1").Select
Range("F7").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Suivi des séances").Select
Range("C7 ").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("D7").Select
ActiveCell.FormulaR1C1 = "=RC[-1]+2"
Range("D7").Select
Selection.Copy
Range("C8").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("D7").Select
Selection.ClearContents
Range("D8").Select
ActiveCell.FormulaR1C1 = "=R[-1]C[-1]+4"
Range("D8").Select
Selection.Copy
Range("C9").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("D8").Select
Selection.ClearContents
Range("G7").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "Binaire"
With ActiveCell.Characters(Start:=1, Length:=18).Font
.Name = "Arial"
.FontStyle = "Gras"
.Size = 14
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
Dim i As Integer
'Indiquer le nombre de Feuille à Imprimer
Range("G1").FormulaR1C1 = InputBox("Indiquer le nombre de Feuille à Imprimer ")
If Range("G1").Value <= 0 Then
If Range("G1") = "" Then
MsgBox "Merci de renseigner le nombre de Feuille "
End If
End If
For i = 1 To Range("G1").Value
ActiveWindow.SelectedSheets.PrintOut
Range("D4").Value = Range("D4").Value + 1
Next i
End With
Range("G7").Select
Selection.Copy
Range("G8:G9").Select
ActiveSheet.Paste
Range("B6:G56").Select
Selection.Sort Key1:=Range("G6"), Order1:=xlAscending, Key2:=Range("B6") _
, Order2:=xlAscending, Key3:=Range("C6"), Order3:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal, DataOption2:=xlSortNormal, DataOption3:= _
xlSortNormal
Range("G8").Select
Sheets("Feuil1").Select
Range("C7").Select
ActiveCell.FormulaR1C1 = "=R[-5]C[-1] &"" / "" & R[-5]C[-1]+2 &"" / "" & R[-5]C[-1]+4"
Range("C7").Select
Selection.Copy
Range("G6").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("C7").Select
Selection.ClearContents
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
End Sub
Hélas, a mon grand désespoir, cela ne fonctionne pas comme je l'imaginais.
La partie transcription sur la feuille Suivi de séance marche parfaitement.
Mais, au final, mon numéro de préparation, (en F7), n'est pas inscrit en triple, mais apparaît sous forme /2/4 à chaque fois.
De plus ma feuille Feuil1 se trouve au final complétement déformé, puisque l'infirmation "Binaire", qui doit apparaitre sur la feuille Suivi de séance, apparait aussi sur la feuille Feuil1, et désorganise tout.
Et finalement, j'ai trouvé sur un forum cette macro, qui me permet d'imprimer trois feuilles avec trois dates différentes :
Dim i As Integer
'Indiquer le nombre de Feuille à Imprimer
Range("G1").FormulaR1C1 = InputBox("Indiquer le nombre de Feuille à Imprimer ")
If Range("G1").Value <= 0 Then
If Range("G1") = "" Then
MsgBox "Merci de renseigner le nombre de Feuille "
End If
End If
For i = 1 To Range("G1").Value
Je l'ai intégrée, mais premièrement je ne sais pas si je l'ai intégrée au bon endroit, et deuxièmement elle ne me satisfait pas vraiment.
Je demande donc votre aide pour :
A. Savoir si quelqu'un peut m'indiquer ce qui cloche dans la macro que j'ai bidouillée.
B. Savoir si quelqu'un aurait une macro plus adaptée que la dernière.
Voila, j’espère avoir été assez clair. Si vous voulez comprendre un peu mieux comment cela je vous invite à tester le fichier directement, mais penser à débrancher votre imprimante, si vous ne voulez vous faire manger beaucoup de papier.
Je vous remercie d’avoir pris le temps de lire tout ça. J'espère que c'est compréhensible.
En attendant d'avoir un réponse, je vous souhaite une bonne journée.
Signé PerPer
Bonjour
Ne sachant pas exactement le résultat que tu voulais, je me suis basé sur une macro et j'ai essayé de simplifier et d'obtenir le même résultat que celui avec ta macro
Alors pour débuter essayes cette macro
Sub Impression_transfert_ProtA_en_triple()
Dim Nblg As Long
With Sheets("Suivi des séances")
Nblg = .Range("B" & Rows.Count).End(xlUp).Row + 1
Range("B1").Copy .Range("B" & Nblg & ":B" & Nblg + 2)
Range("B2").Copy .Range("C" & Nblg)
.Range("C" & Nblg).AutoFill .Range("C" & Nblg & ":C" & Nblg + 2), xlFillSeries
With .Range("G" & Nblg & ":G" & Nblg + 2)
.Value = "Binaire"
.Font.Name = "Arial"
.Font.FontStyle = "Gras"
.Font.Size = 14
End With
.Range("B6:G56").Sort Key1:=.Range("G6"), Order1:=xlAscending, Key2:=.Range("B6"), _
Order2:=xlAscending, Key3:=.Range("C6"), Order3:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal, DataOption2:=xlSortNormal, DataOption3:=xlSortNormal
End With
With Sheets("Feuil1")
With .Range("B2")
.Formula = "=F6 & "" / "" & F6+1 & "" / "" & F6+2"
.Value = .Value
End With
.PrintPreview
End With
End SubBonjour à Tous.
Merci Banzai pour ta réponse, je m'en suis servit pour mes macros et ça marche. Merci beaucoup.
Maintenant, je souhaite imprimer ma Feuil1 en trois exemplaires :
Le premier avec la date inscrit en "F6"
Le second avec la date + 1 jour en "F6"
Et le troisième avec la date + 2 jours en "F6"
Je n'arrive pas à trouver un moyen y parvenir, quelqu'un aurait une solution?
Bonjour
Sans fichier
Un bouton liée à cette macro
La date est déjà présente en F6
Sub Impression()
With Sheet("Feuil1")
.PrintOut
.Range("F6") = .Range("F6") + 1
.PrintOut
.Range("F6") = .Range("F6") + 1
.PrintOut
End With
End SubMerci beaucoup Banzai.
C'est exactement ce qu'il me fallait.
Merci à la communauté du forum.
Est ce que cela intéresse quelqu'un que je poste les macros que j'ai utilisé, en expliquant leur fonctionnement?