Problème de programmation d'un USERFORM

Hugues

XLDnaute Impliqué
Bonjour le Forum

J'ai deux userform :
1°) Suppression
2°) Suppression_liste

Je souhaiterais :
- Lorsque le bouton est actionné dans la feuille accueil « suppression d’une fiche »
Le userform suppression_liste apparaisse
Dans ce userform il y a un menu déroulant renseigné à partir d'une matrice contenu dans une feuille du classeur appelé 'liste' (colonne a : code ; colonne b : dénomination) (je suis arrivé à la mettre en place)
A partir du choix d'un code de structure fait dans la liste déroulante, je souhaiterais renseigné la textbox (par le biais d’une recherche de la dénomination de la structure ) ( je n’arrive pas à le faire)
Puis on peut actionner 2 boutons :
Bouton non : fin de la procédure, retour à la feuille accueil
Bouton oui : affichage du userform suppression avec toutes les coordonnées de la structure

Le userform suppression nous donne deux choix :
Valider : la fiche à l’écran est détruite ainsi que les variables contenu dans la feuille fichier
Fermer : pas de suppression de la fiche ; retour au menu accueil

Je débute dans la programmation . Je n'arrive pas à renseigner le textbox et je ne sais pas comment donner les instruction aux boutons.

Pouvez-vous m'aider ? je joins le fichier

Merci par avance,
[file name=agenda_bis.zip size=19721]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/agenda_bis.zip[/file]
 

Pièces jointes

  • agenda_bis.zip
    19.3 KB · Affichages: 22

ZZR09

XLDnaute Occasionnel
Salut Hugues, le forum

il y a eu bataille dans ce fichier!
j'ai fait quelques modifs dans ton fichier:

avec l'évènement ''After_Update' j'ai mis TBX1 à jour (personnelement je trouve ce tbx inutile : deux informations identiques sur le même USF).

le bouton valider recherche la ligne sélectionnée et la charge en mémoire (Option Explicit)

chaque colonne de de la ligne en question doit être chargée dans les tBx de l'USF 'suppression'.

cil va y avoir du ménage à faire (je te le laisse, vu ce que tu as déjà écrit comme code, cela ne devrait pas te poser de problème).

la ligne en question est supprimée.

Personnellement - si je peux me permettre - je supprimerai l'USF suppression_Liste et je contrôlerai tout à partir du combobox1 de suppression.

LE bouton 'valider' de cette usf s'appellerai 'supprimer' avec un message d'avertissement 'toutes les données de la ligne vont être supprimées et ne seront pas récupérable ...'

ç évite les clics de partout!

A+
;)
[file name=agenda_3.zip size=25014]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/agenda_3.zip[/file]
 

Pièces jointes

  • agenda_3.zip
    24.4 KB · Affichages: 23

Gibson94

Nous a quitté
Repose en paix
Bonjour Hugues, ZZR09, le forum,

Je vous apporte ma modeste contribution, peut-être pourras-tu y trouver une idée pour continuer ton projet.

[file name=agenda_bis_2.zip size=25236]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/agenda_bis_2.zip[/file]

Bonne journée à tous et à toutes.
 

Pièces jointes

  • agenda_bis_2.zip
    24.6 KB · Affichages: 25

Gibson94

Nous a quitté
Repose en paix
Re bonjour,

Juste une modif à mon premier fichier car il plantait sur la suppression de la ligne.

[file name=agenda_bis_2_20050906101343.zip size=25079]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/agenda_bis_2_20050906101343.zip[/file]

Bye...
 

Pièces jointes

  • agenda_bis_2_20050906101343.zip
    24.5 KB · Affichages: 17

Hugues

XLDnaute Impliqué
Bonjour ZZR09,
Bonjour Gibson 94,
Bonjour le Forum,

Merci pour le travail. Je prends en compte vos remarques et je vais retravailler le projet.

J'ai une petite demande à vous faire.

Dans le premier USERFORM, je souhaiterais que la valeur qui s'affiche dans le textbox,
- ne reprenne pas la valeur du combobox
- mais tienne compte de cette valeur et inscrit la dénomination

Exemple :

Dans la liste déroulante : xxx001
Dans le textbox : Bureau Paris

Comment faire cette modification ?

Merci encore pour votre aide,

Hugues
 

ZZR09

XLDnaute Occasionnel
re,

On recherche la valeur (code)
et on utilise la fonction offset pour décaler d'autant de lignes et colonnes que nécessaire. (dans notre cas : 0 ligne, 1 colonne)

dans combobox1_AfterUpdate
code :

Code:
dim z as range

with worksheets('fichier')

for each z in range('a1:a' & range('a65536').end(xlup).row)
     if z.value = me.combobox1.value then
          textbox1.value=range(z.address).offset(0,1).value
          exit sub
     end if
next z
 et voilà
A+
;)
 

Hugues

XLDnaute Impliqué
Bonjour ZZR09,
Bonjour Gibson 94,
Bonjour Le Forum,

Exuse-moi de te solliciter à nouveau mais j'ai appliquez la formule, mais rien ne s'affiche.
Que faire ?

Merci d'avance,

Hugues

Private Sub ComboBox1_AfterUpdate()
Dim z As Range

With Worksheets('fichier')

For Each z In Range('a1:a' & Range('a65536').End(xlUp).Row)
If z.Value = Me.ComboBox1.Value Then
TextBox1.Value = Range(z.Address).Offset(0, 1).Value
Exit Sub
End If
Next z
End With

End Sub
 

ZZR09

XLDnaute Occasionnel
J'ai effectivement oublié de dire que c'est un procédure du genre Private
on va essayer un truc :
en mode création (visualbasic)
affiche to USF suppression_liste
doubleClic sur ton combobox1; ils va alors basculer sur une Private sub xxx_Change ().

va sélectionner l'événement _AfterUpdate.

et colle le contenu de la macro dans cette procédure.
C'est en fait une procédure qui se lance après l'évènement mise à jour du contenu du control en question.

En cas de problème, je le ferrai, mais le mieux c'est de pratiquer un peu soi même ... on apprend mieux.

A+
:)
 

ZZR09

XLDnaute Occasionnel
Ok, j'ai fait qqs modifs dans le fichier joint.
En fait, combobox1 fonctionnait déjà avec AfterUpdate.

voici le code que je te propose :
Code:
Private Sub ComboBox1_AfterUpdate()
Dim z As Range
Me.TextBox1 = Me.ComboBox1.Value

On Error Resume Next 'pour ne pas que ça plant si 'fichier est déjà activé
Application.ScreenUpdating = False 'pour que l'affichage reste sur la feuille active
Sheets('fichier').Activate
For Each z In Range('a1:a' & Range('a65536').End(xlUp).Row)
    If z.Value = Me.ComboBox1.Value Then
        TextBox1.Value = Range(z.Address).Offset(0, 1).Value 'offset = décaler la référence
        Exit Sub
    End If
Next z

End Sub

A+
;) [file name=agenda_3_20050906144321.zip size=20264]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/agenda_3_20050906144321.zip[/file]
 

Pièces jointes

  • agenda_3_20050906144321.zip
    19.8 KB · Affichages: 20

Discussions similaires

Réponses
2
Affichages
318

Statistiques des forums

Discussions
312 225
Messages
2 086 411
Membres
103 201
dernier inscrit
centrale vet