Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Userform dynamique

8 réponses
Avatar
Fredo(67)
Bonjour,

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

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

ce que je voudrais faire est la chose suivante.
Un onglet est actif (disons F=E9vrier)
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=E9lection se trouve sur l'ouvrier s=E9lectionn=E9.
Sachant que le nombre d'ouvrier peut changer sur chaque onglet sans
toutefois d=E9passer 20.

Comment cela serait il possible ?

Merci

8 réponses

Avatar
papou
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)" a écrit dans le message de news:

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
Avatar
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....
Avatar
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
Avatar
papou
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)" a écrit dans le message de news:

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....
Avatar
papou
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)" a écrit dans le message de news:

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
Avatar
papou
Pour vérifier, voici l'exemple :
http://cjoint.com/data/gxqxFutlbJ.htm

Cordialement
Pascal

"Fredo(67)" a écrit dans le message de news:

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
Avatar
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
Avatar
dunkelzahn
Bonjour,

Oui en faisant

Combobox.ListIndex = 0

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

On 23 juin, 16:29, "Fredo(67)" wrote:
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