Créer un userform réutilisable

Résolu/Fermé
lanetmel Messages postés 200 Date d'inscription mercredi 24 août 2011 Statut Membre Dernière intervention 15 mars 2018 - 5 oct. 2011 à 16:40
lanetmel Messages postés 200 Date d'inscription mercredi 24 août 2011 Statut Membre Dernière intervention 15 mars 2018 - 20 oct. 2011 à 15:07
Bonjour,

J'ai créer un userform afin qu,il soit plus simple pour les utilisateurs d'entrer des données.
Quand ils entrent les données elles vont se placer dans divers celles de ma feuille de calcul.
à chaque jour il faut entrer les mêmes types de données mais on de doit pas midifier celles de la veille...puis-je toujours utiliser le même?

merci à l'avance
Mélanie
A voir également:

7 réponses

Chris 94 Messages postés 50978 Date d'inscription mardi 8 janvier 2008 Statut Modérateur Dernière intervention 17 février 2023 7 324
18 oct. 2011 à 15:21
Up
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
18 oct. 2011 à 16:38
Salut mélanie,
Merci Chris pour la remontée.
Oui il est possible d'utiliser le même. C'est même fortement recommandé.

Supposons que sur ton userform, tu disposes de 5 textbox (TextBox1, TextBox2, TextBox3, TextBox4, TextBox5) et d'un bouton de commande (CommandButton1) qui te sert à valider.
Tu ouvres ton classeur, saisie tes données dans les textbox et clic sur valider.
Tes données sont transférées, grâce à ton code, en feuille : Feuil2 cellules : de A1 à E1.
Le lendemain, tu ouvres ton classeur, saisie tes textbox, et, en cliquant sur valider, tu souhaites que tes données soient enregistrées de A2 à E2. Tu ne travailles donc plus sur des adresses de cellules fixes, mais sur les cellules se situant sur la première ligne vide de A à E.
OK avec ceci?
Bon alors le code de ce que je viens de décrire serait :
Private Sub CommandButton1_Click()
Dim Lign As Long

With Sheets("Feuil2")
    Lign = .Range("A" & Rows.Count).End(xlUp).Row + 1
    .Cells(Lign, 1) = TextBox1
    .Cells(Lign, 2) = TextBox2
    .Cells(Lign, 3) = TextBox3
    .Cells(Lign, 4) = TextBox4
    .Cells(Lign, 5) = TextBox5
End With
End Sub

Code dans lequel on peux intégrer une boucle, pour le cas ou on aurait 26 textbox qui renverraient, dans le bon ordre, leurs donénes dans les 26 1eres colonnes de la feuil2 :
Private Sub CommandButton1_Click()
Dim Lign As Long
Dim Col As Byte

With Sheets("Feuil2")
    Lign = .Range("A" & Rows.Count).End(xlUp).Row + 1
    For Col = 1 To 26 'dans le cas de 26 colonnes!!!!!
        .Cells(Lign, Col) = Me.Controls("TextBox" & Col)
    Next Col
End With
End Sub
0
lanetmel Messages postés 200 Date d'inscription mercredi 24 août 2011 Statut Membre Dernière intervention 15 mars 2018 4
18 oct. 2011 à 17:41
Bonjour Frank,
Désolé du délai, dans mon suivi de sujet je ne voyais que j'avais une réponse. alors premièrement un énorme merci! Je commence en VbA et je dois dire qu'à date je semble pas comprendre grand chose et ça m'énerve un peu!!! Alors présentement J'ai ceci


Private Sub CmdOK_Click()
Sheets("tournée").Range("D10").Value = TextBox1.Value
Sheets("Tournée").Range("E10").Value = TextBox2.Value
Sheets("Tournée").Range("D11").Value = TextBox3.Value
Sheets("Tournée").Range("E11").Value = TextBox4.Value
Sheets("pesées").Range("c5").Value = TextBox5.Value
Sheets("pesées").Range("D5").Value = TextBox6.Value
Sheets("pesées").Range("e5").Value = TextBox7.Value
Sheets("pesées").Range("f5").Value = TextBox8.Value
Sheets("pesées").Range("g5").Value = TextBox9.Value
Sheets("pesées").Range("h5").Value = TextBox10.Value
Sheets("pesées").Range("i5").Value = TextBox11.Value
Sheets("pesées").Range("j5").Value = TextBox12.Value
Unload Me

End Sub

Private Sub TextBox1_Change()
Sheets("Tournée").Range("D10").Value = TextBox1.Value
End Sub


Private Sub TextBox2_Change()
Sheets("Tournée").Range("E10").Value = TextBox2.Value
End Sub

Private Sub TextBox3_Change()
Sheets("Tournée").Range("D11").Value = TextBox3.Value
End Sub

Private Sub TextBox4_Change()
Sheets("Tournée").Range("E11").Value = TextBox4.Value
End Sub

Private Sub TextBox5_Change()
Sheets("pesées").Range("c5").Value = TextBox5.Value
End Sub

