Remplir plusieurs tableaux avec un userform

Résolu/Fermé
Zorbaxx Messages postés 29 Date d'inscription mercredi 20 décembre 2017 Statut Membre Dernière intervention 8 novembre 2018 - 12 févr. 2018 à 19:02
Zorbaxx Messages postés 29 Date d'inscription mercredi 20 décembre 2017 Statut Membre Dernière intervention 8 novembre 2018 - 17 févr. 2018 à 12:25
Bonjour, Je me tourne une nouvelle fois vers vous pour accroître une nouvelle fois mes connaissances...

J'aimerai réussir à remplir plusieurs tableaux à partir du formulaire que je suis entrain de créer.

J'explique en bref et je joint un brouillon pour essayer d'être le plus clair possible.. mais j'avoue que cela n'est pas toujours évident ^^

Je dois calculer des productivités et pour ce faire j'aimerai que lorsque des employés remplissent le userform, les tableaux de la feuille "data" se complétent en fonction de leurs numéros de personnel(ma textbox1). C'est à dire qu'excel "switch" de tableau à chaque fois qu'il voit un numéro différent. Voilà ce dont je me sert pour remplir le premier tableau mais je bloque sur la manière de pouvoir compléter les autres sans passer par énormément de "if".

Private Sub valider_Click()

Dim dlt As Integer

If TextBox1 = "" Or TextBox2 = "" Or TextBox3 = "" Then
MsgBox ("Il manque des informations!")
GoTo 1
End If


If MsgBox("Ajouter les données?", vbYesNo, "Confirmation") = vbYes Then
dlt = Sheets("data").Range("B29").End(xlUp).Row + 1
Sheets("data").Cells(5, 2) = TextBox1
Sheets("data").Cells(dlt, 2) = Now()
Sheets("data").Cells(dlt, 3).NumberFormat = "hh:mm"
Sheets("data").Cells(dlt, 3) = Now()
Sheets("data").Cells(dlt, 4) = TextBox1
Sheets("data").Cells(dlt, 5) = TextBox2
Sheets("data").Cells(dlt, 6) = TextBox3
End If

Unload Me
Useform1.Show
1
End Sub

Je ne suis pas un grand habitué de vba mais j'y travaille ^^


Merci à vous

https://mon-partage.fr/f/Y9Y6AA0b/



A voir également:

5 réponses

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
12 févr. 2018 à 21:29
Bonjour,

Tu peux changer de tableau en mettant l'adresse dans ta liste employés.

Cependant je ne pense pas que tes tableaux soient une bonne solution car ils vont te compliquer la vie sans utilité. Je pense que tu devrais tout mettre dans le même tableau et si tu veux te créer la visualisation d'un employé, ce sera très simple sur une autre feuille par exemple avec une simple filtre élaboré avec une ligne de code.

Enfin c'est toi qui décide car je ne connais pas ton cahier des charges.
1
Zorbaxx Messages postés 29 Date d'inscription mercredi 20 décembre 2017 Statut Membre Dernière intervention 8 novembre 2018
13 févr. 2018 à 19:27
Bonjour et merci de tenter de m'aider,

En fait la feuille data n'est pas vraiment nécessaire,

Il faudrait que lorsqu'un utilisateur remplisse le userform, son numéro (textbox1) s'affiche en C6, les produits qu'il prépare (textbox2) en D6,E6,... et les quantités(textbox3) en D7,E7... mais que lorsque qu'un autre employé entre des données, son numéro se mettrai en C6, les produit en D8,E8,.. et les quantité en D9,E9,... etc à chaque fois sur la ligne suivante.
Ils vont rentrer pls fois des données au cours de la journée et donc que à chaque fois qu'un numéro d'employé revienne, il indique ces données en face du bon numéro de personnel...
Je na sais pas si j'arrive a être très clair...
Merci,
0
julia Namor Messages postés 524 Date d'inscription jeudi 27 mars 2014 Statut Membre Dernière intervention 13 janvier 2024 33
13 févr. 2018 à 20:01
voir le fichier envoyé depuis hier
0
julia Namor Messages postés 524 Date d'inscription jeudi 27 mars 2014 Statut Membre Dernière intervention 13 janvier 2024 33
12 févr. 2018 à 22:41
Bonsoir
Voila le fichier modifié selon ta demande
c'est vrai que l'on pourrait faire plus intuitif avec un seul tableau et un filtre élaboré.
Mais faudra peut être repenser ton projet.

