userform et plusieures feuilles

userform et plusieures feuilles - VB/VBA/VBS - Programmation

Marsh Posté le 07-02-2006 à 20:09:37    

bonjour,
bon suis relativement débutant, donc réponses faciles MERCI.... :??:  
voila, dans un classeur excel, j'ai plusieurs feuilles (75 au total)
j'ai créé un userform pour remplir certaines cellules (Textbox et combobox et label) je veux m'en servir comme d'un masque de saisie pour entrer ou modifier des cellules  
Mon souci est le suivant:
je souhaiterai que mon userform soit "asservi" à la feuille qui est ouverte (ou en cours)
cad que les données qu'il affiche soient:
- ou correspondantes aux données de la feuille (et modifiable)
- ou nulles si la feuille est vierge  (et donc remplissable).
En fait il faudrait que le userform "reconnaisse ou integre" la feuille sur laquelle je veux travailler.
Actuellement sur mon appli ça fonctionne parfaitement bien.....mais sur une seule feuille!!!
Je voudrais pouvoir faire une copie de feuille mais quelles soient complètement indépendantes les unes des autres (a part les rowsources des controles de mon userform qui sont localisés sur ma feuille 1)
je ne sais pas si je suis tres clair

Reply

Marsh Posté le 07-02-2006 à 20:09:37   

Reply

Marsh Posté le 07-02-2006 à 21:09:03    

On pourrait essayer ceci :
    TextBox1 = Sheets(ActiveSheet.Name).Cells(1, 1)
    TextBox2 = Sheets(ActiveSheet.Name).Cells(1, 2)
Le remplissage du textbox faisant référence à une cellule de la feuille active.
Cordialement  
 
Epéna

Reply

Marsh Posté le 07-02-2006 à 21:39:09    

merci de vous interresser a mon cas, c'est sympa!!
si je mets ceci:

Code :
  1. Private Sub TextBox1_Change()
  2. TextBox1 = Sheets(ActiveSheet.Name).Cells(1, 2)
  3. End Sub


le bouton d'appel de l'userform ne fonctionne plus!!!

Reply

Marsh Posté le 07-02-2006 à 23:15:41    

décidemment je n'y arrive pas !!!

Reply

Marsh Posté le 08-02-2006 à 06:56:50    

A quoi correspond le bouton d'appel de la user form ? Fait -il référence à une macro(contenant userForm.Show) située dans un module ?  
 
Il faut remplir les différents Textbox à l'initialisation de la Form:
 
Private Sub UserForm_Initialize()
TextBox1 = Sheets(ActiveSheet.Name).Cells(1, 2)
End Sub
 
Si le texte change, mettre à jour la cellule :
 
Private Sub TextBox1_Change()
    'TextBox1 = Sheets(ActiveSheet.Name).Cells(1, 2)    Le controle est bloqué par cette erreur de logique
Sheets(ActiveSheet.Name).Cells(1, 2) = TextBox1
End Sub
 
Bon courage
 
Epéna

Reply

Marsh Posté le 08-02-2006 à 09:34:20    

le user form est commandé par  

Code :
  1. Private Sub bouton_Click()
  2. userform1.Show
  3. End Sub


sur chaque feuilles
 
j'ai toujours le meme résultat c'est à dire: le remplissage de la cells(1 ,2) se fait bien avec le remplissage du textbox1 de mon userform, et lorsque je ré-ouvre mon userform j'ai bien l'affichage du contenu de cells(1 ,2).
Mais si je fais une copie de cette feuille, lorsque j'ouvre mon userform de cette feuille2 j'ai encore lle contenu de la cells(1 ,2) de la feuille1, si je modifie le contenu du textbox1 de ce userform la modification s'effectue sur la feuille1.
J'ai l'impression que le userform ne reconnait comme feuille active que la feuille1. il ne remplit pas la cells(1, 2) de la feuille2.
Merci de votre aide .......car j'ai vraiment besoin que cela marche(boulot++)

Reply

Marsh Posté le 08-02-2006 à 11:22:34    

Cela veut dire qu'il faut activer une autre feuille avant de lancer ton userform, ou alors qu'il l'active lui-même.
Ce qui suit permet d'activer la feuille de ton choix. À toi de voir sur quels critères choisir la-dite feuille.

application.Sheets("Nom_de_ta_feuille" ).activate


 

Reply

Marsh Posté le 08-02-2006 à 18:15:40    

salut paul,
 
Si tu ajoutes une variable publique pour ta feuille ça devrait sinon marcher comme il faut :

Code :
  1. Public Ws as Worksheet


dans le code de ton bouton tu ajoutes avant userform1.show :

Code :
  1. set Ws=sheets("nom_de_la_feuille" )


et dans ton userform_initialize :

Code :
  1. textbox1.text = ws.cells(1,2).value


et dans le code de textbox1_Change :

Code :
  1. ws.cells(1,2).value = textbox1.text


 
bon courage


---------------
Je bidouillle c'est sur... Mais j'essaye de faire en sorte que ça marche ;-)
Reply

Marsh Posté le 08-02-2006 à 18:35:02    

bonjour et merci ++++++++ a tous!!!
Ca y est ça marche avec

Code :
  1. Private Sub TextBox1_Change()
  2. Sheets(ActiveSheet.Name).Cells(2, 1) = TextBox1
  3. End Sub


et  

Code :
  1. Private Sub UserForm_Initialize()
  2. TextBox1 = Sheets(ActiveSheet.Name).Cells(2, 1)
  3. End Sub


Mais surtout comme le userform garde en memoire le données après sa fermeture il fallait rajouter sur son évenement de fermeture:

Code :
  1. Private Sub ok_Click()
  2. Unload userform1
  3. End Sub


et la maintenant je peux faire autant de copies indépendantes les unes des autres..
Un grand merci a tous
Au fait une toute derniere question: comment faire pour avoir dans un textbox le "pointeur" qui se positionne automatiquement a gauche...je remplis mon userform avec des tabulations ordonnées et lorsque j'arrive a un textbox le "pointeur est en plein milieu....ce qui occasionne une erreur...merci

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed