Divers macro (création/modifcation/..)
Bonjour a tous,
Cela fait maintenant plusieurs années que j'élabore mon fichier de saisie d'heure, après moult modification, je me décide enfin à me mettre aux macro. Mais le problème c'est que je suis un vrai niouby !!! ducoup je vous explique ce que je souhaite faire et là ou je bloque :
- Depuis la Feuil1 je saisi mes heures par semaine via une interface qui s'implémente les une derrière les autres.
- j'ai réussis via macro à envoyer mes données vers une feuil1 vers la feuille 'S1'.
- Est t il possible à partir de mon interface de saisie lors de la validation, de créer une feuille nommée en fonction du numéro de la semaine (ex : "Sxx" xx étant le numéro de la semaine) et d'inclure les données saisie dans cette interface sur le tableau de feuille 'Matrice'.
- Pouvoir depuis l'interface sélectionner une feuille pour la modifier et avoir les données qui remonte dedant pour pouvoir les modifier.
- Le dernier bouton avec la fonction égale ne se transfert pas dans la feuille S1. Après je ne sais pas si j'ai appliqué les bonnes méthodes, mais j'ai fais avec ce que j'ai trouvé.
Il y a peut être un autre moyen que de passer par la Feuil1 pour re-transferer mes saisie.
Merci de votre aide.
Aurélien
bonjour
envoi un fichier en zip ou xlsm car je n'ouvre pas les 7z
Pascal
Bonjour
déja dans le module 4 enlève tous les select et le code fonctionnera mieux
dans le même style que celui ci que j'ai fait
Sub copyegaleF1versS1()
'
' copyegaleF1versS1 Macro
'
'
Sheets("Feuil1").SmallScroll ToRight:=5
With Sheets("S1")
.Range("E7").FormulaR1C1 = "=Feuil1!R[-5]C[15]"
.Range("E8").FormulaR1C1 = "=Feuil1!R[-6]C[16]"
.Range("E9").FormulaR1C1 = "=Feuil1!R[-7]C[19]"
.Range("E10").FormulaR1C1 = "=Feuil1!R[-8]C[20]"
.Range("E11").FormulaR1C1 = "=Feuil1!R[-9]C[21]"
.Range("E14").FormulaR1C1 = "=Feuil1!R[-12]C[22]"
.Range("E15").FormulaR1C1 = "=Feuil1!R[-13]C[23]"
.Range("E16").FormulaR1C1 = "=Feuil1!R[-14]C[24]"
.Range("E18").FormulaR1C1 = "=Feuil1!R[-16]C[25]"
.Range("E19").FormulaR1C1 = "=Feuil1!R[-17]C[26]"
.Range("E20").FormulaR1C1 = "=Feuil1!R[-18]C[27]"
.Range("E21").Select
End With
End Submes compétences m'oblige a laisser un pro prendre la relève
Pascal
bonjour
je viens de faire une cure sur un code de ton module 4 et l'on vois plus clairement qui fait quoi et
.Range("A1").a du boulot
Sub copybyegalFeuil1versS1()
'
' copybyegalFeuil1versS1 Macro
'
With Sheets("Feuil1")
.Offset(2, 5).Range("A1").FormulaR1C1 = "=Feuil1!R2C1"
.Offset(4, -2).Range("A1").FormulaR1C1 = "=Feuil1!R2C3"
.Offset(1, 0).Range("A1").FormulaR1C1 = "=Feuil1!R2C4"
.Offset(1, 0).Range("A1").FormulaR1C1 = "=Feuil1!R2C7"
.Offset(1, 0).Range("A1").FormulaR1C1 = "=Feuil1!R2C8"
.Offset(1, 0).Range("A1").FormulaR1C1 = "=Feuil1!R2C9"
.Offset(3, 0).Range("A1").FormulaR1C1 = "=Feuil1!R2C10"
.Offset(1, 0).Range("A1").FormulaR1C1 = "=Feuil1!R2C11"
.Offset(1, 0).Range("A1").FormulaR1C1 = "=Feuil1!R2C11"
ActiveCell.FormulaR1C1 = "=Feuil1!R2C12"
.Offset(2, 0).Range("A1").FormulaR1C1 = "=Feuil1!R2C13"
.Offset(1, 0).Range("A1").FormulaR1C1 = "=Feuil1!R2C14"
.Offset(1, 0).Range("A1").FormulaR1C1 = "=Feuil1!R2C15"
.Offset(-13, 1).Range("A1").FormulaR1C1 = "=Feuil1!R2C20"
.Offset(1, 0).Range("A1").FormulaR1C1 = "=Feuil1!R2C21"
.Offset(1, 0).Range("A1").FormulaR1C1 = "=Feuil1!R2C24"
.Offset(1, 0).Range("A1").FormulaR1C1 = "=Feuil1!R2C25"
.Offset(1, 0).Range("A1").FormulaR1C1 = "=Feuil1!R2C26"
.Offset(3, 0).Range("A1").FormulaR1C1 = "=Feuil1!R2C27"
.Offset(1, 0).Range("A1").FormulaR1C1 = "=Feuil1!R2C28"
.Offset(1, 0).Range("A1").FormulaR1C1 = "=Feuil1!R2C29"
.Offset(2, 0).Range("A1").FormulaR1C1 = "=Feuil1!R2C30"
.Offset(1, 0).Range("A1").FormulaR1C1 = "=Feuil1!R2C31"
.Offset(1, 0).Range("A1").FormulaR1C1 = "=Feuil1!R2C32"
.Offset(-13, 1).Range("A1").FormulaR1C1 = "=Feuil1!R2C37"
.Offset(1, 0).Range("A1").FormulaR1C1 = "=Feuil1!R2C38"
.Offset(1, 0).Range("A1").FormulaR1C1 = "=Feuil1!R2C41"
.Offset(1, 0).Range("A1").FormulaR1C1 = "=Feuil1!R2C42"
.Offset(1, 0).Range("A1").FormulaR1C1 = "=Feuil1!R2C43"
.Offset(3, 0).Range("A1").FormulaR1C1 = "=Feuil1!R2C44"
.Offset(1, 0).Range("A1").FormulaR1C1 = "=Feuil1!R2C45"
.Offset(1, 0).Range("A1").FormulaR1C1 = "=Feuil1!R2C46"
.Offset(2, 0).Range("A1").FormulaR1C1 = "=Feuil1!R2C47"
.Offset(1, 0).Range("A1").FormulaR1C1 = "=Feuil1!R2C48"
.Offset(1, 0).Range("A1").FormulaR1C1 = "=Feuil1!R2C49"
.Offset(-13, 1).Range("A1").FormulaR1C1 = "=Feuil1!R2C54"
.Offset(1, 0).Range("A1").FormulaR1C1 = "=Feuil1!R2C55"
.Offset(1, 0).Range("A1").FormulaR1C1 = "=Feuil1!R2C58"
.Offset(1, 0).Range("A1").FormulaR1C1 = "=Feuil1!R2C59"
.Offset(1, 0).Range("A1").FormulaR1C1 = "=Feuil1!R2C60"
.Offset(3, 0).Range("A1").FormulaR1C1 = "=Feuil1!R2C61"
.Offset(1, 0).Range("A1").FormulaR1C1 = "=Feuil1!R2C62"
.Offset(1, 0).Range("A1").FormulaR1C1 = "=Feuil1!R2C63"
.Offset(2, 0).Range("A1").FormulaR1C1 = "=Feuil1!R2C64"
.Offset(1, 0).Range("A1").FormulaR1C1 = "=Feuil1!R2C65"
.Offset(1, 0).Range("A1").FormulaR1C1 = "=Feuil1!R2C66"
.Offset(-13, 1).Range("A1").FormulaR1C1 = "=Feuil1!R2C71"
.Offset(1, 0).Range("A1").FormulaR1C1 = "=Feuil1!R2C72"
.Offset(1, 0).Range("A1").ormulaR1C1 = "=Feuil1!R2C75"
.Offset(1, 0).Range("A1").FormulaR1C1 = "=Feuil1!R2C76"
.Offset(1, 0).Range("A1").FormulaR1C1 = "=Feuil1!R2C77"
.Offset(3, 0).Range("A1").FormulaR1C1 = "=Feuil1!R2C78"
.Offset(1, 0).Range("A1").FormulaR1C1 = "=Feuil1!R2C79"
.Offset(1, 0).Range("A1").FormulaR1C1 = "=Feuil1!R2C80"
.Offset(2, 0).Range("A1").FormulaR1C1 = "=Feuil1!R2C81"
.Offset(1, 0).Range("A1").FormulaR1C1 = "=Feuil1!R2C82"
.Offset(1, 0).Range("A1").FormulaR1C1 = "=Feuil1!R2C83"
'ActiveCell.Offset(1, 0).Range("A1").Select
End With
End Subvoila pour ma part, mais je suis sur qu'il y a mieux
Pascal
Merci Pascal pour tes réponses. Je vais essayer ce que tu m'a envoyé.
Si quelqu'un peu aider sur les autres problèmes je suis preneur.
Merci de vos retour.
bonjour diabolik14
explique un peu comment tu pense faire fonctionner ton fichier
de ton interface tu envoi les données en "feuil1" mais qu'en fait tu après pour les envoyer par exemple dans la matrice
une fois que tu a rempli ta feuil1 via l'interface et ce toute la semaine, tu serai assez tôt pour transférer en "S1" et vider la feuil1 afin de repartir sur une base saine la semaine suivante
je soumet des idées mais je ne sais pas si a mon niveau j'arriverai a le faire
toujours dans ton module 4 dans la
Sub CopieDataFeuil1versS1()tu peux enlever tous les select de cette manière
Worksheets("feuil1").Range("C2").Copy
ActiveSheet.Paste Destination:=Worksheets("S1").Range("D7")au lieu de
Worksheets("Feuil1").Select
Range("C2").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("S1").Select
Range("D7").Select
ActiveSheet.Pastecela permettra de l'éclaircir
Pascal
Enfaite mon idée de base était que je puisse saisir depuis mon interface ma semaine et que celà créer une nouvelle feuille et que les données soit introduite dans mon tableau. Mais comme je n'ai pas trouvé la solution, j'ai ducoup faire avec ce que j'ai trouvé sur le net, c'est à dire saisir les données dans la page 1 et ensuite les transférer dans une nouvelle feuille et le introduire dans mon tableau.
Donc mon idée si elle est réalisable serait donc :
- saisir dans l'interface mes heures de la semaine, en fonction du numéro de la semaine saisie que celà puisse me créer une nouvelle feuille appelé en fonction de ce numéro avec un S devant, et que les données soit rempli dans mon tableau récap.
- depuis l'interface appeler un numéro de semaine déjà saisie et pouvoir le modifier.
Après je me complique peut être un peu la vie.
A vous de me dire.
Merci
bonsoir diabolik14
voila ce que je viens de faire, dans ce code du bouton "valider" de ton interface j'ai rajouté un appel a une sub qui sera en dessous
Private Sub CommandButton1_Click() 'valider
Dim Ctrl As Control
Dim r As Integer
Dim t As Integer
Dim derligne As Integer
With Worksheets("Feuil1")
derligne = .Range("A65536").End(xlUp).Row + 1
For Each Ctrl In UserForm1.Controls
r = Val(Ctrl.Tag)
If r > 0 Then Feuil1.Cells(derligne, r) = Ctrl
Next Ctrl
Feuil1.Cells(derligne, 1) = Val(TextBox1)
End With
Call ajoutfeuillenommée '( voila l'appel)
TextBox1 = ""
Unload Me
End Subet voici la sub
Sub ajoutfeuillenommée()
Dim Feuille As Worksheet
For Each Feuille In ThisWorkbook.Worksheets
Next
Sheets.Add after:=Sheets("Matrice")
ActiveSheet.Name = "Sem N°" & UserForm1.TextBox1.Value ' Day(Date) & "-" & Month(Date) & "-" & Year(Date)
With UserForm1
Sheets("Matrice").Range("D7") = .ComboBox1.Value
End With
End Subje pense que tu dois pouvoir écrire les données de ton interface comme ce que j'ai mis après la dernière ligne du code ci dessus
a ce niveau je te laisse bosser
et voici un apercu de ce que ca donne
et tu rajoute
ligne = Sheets("Feuil1").Range("A65536").End(xlUp).Row
TextBox1 = Sheets("Feuil1").Range("A" & ligne).Value + 1dans l'initialsation de l'usf"interface"pour que le textbox 1 prenne la valeur du dernier n°de semaine sur la feuille "Feuil1" +1
et en prime je t'envoi ton fichier modifié avec ce que je t'ai dit pus haut
si cela te vas dit moi
pascal
Merci beaucoup pour ton aide, je regarde ton fichier et te dis tous ca.
Un grand MERCI pour ton boulot !!!
Parcontre comment je peux faire pour insérer dans la feuille que tu crée(SEM n°xx) le tableau de la feuille matrice.
Merci de ton retour.
Diabolik
bonjour diabolik14 et le forum
pour envoyer la matrice dans la feuille nommée sem N° ??? , je crois qu'il vaux mieux remplir ta matrice d'abord, si tu dois la finir en fin de semaine par exemple, et donc par ce fait valider la semaine après
donc dans ta matrice il faudra que remplisse la semaine du temps au temps manuellement
et une fois que ta matrice te semblera remplie, je n'ai rien trouvé de mieux que créer la feuille a ce moment la par le biais d'un bouton supplémentaire que j'ai nommé "finaliser la semaine" et je te joint ton fichier pour que tu vois
pascal
Merci Pascal,
Je vais continuer tous seul maintenant comme un grand !!!
Merci pour cette ses réponses qui m'ont été d'une grande aide !!!
Diabolik
bonjour diabolik14
Pascal