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

autoTab

16 réponses
Avatar
elect31
Bonjour à tous
Soient 3 comboBox dont le RowSource est déjà déterminé.
ComboBox0,ComboBox1,ComboBox2
J'aimerais qu'il y ait un autoTab automatique de l'un à l'autre, quand
je choisi une valeur dans leur liste respective.
Ces valeurs n'ont pas toujours la même longueur dans leur liste
respective, d'où le problème.

Je pourrais faire une proc du style:
Private Sub ComboBox0_Change()
Me.ComboBox1.SetFocus
End Sub
Private Sub ComboBox1_Change()
Me.ComboBox2.SetFocus
End Sub
mais en fait, j'ai 24 comboBox dans un Frame et je voudrais rajouter 10
frames identiques à celui que j'ai déjà : donc beaucoup trop de comboBox
pour faire une proc à chaque fois.
N'y a t'il pas un moyen plus économique?

En ce moment je travaille sur la piste suivante: déterminer le nom du
controle actif (mais comme ils sont dans un Frame, pour l'instant on me
dit que c'est le Frame qui est actif...), pour pouvoir l'identifier par
son nom. Reprendre son nom dans une boucle de 0 à 24...
Mais bon, je galère et j'aimerais pas y passer Noël...
Merci de vos réponses si vous pouvez m'aider.

10 réponses

1 2
Avatar
michdenis
Bonjour,

Un fichier exemple utilisant un module de classe

http://cjoint.com/?mupMtkKrdD



"elect31" a écrit dans le message de groupe de discussion :
#
Bonjour à tous
Soient 3 comboBox dont le RowSource est déjà déterminé.
ComboBox0,ComboBox1,ComboBox2
J'aimerais qu'il y ait un autoTab automatique de l'un à l'autre, quand
je choisi une valeur dans leur liste respective.
Ces valeurs n'ont pas toujours la même longueur dans leur liste
respective, d'où le problème.

Je pourrais faire une proc du style:
Private Sub ComboBox0_Change()
Me.ComboBox1.SetFocus
End Sub
Private Sub ComboBox1_Change()
Me.ComboBox2.SetFocus
End Sub
mais en fait, j'ai 24 comboBox dans un Frame et je voudrais rajouter 10
frames identiques à celui que j'ai déjà : donc beaucoup trop de comboBox
pour faire une proc à chaque fois.
N'y a t'il pas un moyen plus économique?

En ce moment je travaille sur la piste suivante: déterminer le nom du
controle actif (mais comme ils sont dans un Frame, pour l'instant on me
dit que c'est le Frame qui est actif...), pour pouvoir l'identifier par
son nom. Reprendre son nom dans une boucle de 0 à 24...
Mais bon, je galère et j'aimerais pas y passer Noël...
Merci de vos réponses si vous pouvez m'aider.
Avatar
isabelle
bonjour Denis,

je réussi à ouvrir ton fichier, mais il n'y a rien dedans :-(

isabelle

michdenis a écrit :
Bonjour,

Un fichier exemple utilisant un module de classe

http://cjoint.com/?mupMtkKrdD



"elect31" a écrit dans le message de groupe de discussion :
#
Bonjour à tous
Soient 3 comboBox dont le RowSource est déjà déterminé.
ComboBox0,ComboBox1,ComboBox2
J'aimerais qu'il y ait un autoTab automatique de l'un à l'autre, quand
je choisi une valeur dans leur liste respective.
Ces valeurs n'ont pas toujours la même longueur dans leur liste
respective, d'où le problème.

Je pourrais faire une proc du style:
Private Sub ComboBox0_Change()
Me.ComboBox1.SetFocus
End Sub
Private Sub ComboBox1_Change()
Me.ComboBox2.SetFocus
End Sub
mais en fait, j'ai 24 comboBox dans un Frame et je voudrais rajouter 10
frames identiques à celui que j'ai déjà : donc beaucoup trop de comboBox
pour faire une proc à chaque fois.
N'y a t'il pas un moyen plus économique?

En ce moment je travaille sur la piste suivante: déterminer le nom du
controle actif (mais comme ils sont dans un Frame, pour l'instant on me
dit que c'est le Frame qui est actif...), pour pouvoir l'identifier par
son nom. Reprendre son nom dans une boucle de 0 à 24...
Mais bon, je galère et j'aimerais pas y passer Noël...
Merci de vos réponses si vous pouvez m'aider.




Avatar
michdenis
Bonjour Isabelle,

| je réussi à ouvrir ton fichier, mais il n'y a rien dedans :-(

Les gens sont rendus difficile, on publie un fichier, il n'y a
aucune erreur dans ce dernier et ce n'est pas encore assez !
;-))

Voilà quelque chose pour vous amusez :

http://cjoint.com/?musZGlwZoI
Avatar
elect31
Bonsoir
Je suis désolé mais moi aussi je n'arrive pas à ouvrir ce fichier.
On me dit : "Format de fichier différent de celui spécifié par
l'extension..."
Si tu pouvais résoudre ce problème...???
Merci d'avance


michdenis a écrit :
Bonjour Isabelle,

| je réussi à ouvrir ton fichier, mais il n'y a rien dedans :-(

Les gens sont rendus difficile, on publie un fichier, il n'y a
aucune erreur dans ce dernier et ce n'est pas encore assez !
;-))

