Données d'un userform vers une autre feuille excel
Résolu
fairway111
Messages postés
13
Statut
Membre
-
fairway111 Messages postés 13 Statut Membre -
fairway111 Messages postés 13 Statut Membre -
Bonjour,
Bonjour à toutes et à tous,
Je débute dans Visual Basic et je ne connais que quelques codes.
En farfouillant dans les tutos et forums j'ai quand même réussi à créer un Userform qui fonctionne très bien si le formulaire apparait sur la feuille en question
Il s'agit d'un formulaire de saisie de données qui intègre les données dans la feuille LBP;
J'ai créé une feuille Menu pour mettre un bouton de commande me permettant d'afficher le userform indépendamment de la feuille LBP
Dans mon Userform il y a un bouton valider pour que les données soient intégrées toujours à la 3eme ligne de la feuille LBP en décalant les données déjà saisies vers le bas..
Et c'est là où les ennuis commencent;
Quand je valide depuis la feuille menu , les données précédentes sont écrasées dans la ligne 3 de la feuille LBP et ça me décale les lignes vers le bas dans la feuille menu.
Que dois je rajouter comme code pour que tout fonctionne à partir de la feuille menu (sans faire apparaitre la feuille LBP)
Ci dessous le code en question;
D"avance merci pour vos conseils
Bonjour à toutes et à tous,
Je débute dans Visual Basic et je ne connais que quelques codes.
En farfouillant dans les tutos et forums j'ai quand même réussi à créer un Userform qui fonctionne très bien si le formulaire apparait sur la feuille en question
Il s'agit d'un formulaire de saisie de données qui intègre les données dans la feuille LBP;
J'ai créé une feuille Menu pour mettre un bouton de commande me permettant d'afficher le userform indépendamment de la feuille LBP
Dans mon Userform il y a un bouton valider pour que les données soient intégrées toujours à la 3eme ligne de la feuille LBP en décalant les données déjà saisies vers le bas..
Et c'est là où les ennuis commencent;
Quand je valide depuis la feuille menu , les données précédentes sont écrasées dans la ligne 3 de la feuille LBP et ça me décale les lignes vers le bas dans la feuille menu.
Que dois je rajouter comme code pour que tout fonctionne à partir de la feuille menu (sans faire apparaitre la feuille LBP)
Ci dessous le code en question;
Private Sub CommandButton3_Click() Rows("3:3").Select Selection.Insert Shift:=x1Down, CopyOrigin:=x1FormatFromLeftOrAbove Sheets("LBP").Range("A3").Value = ComboBox1 Sheets("LBP").Range("B3").Value = TextBox1 Sheets("LBP").Range("C3").Value = TextBox2 Sheets("LBP").Range("D3").Value = TextBox3 Sheets("LBP").Range("E3").Value = TextBox4 Sheets("LBP").Range("F3").Value = TextBox5 Sheets("LBP").Range("G3").Value = TextBox6 Sheets("LBP").Range("H3").Value = DTPicker1 Sheets("LBP").Range("I3").Value = TextBox8 Sheets("LBP").Range("J3").Value = ComboBox2 End Sub
D"avance merci pour vos conseils
EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici :ICI Merci d'y penser dans tes prochains messages. |
A voir également:
- Données d'un userform vers une autre feuille excel
- Liste déroulante excel - Guide
- Feuille de pointage excel - Télécharger - Tableur
- Trier des données excel - Guide
- Déplacer une colonne excel - Guide
- Word et excel gratuit - Guide
2 réponses
Bonjour,
Bloc With...End With :
Bloc With...End With :
Private Sub CommandButton3_Click() With Sheets("LBP") .Rows("3:3").Insert Shift:=x1Down, CopyOrigin:=x1FormatFromLeftOrAbove .Range("A3").Value = ComboBox1 .Range("B3").Value = TextBox1 .Range("C3").Value = TextBox2 .Range("D3").Value = TextBox3 .Range("E3").Value = TextBox4 .Range("F3").Value = TextBox5 .Range("G3").Value = TextBox6 .Range("H3").Value = DTPicker1 .Range("I3").Value = TextBox8 .Range("J3").Value = ComboBox2 End With End Sub
Merci pour le conseil,
C'est vrai que ça simplifie le code sans mettre Sheets à chaque ligne et si je comprends bien ça embarque tous les codes se référant à la feuille dans un seul bloc?
Si j'abuse encore un peu , une fois validées les données, les champs du Userform1 restent remplis et j'aimerais qu'ils se vident
Si je mets ce code en plus:
Unload Userform1
Download Userform1
UserForm1.Show
Y a t'il une autre méthode?
C'est vrai que ça simplifie le code sans mettre Sheets à chaque ligne et si je comprends bien ça embarque tous les codes se référant à la feuille dans un seul bloc?
Si j'abuse encore un peu , une fois validées les données, les champs du Userform1 restent remplis et j'aimerais qu'ils se vident
Si je mets ce code en plus:
Unload Userform1
Download Userform1
UserForm1.Show
Y a t'il une autre méthode?
tous les codes se référant à la feuille dans un seul bloc?
Pas tous. Sont "rattachés" à la feuille uniquement les Range précédés d'un point. Les autres se réfèrent à la feuille active.
Exemple :
Avec l'habitude ça vient...
Y a t'il une autre méthode?
Oui.
Pour cela, j'ai l'habitude de passer par une fonction à part.
Dans ton exemple, avec les contrôles que tu nous indiques, cela donnerait :
Et donc, pour vider l'UserForm, tu n'as qu'à placer dans ton code, ou tu le souhaites :
Pas tous. Sont "rattachés" à la feuille uniquement les Range précédés d'un point. Les autres se réfèrent à la feuille active.
Exemple :
'on place la feuil1 comme feuille active Sheets("Feuil1").Select 'on fait référence à la Feuil2 dans le bloc With : With Sheets("Feuil2") 'avec un point devant : on agit sur la Feuil2 .Range("A1") = 18 'sans le point on agit sur la feuille active : Feuil1 Range("A2") = 13 End With
Avec l'habitude ça vient...
Y a t'il une autre méthode?
Oui.
Pour cela, j'ai l'habitude de passer par une fonction à part.
Dans ton exemple, avec les contrôles que tu nous indiques, cela donnerait :
Sub Vide_Controles() ComboBox1.ListIndex = 0 TextBox1.Value = "" TextBox2.Value = "" TextBox3.Value = "" TextBox4.Value = "" TextBox5.Value = "" TextBox6.Value = "" DTPicker1 = Date 'remet par défaut la date du jour TextBox8.Value = "" ComboBox2.ListIndex = 0 End Sub
Et donc, pour vider l'UserForm, tu n'as qu'à placer dans ton code, ou tu le souhaites :
Call Vide_Controles
"La méthode Select de la classe Range a échoué" !!