Fermer UserForm

  • Initiateur de la discussion delirium
  • Date de début
D

delirium

Guest
Bonsoir tous le monde.

J'ai réaliser une fonction qui ouvre un UserForm nomé "UserForm1" sur lequel l'utilisateur à le choix entre plusieur boutons.
Lorsque l'utilisateur cklick sur un de ced bouton, la valeur correspondant à ce bouton doit s'afficher dans la cellule "A2" de la feuille 6, de manière instantané et fermé l'UserForm1 pour lancer automatiquement un autre UserForm nomé "DépCotier".

J'ai réaliser en partie le code que voici :

Private Sub Label1_Click()
UserForm1.Close
Range("A2").Select
Feuil6.Range("A2") = "75"
DépCotier.Show
End Sub

Mais apparament il y à des erreurs. Si quelqu'un peut m'aider, Merci d'avance.
 
L

Lord Nelson

Guest
Salut Delirium,

A première vue, Range("A2").Select est à supprimer car dans le UserForm, VBA ne peut savoir à quelle feuille correspond "A2". D'autre part, il n'est pas nécessaire de sélectionner cette cellule pour y mettre une donnée, l'instruction Feuil6.Range("A2") = "75" est suffisante.
Néanmoins, si tu y tiens, tu peux écrire Feuil6.Range("A2").Select

A+
Horatio
 
T

titus

Guest
Bonjour

Moi je verrais ça comme ça:

Sub WorkBook_Open
Load UserForm1
Load DépCotier
UserForm1.Show
End Sub

Private Sub Label1_Click()
UserForm1.Hide 'ou UnLoad UserForm1
Range("A2").Select
Feuil6.Range("A2") = "75"
DépCotier.Show
End Sub
 
G

G.David

Guest
Salut
essaie ceci
un bouton sur ta feuille
lier à une macro
sub macro1()
userform1.show
end sub

user form1 bouton 1

Private Sub CommandButton1_Click()
Range("a1").Value = TextBox1.Value
UserForm1.Hide
UserForm2.Show
End Sub

Cordialement
G.David
 
D

delirium

Guest
Bonsoir tous le monde.

J'ai testé vos solutions et pour ce qui est de celle de G.David je n'ais pas réussi à la mettre en place et j'ai abandonné (désolé).
Pour la solution que m'a donner titus, a savoir :

Sub WorkBook_Open
Load UserForm1
Load DépCotier
UserForm1.Show
End Sub

Private Sub Label1_Click()
UserForm1.Hide 'ou UnLoad UserForm1
Range("A2").Select
Feuil6.Range("A2") = "75"
DépCotier.Show
End Sub

J'ais aussi tester mon code avec la modif "Unload UserForm1"
que ma donner titus. ce qui donne le code suivant :

Private Sub Label1_Click()
Unload UserForm1
Feuil6.Range("A2") = "75"
DépCotier.Show
End Sub

Et les deux fonctionne. Mais je voudrais tout de même savoir à quoi sert :

Sub WorkBook_Open
Load UserForm1
Load DépCotier
UserForm1.Show
End Sub

Je ne vois pas (je suis débutant en VBA).

Merci de votre coups de main.

A plus tard.
 
G

G.David

Guest
Salut
le load charge l'objet en memmoire
le show l'affiche
si tu le mets dans worbook + open ceci se lance à l'ouverture du classeur

Salut
G.David
PS je te joint un bout de fichier sur ce dont je t'avais parler
 

Pièces jointes

  • Classeur1.zip
    9.5 KB · Affichages: 54
  • Classeur1.zip
    9.5 KB · Affichages: 59
  • Classeur1.zip
    9.5 KB · Affichages: 62
D

Delirum

Guest
merci pour ton fichier G.David, je vais pouvoir le décortiquer.
A revenir sur ton explication sur le code de titus, la partie :

Sub WorkBook_Open
Load UserForm1
Load DépCotier
UserForm1.Show
End Sub

n'est réellement utile que lorsque l'on est sure que l'utlisateur s'en servira.
Dans le cas d'un userform dont l'ouverture dépend du choix de l'utilisateur (et donc peut ne pas être utilisé), cette partie du code n'est pas nécessaire.
merci a+
 

Statistiques des forums

Discussions
312 493
Messages
2 088 957
Membres
103 990
dernier inscrit
lamiadebz