Bonjour,
comment masquer une combobox lorsqu'elle est vide et la faire réapparaitre dans le cas contraire.
merci
a+
Bonjour,
comment masquer une combobox lorsqu'elle est vide et la faire réapparaitre dans le cas contraire.
merci
a+
A star is dead
En testant la plage de cellules qui renseigne ton combo... Pas évident, car très lent pour le nbre de combos que tu as.
Peut-être en comparant la plage elle-même avec une plage identique d'une colonne vide. Visible = ColCombo = ColTest. Pas testé.
Bon, comme maintenant j'ai cette question dans la tête...
C'est vrai, quoi, vous posez un tas de questions et après, nous, comment on fait si on sait pas
A+
ben si tu dis que tu te poses la question, que tu réfléchis
imagine pour moi
A star is dead
Pour masquer une combo vide, donc, tu peux vérifier la présence de données dans la colonne, de la ligne 2 à la dernière ligne. Dès qu'est trouvée une donnée -> sorie du test.
Pour ça tu modifies InitCombo(...) en ajoutant la ligne bleue
... et tu ajoutes la macro qui va bien :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 Sub InitCombo(NoLigne, NoColonne) Dim NomCombo As String Dim Plage As String Sheets("Bd").Activate Plage = Range(Cells(2, NoColonne), Cells(NoLigne, NoColonne)).Address Call TesterPlageVide(NoLigne, NoColonne NomCombo = "cbox" & NoColonne With ATESTER.Controls(NomCombo) .Value = Cells(1, NoColonne) .RowSource = Plage End With End Sub
Si jamais tu avais dans ton esprit pervers l'idée d'afficher tous tes combox quand tu veux, j'ai la solution mais là, je te laisserai chercher
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Sub TesterPlageVide(NoLigne, NoCol) Dim C1 As Range, LaCell As Range Dim Ok As Boolean Set C1 = Range(Cells(2, NoCol), Cells(NoLigne, NoCol)) For Each LaCell In C1 Ok = LaCell <> "" If Ok Then Exit For Next ATESTER.Controls("cbox" & NoCol).Visible = Ok End Sub
A+
bonsoir,
j'ai recopié ton code mais aucune réaction
merci a+
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 Sub InitCombo(NoLigne, NoColonne) Dim NomCombo As String Dim Plage As String Sheets("Bd").Activate Plage = Range(Cells(2, NoColonne), Cells(NoLigne, NoColonne)).Address Call TesterPlageVide(NoLigne, NoColonne) NomCombo = "cbox" & NoColonne With ATESTER.Controls(NomCombo) .Value = Cells(1, NoColonne) .RowSource = Plage End With End Sub Sub TesterPlageVide(NoLigne, NoColonne) Dim C1 As Range, LaCell As Range Dim Ok As Boolean Set C1 = Range(Cells(2, NoColonne), Cells(NoLigne, NoColonne)) For Each LaCell In C1 Ok = LaCell <> "" If Ok Then Exit For Next ATESTER.Controls("cbox" & NoColonne).Visible = Ok End Sub
A star is dead
Tu as vidé une colonne de la seconde ligne à la dernière ?
Tu as ajouter ) à la fin de ma ligne rouge ?
h non j'avais pas fait ca, ca ok ca marche pas de pb mais dans mon cas lorsque le materiel est sorti est bien j'ai 3 combos qui ne sont pas remplis mais des que le matos rentré ben tout est rempli
donc il faudrait qu'elles réapparaissent des qu'elles ne sont plus vides et elur label aussi
merci a+
A star is dead
Envoyé par T'as pas vu ce que ousk'
Pas bien rapide le cerveau des jeunes, ce jour...
Mais comme je suis une brave bête...
Ajoutées, les lignes... en couleur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 Sub laprocedure(Lindex) Dim lecontrol As Object Dim Dernièreligne As Integer Dim NoCol As Integer 'ou Byte Dernièreligne = ActiveSheet.Range("A1").SpecialCells(xlCellTypeLastCell).Row For Each lecontrol In ATESTER.Controls If InStr(lecontrol.Name, "cbox") = 1 Then NoCol = Right(lecontrol.Name, Len(lecontrol.Name) - 4) ATESTER.Controls(lecontrol.Name).ListIndex = Lindex Call TesterPlageVide(Dernièreligne, NoCol) End If Next If cbox9.ListIndex <> 1 Then CellHeure.Value = Format(cbox9.Value, "dd/mm/yy hh:mm") CellHeure.Visible = True End If End Sub
A-
Comme je n'ai pas le moyen de tester, tu vas avoir la lourde responsabilité de le faire pour moi
Bravo Ousk, belle mentalité
alors que je me meurs tu souris
alors que je t'implore tu me dénigres
merci bravo
tu l'auras voulu
Je suis tout moi qui suis un
A star is dead
je savais OUsk que je pouvais compter sur toimais tu as été tellement rapide que les réponses ont du se croiser
je teste cela demain amintenant c'est l'apéro et puis le foot
quelle confiance j'ai la lourde responsabilité de tester merci encore et BSR
A demain ah non je l'ai pas dis fort !!!
A star is dead
Bonjour,
J'ai bien l'userf qui s'affiche mais dè que je touche une combo ou le spinbutton il plante sur la ligne en rouge
avec une erreur 1004 "erreur définit par l'application ou par l'objet", ma feuille n'est pas protégée.
y aurait pas une pb entre nocol et
nocolonne ?
J'ai essayé avec les deux
Code : Sélectionner tout - Visualiser dans une fenêtre à part Dim NoCol As Integer 'ou Byte
la ligne en rouge est la ligne qui beugue
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 Sub TesterPlageVide(NoLigne, NoCol) Dim C1 As Range, LaCell As Range Dim Ok As Boolean Set C1 = Range(Cells(2, NoCol), Cells(NoLigne, NoCol)) For Each LaCell In C1 Ok = LaCell <> "" If Ok Then Exit For Next bduserf.Controls("cbox" & NoCol).Visible = Ok End Sub
merci a+
A star is dead
ben il y as quoi dans ta variable nocol et NoLigne à ce moment la .... ? passe le curseur dessus histoire de voir leur valeur..., de plus tu travaille sur la feuille Excel Active... c'est bien une feuille de calcul .?
bonjour
oui c une feuille de calcul
noligne=0
nocol=1
merci
a+
A star is dead
ben sous excel les numéro de lignes vont de 1 à 65536 ( pas de 0 ) .. .et pour la colonne c'est 1 à 255.... il te faut revoir le calcul de ton paramétre NoLigne..!
Tu as changé quelque chose dans mon code ?
Non ! Tu as changé quelque chose dans mon code !
La sub est appelée par
Dans TesterPlageVide tu as
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 If InStr(lecontrol.Name, "cbox") = 1 Then NoCol = Right(lecontrol.Name, Len(lecontrol.Name) - 4) 'ATESTER.Controls(lecontrol.Name).ListIndex = Lindex Call TesterPlageVide(Dernièreligne, NoCol)
NoCol ne peut pas contenir 0 à moins que tu aies ajouté un combo cbox0
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Sub TesterPlageVide(NoLigne, NoCol) Dim C1 As Range, LaCell As Range Dim Ok As Boolean Set C1 = Range(Cells(2, NoCol), Cells(NoLigne, NoCol))
bonjour ...ousk' ... tu as dit à lio62... que pour repérer plus facilement les erreurs de frappe il fallait qu'il mette ... la ligne :Envoyé par ouskel'n'or
en haut de ses modules...?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Option Explicit
Salut bbil. En l'occurence, NoCol est un paramètre. Mais je crois que lio a mis Option Explicit de lui-même
c'est pas noCol qui est à 0 mais noLigne... je parirai sur Dernièreligne...(? avec/sans accent...)
Ok, alors je crois deviner... Quand je t'ai dit de vider une colonne pour tester, lio, tu as enlevé l'entête ? Faut pas.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager