Données d'un userform vers une autre feuille excel [Résolu/Fermé]

Signaler
Messages postés
13
Date d'inscription
vendredi 26 février 2016
Statut
Membre
Dernière intervention
3 mars 2016
-
Messages postés
13
Date d'inscription
vendredi 26 février 2016
Statut
Membre
Dernière intervention
3 mars 2016
-
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;
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.

2 réponses

Messages postés
32527
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 mai 2021
3 493
Bonjour,

Sheets("LBP").Rows("3:3").Select 

1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
13
Date d'inscription
vendredi 26 février 2016
Statut
Membre
Dernière intervention
3 mars 2016

J'avais déjà essayé mais ça me met une erreur d'exécution 1004
"La méthode Select de la classe Range a échoué" !!
Messages postés
12251
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
17 mars 2021
2 609
Bonjour,

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

Messages postés
12251
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
17 mars 2021
2 609 >
Messages postés
13
Date d'inscription
vendredi 26 février 2016
Statut
Membre
Dernière intervention
3 mars 2016

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 :
'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
Messages postés
13
Date d'inscription
vendredi 26 février 2016
Statut
Membre
Dernière intervention
3 mars 2016

Pardon, Load à la place de Dowload
ça fonctionne mais est ce la bonne méthode?
Messages postés
13
Date d'inscription
vendredi 26 février 2016
Statut
Membre
Dernière intervention
3 mars 2016

Ok, je vais tester mais tu m'aides beaucoup pour comprendre les subtilités.

J'aurai sûrement d'autres astuces à te demander...

Encore merci
Messages postés
12251
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
17 mars 2021
2 609 >
Messages postés
13
Date d'inscription
vendredi 26 février 2016
Statut
Membre
Dernière intervention
3 mars 2016

d'autres astuces ==> pour cela, afin de mieux indexer les Questions/Réponses du forum, il conviendra de poser d'autres questions.
En effet, un système basé sur une Question = une (des) réponse(s) permet aux autres internautes de trouver plus facilement...
Messages postés
13
Date d'inscription
vendredi 26 février 2016
Statut
Membre
Dernière intervention
3 mars 2016
>
Messages postés
12251
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
17 mars 2021

Je n'y manquerai pas.

Je suis nouveau dans ce domaine, mais si mon ignorance peut en aider d'autres ...