Voilà quelque chose pour vous amusez :

http://cjoint.com/?musZGlwZoI



Avatar
michdenis
Essaie avec ce lien :

http://www.cijoint.fr/cjlink.php?file=cj200912/cijArEbfyU.xls


"elect31" a écrit dans le message de groupe de discussion :

Bonsoir
Je suis désolé mais moi aussi je n'arrive pas à ouvrir ce fichier.
On me dit : "Format de fichier différent de celui spécifié par
l'extension..."
Si tu pouvais résoudre ce problème...???
Merci d'avance


michdenis a écrit :
Bonjour Isabelle,

| je réussi à ouvrir ton fichier, mais il n'y a rien dedans :-(

Les gens sont rendus difficile, on publie un fichier, il n'y a
aucune erreur dans ce dernier et ce n'est pas encore assez !
;-))

Voilà quelque chose pour vous amusez :

http://cjoint.com/?musZGlwZoI



Avatar
isabelle
ha ben la tu parle Denis c'est super,

pour Elect, j'ai ajouté une ligne pour alimenter les combo avec les
plages nommées plg1, plg2,.... plg12

Sub Initialer_La_Classe()
Dim C As Control
Dim Nb As Integer, i As Integer

Compteur = 0 'Variable définie dans le Module1
For a = 1 To 3 '3 représente le nombre de "Frame"
With Me.Controls("Frame" & a)
For Each C In .Controls
If TypeOf C Is ComboBox Then
i = i + 1
ReDim Preserve DMCombobox(1 To i)
Set DMCombobox(i).MonCombobox = C
DMCombobox(i).MonCombobox.RowSource = Names("plg" &
i).RefersTo '<---------- ici
End If
Next
End With
Next
Compteur = i
End Sub

isabelle

michdenis a écrit :
Essaie avec ce lien :

http://www.cijoint.fr/cjlink.php?file=cj200912/cijArEbfyU.xls


"elect31" a écrit dans le message de groupe de discussion :

Bonsoir
Je suis désolé mais moi aussi je n'arrive pas à ouvrir ce fichier.
On me dit : "Format de fichier différent de celui spécifié par
l'extension..."
Si tu pouvais résoudre ce problème...???
Merci d'avance


michdenis a écrit :

Bonjour Isabelle,

| je réussi à ouvrir ton fichier, mais il n'y a rien dedans :-(

Les gens sont rendus difficile, on publie un fichier, il n'y a
aucune erreur dans ce dernier et ce n'est pas encore assez !
;-))

Voilà quelque chose pour vous amusez :

http://cjoint.com/?musZGlwZoI






Avatar
michdenis
Et oui, c'est possible mais le demandeur n'a pas spécifié
son besoin.