Private Sub TextBox6_Change()
Sheets("pesées").Range("D5").Value = TextBox6.Value
End Sub

Private Sub TextBox7_Change()
Sheets("pesées").Range("e5").Value = TextBox7.Value
End Sub

Private Sub TextBox8_Change()
Sheets("pesées").Range("f5").Value = TextBox8.Value
End Sub

Private Sub TextBox9_Change()
Sheets("pesées").Range("g5").Value = TextBox9.Value
End Sub
Private Sub TextBox10_Change()
Sheets("pesées").Range("h5").Value = TextBox10.Value
End Sub

Private Sub TextBox11_Change()
Sheets("pesées").Range("i5").Value = TextBox11.Value
End Sub

Private Sub TextBox12_Change()
Sheets("pesées").Range("j5").Value = TextBox12.Value
End Sub
Private Sub CmdAnnuler_Click()
Unload Me
End Sub;

Si je comprends bien j'enlève tout ça?!
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
19 oct. 2011 à 08:46
Bonjour,
Que veux tu exactement?
Dans ton code, je vois deux procédures différentes :
1- les "textbox_change" => envoient pendant la saisie, en direct live, les infos saisies dans les textbox, dans les cellules, au fur et à mesure de la saisie.
2- le "CmdOK_Click" => envoie les données saisies dans les textbox au clic sur le bouton.
Je pense donc :
- que tu dois supprimer tous les TextBox_Change
- que tu dois adapter le code de ton bouton de commande.
Pour l'instant ne conserve que :
Private Sub CmdOK_Click() 
Sheets("tournée").Range("D10").Value = TextBox1.Value 
Sheets("Tournée").Range("E10").Value = TextBox2.Value 
Sheets("Tournée").Range("D11").Value = TextBox3.Value 
Sheets("Tournée").Range("E11").Value = TextBox4.Value 
Sheets("pesées").Range("c5").Value = TextBox5.Value 
Sheets("pesées").Range("D5").Value = TextBox6.Value 
Sheets("pesées").Range("e5").Value = TextBox7.Value 
Sheets("pesées").Range("f5").Value = TextBox8.Value 
Sheets("pesées").Range("g5").Value = TextBox9.Value 
Sheets("pesées").Range("h5").Value = TextBox10.Value 
Sheets("pesées").Range("i5").Value = TextBox11.Value 
Sheets("pesées").Range("j5").Value = TextBox12.Value 
Unload Me 
End Sub 

Private Sub CmdAnnuler_Click() 
Unload Me 
End Sub


Ensuite, explique toi...
1ère utilisation : TextBox1 dans D10, TextBox2 dans E10, TextBox3 dans D11 etc...
2ème utilisation : ???
3ème utilisation : ???
0
lanetmel Messages postés 200 Date d'inscription mercredi 24 août 2011 Statut Membre Dernière intervention 15 mars 2018 4
19 oct. 2011 à 13:24
Bonjour,
ça c'est super ça fonctionne. maintenant je veux prendre le même user form et la fois suivante que les données se mettent comme suit :

Sheets("tournée").Range("F10").Value = TextBox1.Value
Sheets("Tournée").Range("G10").Value = TextBox2.Value
Sheets("Tournée").Range("F11").Value = TextBox3.Value
Sheets("Tournée").Range("G11").Value = TextBox4.Value
Sheets("pesées").Range("c8").Value = TextBox5.Value
Sheets("pesées").Range("D8").Value = TextBox6.Value
Sheets("pesées").Range("e8").Value = TextBox7.Value
Sheets("pesées").Range("f8").Value = TextBox8.Value
Sheets("pesées").Range("g8").Value = TextBox9.Value
Sheets("pesées").Range("h8").Value = TextBox10.Value
Sheets("pesées").Range("i8").Value = TextBox11.Value
Sheets("pesées").Range("j8").Value = TextBox12.Value
et ainsi de suite...
un énorme merci d'avance! j'étais en train de désepérer!
Mélanie
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
Modifié par pijaku le 19/10/2011 à 13:42
1- Sheets("pesées") tu passes de la ligne 5 à la ligne 8? Est ce normal? Qui aura t'il entre la 1ere utilisation et la 2nde dans les lignes 6 et 7?
2- Sheets("Tournée") tu ajoutes des données en colonne, toujours lignes 10 & 11?
0
lanetmel Messages postés 200 Date d'inscription mercredi 24 août 2011 Statut Membre Dernière intervention 15 mars 2018 4
19 oct. 2011 à 14:35
Salut,

1- oui je saute 2 ligne car entre deux il y a des calculs.
2- oui
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
19 oct. 2011 à 14:36
pour le 1- tu me confirmes que les lignes 6 et 7 seront remplies AVANT la 2nde utilisation de l'userform?
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
19 oct. 2011 à 14:48
Re-
Alors ton code complet devient :
Private Sub CmdOK_Click() 
Dim Col As Byte, Lign As Long

