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
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
A voir également:
- Créer un userform réutilisable
- Créer un compte gmail - Guide
- Créer un compte google - Guide
- Créer un groupe whatsapp - Guide
- Créer un compte instagram - Guide
- Créer un organigramme - Guide
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
18 oct. 2011 à 15:21
Up
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
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 :
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 :
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
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
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?!
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?!
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
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 :
Ensuite, explique toi...
1ère utilisation : TextBox1 dans D10, TextBox2 dans E10, TextBox3 dans D11 etc...
2ème utilisation : ???
3ème utilisation : ???
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 : ???
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
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
ç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
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
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?
2- Sheets("Tournée") tu ajoutes des données en colonne, toujours lignes 10 & 11?
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
19 oct. 2011 à 14:35
Salut,
1- oui je saute 2 ligne car entre deux il y a des calculs.
2- oui
1- oui je saute 2 ligne car entre deux il y a des calculs.
2- oui
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
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?
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
19 oct. 2011 à 14:48
Re-
Alors ton code complet devient :
Testes et reviens nous dire...
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...
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
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
ç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
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
19 oct. 2011 à 15:08
il ne se passe rien, les données ne s'inscrivent ni à mesure ni à la fermeture de mon usf
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
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
- 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
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
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
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
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
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???????????
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
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
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
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
20 oct. 2011 à 09:55
Bonjour,
Dernière tentative...
Donne moi une copie du classeur définitif, sur lequel je pourrais travailler...
Dernière tentative...
Donne moi une copie du classeur définitif, sur lequel je pourrais travailler...
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
20 oct. 2011 à 14:11
Bonjour,
http://www.cijoint.fr/cjlink.php?file=cj201110/cijVufCCzb.xls
merci beaucoup de ta patience
Mélanie
http://www.cijoint.fr/cjlink.php?file=cj201110/cijVufCCzb.xls
merci beaucoup de ta patience
Mélanie
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
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
Essaye ce fichier : http://www.cijoint.fr/cjlink.php?file=cj201110/cijcTZmCya.xls
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
20 oct. 2011 à 14:43
Tu es Génial!!!! :)C'est merveilleux!!!!!! un ÉNORME merci
Tu fais ma journée !!!!!!
Mélanie
Tu fais ma journée !!!!!!
Mélanie
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
20 oct. 2011 à 15:03
Non suis pas génial...
C'est merveilleux, je n'irais pas jusque là...
De rien..
A+
C'est merveilleux, je n'irais pas jusque là...
De rien..
A+
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
20 oct. 2011 à 15:07
chacun son opinion! T'as été tellement patient! :)