https://www.cjoint.com/c/HBmvMbyAL3D
bien cordialement
1
Zorbaxx Messages postés 29 Date d'inscription mercredi 20 décembre 2017 Statut Membre Dernière intervention 8 novembre 2018
13 févr. 2018 à 20:22
Bonsoir Julia et merci,
Je pense m'être mal expliqué hier, en réalité pas besoin d'voir 100 tableaux pour tout les membres du personnel. Ils ne peuvent être que 20 max à être assigné à cette tâche et le tableaux sera reset tout les matins. De plus les personne assignées à cette tâche sont amené à changer tout les jours et la liste me sert uniquement pour mes recherchev.

Mais bon, meme 20 tableaux, tu a raison, ce n'est pas très intuitif.

J'essaie donc de rentrer les données directement dans ma feuille prod mais je me rend bien compte que mes connaissance en vba sont limitées... voila ou j'en suis :

Private Sub valider_Click()

Dim dlt As Integer

If TextBox1 = "" Or TextBox2 = "" Or TextBox3 = "" Then
MsgBox ("Il manque des informations!")
GoTo 1
End If


If MsgBox("Ajouter les données?", vbYesNo, "Confirmation") = vbYes Then


If TextBox1 <> Sheets("prod").Cells(6, 3) Then
dlt = Sheets("prod").Range("w8").End(xlToLeft).Column + 1
Sheets("prod").Cells(8, 3) = TextBox1
Sheets("prod").Cells(8, dlt) = TextBox2
Sheets("prod").Cells(9, dlt) = TextBox3
Else


dlt = Sheets("prod").Range("w6").End(xlToLeft).Column + 1
Sheets("prod").Cells(6, 3) = TextBox1
Sheets("prod").Cells(6, dlt) = TextBox2
Sheets("prod").Cells(7, dlt) = TextBox3
End If
End If


Unload Me
Useform1.Show
1
End Sub

Mais je me rend compte qu'en partant comme ca je vais devoir partir dans une série de "if" interminables...
0
julia Namor Messages postés 524 Date d'inscription jeudi 27 mars 2014 Statut Membre Dernière intervention 13 janvier 2024 33
13 févr. 2018 à 20:59
,,,
peux tu envoyer un tableau "fait main" qui montre ce que tu veux. On y verrait un peu plus clair
pour l’édition des codes.
1
Zorbaxx Messages postés 29 Date d'inscription mercredi 20 décembre 2017 Statut Membre Dernière intervention 8 novembre 2018
13 févr. 2018 à 21:34
https://www.cjoint.com/c/HBnuDUUJgFO

Voila en gros à quoi cela ressemble, ici je saisi toutes les cellules de (C5;W54) manuellement et j'aimerai qu'elles le soit via mon userform...
Merci encore
0
julia Namor Messages postés 524 Date d'inscription jeudi 27 mars 2014 Statut Membre Dernière intervention 13 janvier 2024 33
13 févr. 2018 à 23:58
Bonsoir
ceci devrait le faire
https://www.cjoint.com/c/HBnw4dlDYqD
fais moi un retour
cordialement
0
Zorbaxx Messages postés 29 Date d'inscription mercredi 20 décembre 2017 Statut Membre Dernière intervention 8 novembre 2018
14 févr. 2018 à 16:29
Bonjour Julia, et merci encore de prendre sur ton temps pour m'aider