With Sheets("tournée")
    Col = .Cells(10, .Cells.Columns.Count).End(xlToLeft).Column
    .Cells(10, Col + 1) = TextBox1
    .Cells(10, Col + 2) = TextBox2
    .Cells(11, Col + 1) = TextBox3
    .Cells(11, Col + 2) = TextBox4
End With
With Sheets("pesées")
    Lign = .Range("C" & Rows.Count).End(xlUp).Row
    .Cells(Lign + 1, 3) = TextBox5.Value 
    .Cells(Lign + 1, 4) = TextBox6.Value 
    .Cells(Lign + 1, 5) = TextBox7.Value 
    .Cells(Lign + 1, 6) = TextBox8.Value 
    .Cells(Lign + 1, 7) = TextBox9.Value 
    .Cells(Lign + 1, 8) = TextBox10.Value 
    .Cells(Lign + 1, 9) = TextBox11.Value 
    .Cells(Lign + 1, 10) = TextBox12.Value
End With
Unload Me 
End Sub 
Private Sub CmdAnnuler_Click() 
Unload Me 
End Sub

Testes et reviens nous dire...
0

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

Posez votre question
lanetmel Messages postés 200 Date d'inscription mercredi 24 août 2011 Statut Membre Dernière intervention 15 mars 2018 4
19 oct. 2011 à 15:06
Bonjour

ça ne fonctionne pas... Cela peut-il être parce que dans la feuille tournée je ne commence à mettrre des infos pour la première fois à la ligne 10 et que dans la feuille pesées je ne commence qu'à la ligne 5?

merci
Mélanie
0
lanetmel Messages postés 200 Date d'inscription mercredi 24 août 2011 Statut Membre Dernière intervention 15 mars 2018 4
19 oct. 2011 à 15:08
il ne se passe rien, les données ne s'inscrivent ni à mesure ni à la fermeture de mon usf
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
19 oct. 2011 à 15:19
ET POURTANT CE CODE FONCTIONNE!!!!! Faut :
- saisir les données
- cliquer sur le bouton "OK"!!!!!

il ne se passe rien, les données ne s'inscrivent ni à mesure ni à la fermeture de mon usf Non pas au fur et à mesure, rappelle toi on a supprimé cette option... Ni à la fermeture, tu as des boutons OK et annuler! Les actions ne se font qu'au clic sur ces boutons!!!
feuille pesées je ne commence qu'à la ligne 5 j'ai donc ajouté cette ligne pour le test :
If Lign < 5 Then Lign = 4
0
lanetmel Messages postés 200 Date d'inscription mercredi 24 août 2011 Statut Membre Dernière intervention 15 mars 2018 4
19 oct. 2011 à 15:26
Bonjour.
Toujours rien ne se passe... et pourtant je clique sur le bouton ok.
je dois bien mettre ce code dans le usf?
merci encore
Mélanie
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
19 oct. 2011 à 15:27
As tu cliqué sur le lien que je t'ai mis dans ma dernière réponse et essayé avec le classeur que je t'ai transmis par ce biais???????????
0
lanetmel Messages postés 200 Date d'inscription mercredi 24 août 2011 Statut Membre Dernière intervention 15 mars 2018 4
19 oct. 2011 à 15:32
Bonjour

oui j'ai essayé et rien ne se passe.... voici le lien de mon fichier...

http://www.cijoint.fr/cjlink.php?file=cj201110/cijXd3Xw9n.xls

merci beaucoup de m'aider
Mélanie
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
20 oct. 2011 à 09:55
Bonjour,
Dernière tentative...
Donne moi une copie du classeur définitif, sur lequel je pourrais travailler...
0
lanetmel Messages postés 200 Date d'inscription mercredi 24 août 2011 Statut Membre Dernière intervention 15 mars 2018 4
20 oct. 2011 à 14:11
Bonjour,

http://www.cijoint.fr/cjlink.php?file=cj201110/cijVufCCzb.xls

merci beaucoup de ta patience
Mélanie
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
20 oct. 2011 à 14:30
T'inquiète, c'est un peu aussi de ma faute...

Essaye ce fichier : http://www.cijoint.fr/cjlink.php?file=cj201110/cijcTZmCya.xls
0
lanetmel Messages postés 200 Date d'inscription mercredi 24 août 2011 Statut Membre Dernière intervention 15 mars 2018 4
20 oct. 2011 à 14:43
Tu es Génial!!!! :)C'est merveilleux!!!!!! un ÉNORME merci
Tu fais ma journée !!!!!!
Mélanie
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
20 oct. 2011 à 15:03
Non suis pas génial...
C'est merveilleux, je n'irais pas jusque là...
De rien..
A+
0
lanetmel Messages postés 200 Date d'inscription mercredi 24 août 2011 Statut Membre Dernière intervention 15 mars 2018 4
20 oct. 2011 à 15:07
chacun son opinion! T'as été tellement patient! :)
0