On pourrait même ajoutée à la ligne de code suivante :
SendKeys "%{Down}"
à la fin de la procédure du module de classe "MesCombobox"
pour ouvrir automatiquement la liste déroulante... mais est-ce
que cela correspond au besoin du demandeur ?

C'est de quoi lui donner des idées !



"isabelle" a écrit dans le message de groupe de discussion :

ha ben la tu parle Denis c'est super,

pour Elect, j'ai ajouté une ligne pour alimenter les combo avec les
plages nommées plg1, plg2,.... plg12

Sub Initialer_La_Classe()
Dim C As Control
Dim Nb As Integer, i As Integer

Compteur = 0 'Variable définie dans le Module1
For a = 1 To 3 '3 représente le nombre de "Frame"
With Me.Controls("Frame" & a)
For Each C In .Controls
If TypeOf C Is ComboBox Then
i = i + 1
ReDim Preserve DMCombobox(1 To i)
Set DMCombobox(i).MonCombobox = C
DMCombobox(i).MonCombobox.RowSource = Names("plg" &
i).RefersTo '<---------- ici
End If
Next
End With
Next
Compteur = i
End Sub

isabelle

michdenis a écrit :
Essaie avec ce lien :

http://www.cijoint.fr/cjlink.php?file=cj200912/cijArEbfyU.xls


"elect31" a écrit dans le message de groupe de discussion :

Bonsoir
Je suis désolé mais moi aussi je n'arrive pas à ouvrir ce fichier.
On me dit : "Format de fichier différent de celui spécifié par
l'extension..."
Si tu pouvais résoudre ce problème...???
Merci d'avance


michdenis a écrit :

Bonjour Isabelle,

| je réussi à ouvrir ton fichier, mais il n'y a rien dedans :-(

Les gens sont rendus difficile, on publie un fichier, il n'y a
aucune erreur dans ce dernier et ce n'est pas encore assez !
;-))

Voilà quelque chose pour vous amusez :

http://cjoint.com/?musZGlwZoI






Avatar
isabelle
je ne sais pas si cela correspond à son besoin, mais je trouve ça très
pratique, merci Denis,

isabelle

michdenis a écrit :
Et oui, c'est possible mais le demandeur n'a pas spécifié
son besoin.

On pourrait même ajoutée à la ligne de code suivante :
SendKeys "%{Down}"
à la fin de la procédure du module de classe "MesCombobox"
pour ouvrir automatiquement la liste déroulante... mais est-ce
que cela correspond au besoin du demandeur ?

C'est de quoi lui donner des idées !



"isabelle" a écrit dans le message de groupe de discussion :

ha ben la tu parle Denis c'est super,

pour Elect, j'ai ajouté une ligne pour alimenter les combo avec les
plages nommées plg1, plg2,.... plg12

Sub Initialer_La_Classe()
Dim C As Control
Dim Nb As Integer, i As Integer

Compteur = 0 'Variable définie dans le Module1
For a = 1 To 3 '3 représente le nombre de "Frame"
With Me.Controls("Frame" & a)
For Each C In .Controls
If TypeOf C Is ComboBox Then
i = i + 1
ReDim Preserve DMCombobox(1 To i)
Set DMCombobox(i).MonCombobox = C
DMCombobox(i).MonCombobox.RowSource = Names("plg" &
i).RefersTo '<---------- ici
End If
Next
End With
Next
Compteur = i
End Sub

isabelle

michdenis a écrit :

Essaie avec ce lien :

http://www.cijoint.fr/cjlink.php?file=cj200912/cijArEbfyU.xls


"elect31" a écrit dans le message de groupe de discussion :

Bonsoir
Je suis désolé mais moi aussi je n'arrive pas à ouvrir ce fichier.
On me dit : "Format de fichier différent de celui spécifié par
l'extension..."
Si tu pouvais résoudre ce problème...???
Merci d'avance


michdenis a écrit :


Bonjour Isabelle,

| je réussi à ouvrir ton fichier, mais il n'y a rien dedans :-(

Les gens sont rendus difficile, on publie un fichier, il n'y a
aucune erreur dans ce dernier et ce n'est pas encore assez !
;-))

Voilà quelque chose pour vous amusez :