Lorsque j'ouvre ton fichier, ton code marche à la perfection et c'est exactement ce à quoi je voulais arriver. Malheureusement, lorsque le tableau est vide, les données ne s'enregistre plus du tout au bon endroit. Je pense que le fait d'avoir certaines des cellules fusionnées pause problème. et je ne vois pas d'ou cela provient
Je ne comprend pas encore tout ton code et je suis entrain de m'instruire pour bien tout saisir.
Merci
0
julia Namor Messages postés 524 Date d'inscription jeudi 27 mars 2014 Statut Membre Dernière intervention 13 janvier 2024 33
14 févr. 2018 à 22:16
Bonsoir
J'ai modifié le fichier .
Attention: la ligne jaune est cruciale
https://www.cjoint.com/c/HBovosNALWE
bien cordialement
1
Zorbaxx Messages postés 29 Date d'inscription mercredi 20 décembre 2017 Statut Membre Dernière intervention 8 novembre 2018
15 févr. 2018 à 22:00
Bonsoir,

J'avais réussi à régler le problème en défusionant des cellules là ou tu a inséré la ligne jaune. Mais c'est plus propre comme ça et je n'avais pas du tout pensé à ça. Je te remercie encore, j'ai pu bien avancer et j'ai appris beaucoup grâce à toi.

Maintenant je suis bloqué sur une histoire de format de dates dans un autre userform qui me sert à effectuer des recherches sur ce classeur haha... Si le coeur t'en dit ton aide est la bienvenue ^^.

https://www.cjoint.com/c/HBpu7wR0NtO

Un tout grand merci encore,

Cordialement
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
julia Namor Messages postés 524 Date d'inscription jeudi 27 mars 2014 Statut Membre Dernière intervention 13 janvier 2024 33
17 févr. 2018 à 00:40
Bonjour
Voila le code modifié

Private Sub Chercher_Click()

If TextBox1 = "" Then
MsgBox "Veuillez entrer un numéro de course!", vbInformation + vbOKOnly, "Numéro de course invalide"
GoTo 1
End If

If WorksheetFunction.CountIf(Sheets("Données").Range("b:b"), Me.TextBox1.Value) = 0 Then
MsgBox "Le numéro de course n'existe pas!", vbInformation + vbOKOnly, "Numéro de course invalide"
TextBox1 = ""
GoTo 1
Else
Me.TextBox2 = Application.WorksheetFunction.VLookup((TextBox1), Sheets("Données").Range("B2:G360"), 2, 0)
Me.TextBox2.Value = CDate(Me.TextBox2.Value)
Me.TextBox3 = Application.WorksheetFunction.VLookup((TextBox1), Sheets("Données").Range("B2:G360"), 3, 0)
Me.TextBox3.Value = Format(Me.TextBox3, "hh:mm")
Me.TextBox4 = Application.WorksheetFunction.VLookup((TextBox1), Sheets("Données").Range("B2:G360"), 4, 0)
Me.TextBox5 = Application.WorksheetFunction.VLookup((TextBox1), Sheets("Données").Range("B2:G360"), 6, 0)
Me.TextBox6 = Application.WorksheetFunction.VLookup((TextBox1), Sheets("Données").Range("B2:G360"), 5, 0)

End If

1
End Sub
1
Zorbaxx Messages postés 29 Date d'inscription mercredi 20 décembre 2017 Statut Membre Dernière intervention 8 novembre 2018
17 févr. 2018 à 12:25
Merci Julia ça fonctionne nickel.
J'ai encore une dernière question après promis je te laisse tranquille ^^.
Dans mon useform1 je lui demande d'aller entrer les valeurs des textbox dans ma feuille "données" avec ce code

With Sheets("données")
dlt = .Range("b" & Rows.Count).End(xlUp).Row + 1
.Cells(dlt, 3) = Now()
.Cells(dlt, 4).NumberFormat = "hh:mm"
.Cells(dlt, 4) = Now()
.Cells(dlt, 5) = TextBox1.Value
.Cells(dlt, 2) = TextBox2.Value
.Cells(dlt, 7) = TextBox3.Value
End With

Le problème c'est que quand l'utilisateur répond "non" au vbyesno, les valeurs sont tout de même entrées sur ma feuille "données". Par contre sur la feuille "prod" pas de problèmes. Le code n'est pas placé au bon endroit et je ne vois pas où le mettre. J'ai bien contourné le problème en ajoutant un vbyesno mais du coup on doit "valider" deux fois "non" et ça fait pas très propre...

Désolé si j'abuse de ta gentillesse....
0