Userform dynamique

Le
Fredo(67)
Bonjour,

j'ai un fichier Excel qui représente un suivi d'ouvrier
le fichier est organisé ainsi
1 onglet par mois, + 1 onglet de totalisation/recapitulation

Sur chaque onglet, le nom de l'ouvrier est situé toutes les 10 lignes
A1 - a10 - a20 - a30 - a40 - a50
(les 9 lignes intermédiaires sont les zones de saisies)

ce que je voudrais faire est la chose suivante.
Un onglet est actif (disons Février)
Au lancement d'une macro, un Userform s'ouvre avec 1 bouton par
ouvrier, au clic sur le bouton d'un ouvrier, l'userform se ferme, et
la sélection se trouve sur l'ouvrier sélectionné.
Sachant que le nombre d'ouvrier peut changer sur chaque onglet sans
toutefois dépasser 20.

Comment cela serait il possible ?

Merci
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
papou
Le #7078391
Bonjour
Plutôt que d'utiliser des boutons pour chaque ouvrier, je te suggère une
zone de liste (ce sera plus léger ;-).
A l'initialisation de ton formulaire, tu établis ta liste d'ouvrier.
Une fois l'ouvrier choisi dans ta liste, tu es directement positionné sur sa
ligne dans la feuille.
Il te faut 1 userform, un objet combobox et le code suivant à positionner
dans ton userform :

Private Sub ComboBox1_Change()
ThisWorkbook.ActiveSheet.Range("A1:A65536").Find(ComboBox1.Value).Activate
UserForm1.Hide
Unload UserForm1
End Sub
Private Sub UserForm_Initialize()
Dim i As Long
For i = 10 To ThisWorkbook.ActiveSheet.Range("A65536").End(xlUp).Row Step 10
Me.ComboBox1.AddItem ThisWorkbook.ActiveSheet.Range("A" & i).Value
Next i
End Sub

Cordialement
Pascal



"Fredo(67)"
Bonjour,

j'ai un fichier Excel qui représente un suivi d'ouvrier
le fichier est organisé ainsi
1 onglet par mois, + 1 onglet de totalisation/recapitulation

Sur chaque onglet, le nom de l'ouvrier est situé toutes les 10 lignes
A1 - a10 - a20 - a30 - a40 - a50
(les 9 lignes intermédiaires sont les zones de saisies)

ce que je voudrais faire est la chose suivante.
Un onglet est actif (disons Février)
Au lancement d'une macro, un Userform s'ouvre avec 1 bouton par
ouvrier, au clic sur le bouton d'un ouvrier, l'userform se ferme, et
la sélection se trouve sur l'ouvrier sélectionné.
Sachant que le nombre d'ouvrier peut changer sur chaque onglet sans
toutefois dépasser 20.

Comment cela serait il possible ?

Merci
Fredo(67)
Le #7078641
Salut

Bonne idée que Zone de liste
J'ai recopié le code que tu m'as donné,
j'ai créé un userform dans lequel j'ai inséré une zone de liste
modifiable (ComboBox1)
j'ai aussi créé une tita macro pour lancer l'userform

mais le combobox reste vide....

aurais-je loupé une config, ou variable
Pour mémoire ton code n'a pas été modifié par le copier/coller....
Fredo(67)
Le #7078611
Ouch !
Une petite précision supplémentaire ultra-importante

Les noms des ouvrier ne sont pas notés dans mes onglets, mais sont
issus d'une formule
þuil1!A1.......

il faut donc que la macro ne s'attache pas au contenu de la cellule
mais à la valeurs renvoyée.

Est-ce encore possible
papou
Le #7078601
Re
Non, en principe tu as tout ce qu'il te faut.
Tu as bien sûr positionné le code dans le code du Userform et non pas dans
un module ?

Cordialement
Pascal

"Fredo(67)"
Salut

Bonne idée que Zone de liste
J'ai recopié le code que tu m'as donné,
j'ai créé un userform dans lequel j'ai inséré une zone de liste
modifiable (ComboBox1)
j'ai aussi créé une tita macro pour lancer l'userform

mais le combobox reste vide....

aurais-je loupé une config, ou variable
Pour mémoire ton code n'a pas été modifié par le copier/coller....
papou
Le #7078761
Pas d'incidence pour la construction de la liste, je viens de vérifier.
Par contre il faut modifier la 1ère ligne dans l'évènement Combobox1.Change
:
ThisWorkbook.ActiveSheet.Range("A1:A65536").Find(ComboBox1.Value,
LookIn:=xlValues).Activate

Cordialement
Pascal


"Fredo(67)"
Ouch !
Une petite précision supplémentaire ultra-importante

Les noms des ouvrier ne sont pas notés dans mes onglets, mais sont
issus d'une formule
þuil1!A1.......

il faut donc que la macro ne s'attache pas au contenu de la cellule
mais à la valeurs renvoyée.

Est-ce encore possible
papou
Le #7078751
Pour vérifier, voici l'exemple :
http://cjoint.com/data/gxqxFutlbJ.htm

Cordialement
Pascal

"Fredo(67)"
Bonjour,

j'ai un fichier Excel qui représente un suivi d'ouvrier
le fichier est organisé ainsi
1 onglet par mois, + 1 onglet de totalisation/recapitulation

Sur chaque onglet, le nom de l'ouvrier est situé toutes les 10 lignes
A1 - a10 - a20 - a30 - a40 - a50
(les 9 lignes intermédiaires sont les zones de saisies)

ce que je voudrais faire est la chose suivante.
Un onglet est actif (disons Février)
Au lancement d'une macro, un Userform s'ouvre avec 1 bouton par
ouvrier, au clic sur le bouton d'un ouvrier, l'userform se ferme, et
la sélection se trouve sur l'ouvrier sélectionné.
Sachant que le nombre d'ouvrier peut changer sur chaque onglet sans
toutefois dépasser 20.

Comment cela serait il possible ?

Merci
Fredo(67)
Le #7078731
Bon, tu vas rire,
mais le temps de dire que cela ne marchait pas, que cela s'est résolu
(tout seul ??)

donc en fait ca marche
j'ai adapté la ligne comme indiquée, pour prendre en compte la valeur
de la cellule.
Dernière précision

le ComboBox apparait vide, et il faut cliquer sur la flèche pour faire
apparaitre la liste.
Y'aurait il moyen de faire que la zone blanche soit pré-remplie avec
les premières valeurs, sans avoir à cliquer sur la flêche.

Merci
dunkelzahn
Le #7079541
Bonjour,

Oui en faisant

Combobox.ListIndex = 0

0 étant la première valeur de la liste.

On 23 juin, 16:29, "Fredo(67)"
Bon, tu vas rire,
mais le temps de dire que cela ne marchait pas, que cela s'est résolu
(tout seul ??)

donc en fait ca marche
j'ai adapté la ligne comme indiquée, pour prendre en compte la valeur
de la cellule.
Dernière précision

le ComboBox apparait vide, et il faut cliquer sur la flèche pour faire
apparaitre la liste.
Y'aurait il moyen de faire que la zone blanche soit pré-remplie avec
les premières valeurs, sans avoir à cliquer sur la flêche.

Merci


Publicité
Poster une réponse
Anonyme