http://cjoint.com/?musZGlwZoI









Avatar
elect31
Un grand merci à tous les 2
Effectivement, je voulais aussi que le combo s'ouvre automatiquement,
mais je n'avais pas encore cherché comment faire, donc je n'avais pas
posé la question. Je ne veux pas poser trop de questions en même temps,
et puis j'aime bien chercher de mon coté avant de vous solliciter.C'est
vrai,ça marche bien avec SendKeys "%{Down}", je l'ai testé.

michdenis , j'ai testé ton exemple, après avoir écrit le paragraphe
ci-dessus. Les combo passent bien de l'un à l'autre automatiquement,
mais j'avais précisé dans ma 1° demande que la longueur de la chaine à y
entrer n'était pas toujours la même, sinon c'était simple. Avec un seul
caractère à entrer dans chaque combo, il suffit de mettre la propriété
maxLength à 1, AutoTab à true et d'organiser l'ordre des tabulations.

Mon problème réside dans le fait que certains combo ont une longueur de
chaine variable:
combo0 peut recevoir les chiffres de 1 à 18
combo1 peut recevoir : 3,4,5A,5B,5C,6A,6B,6C,7A
combo2 ne pose pas de problème puisqu'il reçoit : A,B,C,D

Encore merci si vous arrivez à résoudre ce problème.



michdenis a écrit :
Et oui, c'est possible mais le demandeur n'a pas spécifié
son besoin.

On pourrait même ajoutée à la ligne de code suivante :
SendKeys "%{Down}"
à la fin de la procédure du module de classe "MesCombobox"
pour ouvrir automatiquement la liste déroulante... mais est-ce
que cela correspond au besoin du demandeur ?

C'est de quoi lui donner des idées !



"isabelle" a écrit dans le message de groupe de discussion :

ha ben la tu parle Denis c'est super,

pour Elect, j'ai ajouté une ligne pour alimenter les combo avec les
plages nommées plg1, plg2,.... plg12

Sub Initialer_La_Classe()
Dim C As Control
Dim Nb As Integer, i As Integer

Compteur = 0 'Variable définie dans le Module1
For a = 1 To 3 '3 représente le nombre de "Frame"
With Me.Controls("Frame" & a)
For Each C In .Controls
If TypeOf C Is ComboBox Then
i = i + 1
ReDim Preserve DMCombobox(1 To i)
Set DMCombobox(i).MonCombobox = C
DMCombobox(i).MonCombobox.RowSource = Names("plg" &
i).RefersTo '<---------- ici
End If
Next
End With
Next
Compteur = i
End Sub

isabelle

michdenis a écrit :
Essaie avec ce lien :

http://www.cijoint.fr/cjlink.php?file=cj200912/cijArEbfyU.xls


"elect31" a écrit dans le message de groupe de discussion :

Bonsoir
Je suis désolé mais moi aussi je n'arrive pas à ouvrir ce fichier.
On me dit : "Format de fichier différent de celui spécifié par
l'extension..."
Si tu pouvais résoudre ce problème...???
Merci d'avance


michdenis a écrit :

Bonjour Isabelle,

| je réussi à ouvrir ton fichier, mais il n'y a rien dedans :-(

Les gens sont rendus difficile, on publie un fichier, il n'y a
aucune erreur dans ce dernier et ce n'est pas encore assez !
;-))

Voilà quelque chose pour vous amusez :

http://cjoint.com/?musZGlwZoI








Avatar
michdenis
Mon problème réside dans le fait que certains combo ont une longueur de
chaine variable:
combo0 peut recevoir les chiffres de 1 à 18
combo1 peut recevoir : 3,4,5A,5B,5C,6A,6B,6C,7A
combo2 ne pose pas de problème puisqu'il reçoit : A,B,C,D

**** Comment Excel peut-il deviner la longueur de la chaîne de
caractères à entrer ? Si tu n'as pas élaboré certains critères...
cela risque de devenir une situation sans solution !

**** Si tu expliquais à quoi peuvent servir ces combobox ?

**** Pourquoi utilises-tu des combobox pour saisir tes données ?
1 2