Menu

Remplir plusieurs tableaux avec un userform

Zorbaxx 23 Messages postés mercredi 20 décembre 2017Date d'inscription 17 février 2018 Dernière intervention - 12 févr. 2018 à 19:02 - Dernière réponse : Zorbaxx 23 Messages postés mercredi 20 décembre 2017Date d'inscription 17 février 2018 Dernière intervention
- 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/



Afficher la suite 

13 réponses

Répondre au sujet
julia Namor 361 Messages postés jeudi 27 mars 2014Date d'inscription 21 février 2018 Dernière intervention - 12 févr. 2018 à 22:41
+1
Utile
1
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
Zorbaxx 23 Messages postés mercredi 20 décembre 2017Date d'inscription 17 février 2018 Dernière intervention - 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...
Commenter la réponse de julia Namor
julia Namor 361 Messages postés jeudi 27 mars 2014Date d'inscription 21 février 2018 Dernière intervention - 13 févr. 2018 à 20:59
+1
Utile
3
,,,
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.
Zorbaxx 23 Messages postés mercredi 20 décembre 2017Date d'inscription 17 février 2018 Dernière intervention - 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
julia Namor 361 Messages postés jeudi 27 mars 2014Date d'inscription 21 février 2018 Dernière intervention - 13 févr. 2018 à 23:58
Bonsoir
ceci devrait le faire
https://www.cjoint.com/c/HBnw4dlDYqD
fais moi un retour
cordialement
Zorbaxx 23 Messages postés mercredi 20 décembre 2017Date d'inscription 17 février 2018 Dernière intervention - 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
Commenter la réponse de julia Namor
julia Namor 361 Messages postés jeudi 27 mars 2014Date d'inscription 21 février 2018 Dernière intervention - 14 févr. 2018 à 22:16
+1
Utile
1
Bonsoir
J'ai modifié le fichier .
Attention: la ligne jaune est cruciale
https://www.cjoint.com/c/HBovosNALWE
bien cordialement
Zorbaxx 23 Messages postés mercredi 20 décembre 2017Date d'inscription 17 février 2018 Dernière intervention - 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
Commenter la réponse de julia Namor
julia Namor 361 Messages postés jeudi 27 mars 2014Date d'inscription 21 février 2018 Dernière intervention - 17 févr. 2018 à 00:40
+1
Utile
1
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
Zorbaxx 23 Messages postés mercredi 20 décembre 2017Date d'inscription 17 février 2018 Dernière intervention - 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....
Commenter la réponse de julia Namor
gbinforme 14601 Messages postés lundi 18 octobre 2004Date d'inscriptionContributeurStatut 23 février 2018 Dernière intervention - 12 févr. 2018 à 21:29
0
Utile
2
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.
Zorbaxx 23 Messages postés mercredi 20 décembre 2017Date d'inscription 17 février 2018 Dernière intervention - 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,
julia Namor 361 Messages postés jeudi 27 mars 2014Date d'inscription 21 février 2018 Dernière intervention - 13 févr. 2018 à 20:01
voir le fichier envoyé depuis hier
Commenter la réponse de gbinforme