Compteur de ligne conditionnel à aff/masquer
la crotte de charles
-
lermite222 Messages postés 9042 Statut Contributeur -
lermite222 Messages postés 9042 Statut Contributeur -
Bonjour,
Voila j'ai un chiffrier excel avec une macro effectuant un filtre élaborer maintenant je cherche à standardiser la hauteur de mes lignes
allons-y avec un exemple pour simplifier l'explication donc,
disons que de la ligne 2 a 8 je veux toujours que ce ''range'' soit de hauteur 200 mais parfois après l'exécution de ma macro filtre il se peut que certaines de ces lignes soit masquer donc si la ligne 4 et 5 sont masquer la hauteur de 200 doit se distribuer sur les cellules restantes (dans l'exemple cellules 2,3,6,7,8) etc. Mes pistes de solution sont élaborer une macro qui compte les lignes NON MASQUER dans le range (2:8) et qui stock la valeur dans une variable et de là diviser ma hauteur voulu par cette variable exemple il compte 3 ligne non masquer dans chaque ligne non masquer rowheight = 200/3 et ainsi de suite....
Voila j'ai un chiffrier excel avec une macro effectuant un filtre élaborer maintenant je cherche à standardiser la hauteur de mes lignes
allons-y avec un exemple pour simplifier l'explication donc,
disons que de la ligne 2 a 8 je veux toujours que ce ''range'' soit de hauteur 200 mais parfois après l'exécution de ma macro filtre il se peut que certaines de ces lignes soit masquer donc si la ligne 4 et 5 sont masquer la hauteur de 200 doit se distribuer sur les cellules restantes (dans l'exemple cellules 2,3,6,7,8) etc. Mes pistes de solution sont élaborer une macro qui compte les lignes NON MASQUER dans le range (2:8) et qui stock la valeur dans une variable et de là diviser ma hauteur voulu par cette variable exemple il compte 3 ligne non masquer dans chaque ligne non masquer rowheight = 200/3 et ainsi de suite....
A voir également:
- Compteur de ligne conditionnel à aff/masquer
- Partage de photos en ligne - Guide
- Formulaire en ligne de meta - Guide
- Mètre en ligne - Guide
- Mise en forme conditionnel - Guide
- Masquer conversation whatsapp - Guide
11 réponses
Bonjour,
Sais pas si j'ai bien compris...
Compte le nombre de ligne(s) visible(s).
A+
Sais pas si j'ai bien compris...
Function NbVisible() As Long
Dim Lig As Long
For Lig = 1 To Range("A65335").End(xlUp).Row
If Not Rows(Lig).Hidden Then NbVisible = NbVisible + 1
Next Lig
End Function
Compte le nombre de ligne(s) visible(s).
A+
oui, ca semble etre bon mais il manquerait une ligne de code pour faire en sorte que les lignes se dimensionne en hauteur par rapport a nbvisible
de sorte que les lignes comprisent dans mon range prennent chancune une hauteur prédéterminé à l'aide de nbvisible
ex:
Function NbVisible() As Long
Dim Lig As Long
For Lig = 1 To Range("tableau").Row
If Not Rows(Lig).Hidden Then NbVisible = NbVisible + 1
Next Lig
End Function
voici j'ai modifier ton code pour range("tableau") et maintenant je veux que toute les lignes visibles du range tableau prenne la dimension 200/nbvisible
je sais pas si je suis assez clair
merci
de sorte que les lignes comprisent dans mon range prennent chancune une hauteur prédéterminé à l'aide de nbvisible
ex:
Function NbVisible() As Long
Dim Lig As Long
For Lig = 1 To Range("tableau").Row
If Not Rows(Lig).Hidden Then NbVisible = NbVisible + 1
Next Lig
End Function
voici j'ai modifier ton code pour range("tableau") et maintenant je veux que toute les lignes visibles du range tableau prenne la dimension 200/nbvisible
je sais pas si je suis assez clair
merci
avec..
A+
L'expérience instruit plus sûrement que le conseil. (André Gide)
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
Dim A, B
A = Range("tableau").Row
B = Range("tableau").Rows.Count
Rows(A & ":" & A + B - 1).RowHeight = 200 / NbVisible
A+
L'expérience instruit plus sûrement que le conseil. (André Gide)
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
ca ne marche malheureusement pas je crois que le problème se situe au niveau de la ligne : Rows(A & ":" & A + B - 1).RowHeight = 200 / NbVisible
car si je masque la ligne 1 (range tableau = ligne 1 à 4 ) il bug et si je masque une des autres ligne 2,3 ou 4 il fait reapparaitre les lignes et les dimensionnent ce que je veux c'est :
si il n'y a pas de ligne masquer, chacune des lignes 1,2,3 et 4 seront de 50...
si il y a une ligne de masquer, les trois autres seront de 66.67
si il y a 2 ligne de masquer, les 2 restant seront de 100 chacun
si il y a 3 lignes de masquer , la ligne restant sera de 200
je crois que nous approchont de la solution
merci de tes réponses si rapide...tu est plutot doué pas comme moi :(
car si je masque la ligne 1 (range tableau = ligne 1 à 4 ) il bug et si je masque une des autres ligne 2,3 ou 4 il fait reapparaitre les lignes et les dimensionnent ce que je veux c'est :
si il n'y a pas de ligne masquer, chacune des lignes 1,2,3 et 4 seront de 50...
si il y a une ligne de masquer, les trois autres seront de 66.67
si il y a 2 ligne de masquer, les 2 restant seront de 100 chacun
si il y a 3 lignes de masquer , la ligne restant sera de 200
je crois que nous approchont de la solution
merci de tes réponses si rapide...tu est plutot doué pas comme moi :(
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
1°) Juste, ça réaffiche les lignes
2°) mais ta ligne..
n'est pas bonne, faut faire...
3°) Je prépare la suite
L'expérience instruit plus sûrement que le conseil. (André Gide)
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
2°) mais ta ligne..
For Lig = 1 To Range("tableau").Row
n'est pas bonne, faut faire...
For Lig = Range("tableau").Row to Range("tableau").Row.count +Range("tableau").Row -1
3°) Je prépare la suite
L'expérience instruit plus sûrement que le conseil. (André Gide)
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
Voila une fonction qui... fonctionne :-)
A+
L'expérience instruit plus sûrement que le conseil. (André Gide)
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
Function NbVisible() As Long
Dim Lig As Long, LigDeb As Long, LigFin As Long, HT As Single
LigDeb = Range("tableau").Row
LigFin = Range("tableau").Row + Range("tableau").Rows.Count - 1
For Lig = LigDeb To LigFin
If Not Rows(Lig).Hidden Then NbVisible = NbVisible + 1
Next Lig
HT = 200 / NbVisible
For Lig = LigDeb To LigFin
If Not Rows(Lig).Hidden Then Rows(Lig).RowHeight = HT
Next Lig
End Function
A+
L'expérience instruit plus sûrement que le conseil. (André Gide)
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
ouais ca marche disons que maintenant j'ai plusieur plages nommé
tableau1
tableau2
tableau3
est ce que je peut alligner ces lignes de code autant de fois que j'ai de plages nommées ?? et pour l'instant il est sous forme de fonction comment puis-je l'associé à un bouton le même que pour mon filtre ( il serait dans la meme macro après le filtre de manière a ce que les lignes s'ajuste avant de voir le résultat de la recherche. Ou p-t mettre se code dans une macro evenementielle qui au déclenchement de mon bouton "recherche" les lignes s'ajuste
Dernier petit bug... si toute les lignes sont masquer il me sort une erreur car division par zéro comment contourné se problème...?
pour le reste c'est nickel ! merci bcp !!
tableau1
tableau2
tableau3
est ce que je peut alligner ces lignes de code autant de fois que j'ai de plages nommées ?? et pour l'instant il est sous forme de fonction comment puis-je l'associé à un bouton le même que pour mon filtre ( il serait dans la meme macro après le filtre de manière a ce que les lignes s'ajuste avant de voir le résultat de la recherche. Ou p-t mettre se code dans une macro evenementielle qui au déclenchement de mon bouton "recherche" les lignes s'ajuste
Dernier petit bug... si toute les lignes sont masquer il me sort une erreur car division par zéro comment contourné se problème...?
pour le reste c'est nickel ! merci bcp !!
J'espère que c'est la dernière modif, j'en ai Ma.. de chaques fois recommencer.
Remplace la macro par...
et dans le code du bouton..
Vaut mieux laisser les macros séparées.
A+
L'expérience instruit plus sûrement que le conseil. (André Gide)
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
Remplace la macro par...
Public Sub NbVisible(Table As Range)
Dim Lig As Long, LigDeb As Long, LigFin As Long, HT As Single, VU As Integer
LigDeb = Table.Row
LigFin = Table.Row + Table.Rows.Count - 1
For Lig = LigDeb To LigFin
If Not Rows(Lig).Hidden Then VU = VU + 1
Next Lig
If VU > 0 Then
HT = 200 / VU
For Lig = LigDeb To LigFin
If Not Rows(Lig).Hidden Then Rows(Lig).RowHeight = HT
Next Lig
End If
End Sub
et dans le code du bouton..
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
TaMacroFiltre
NbVisible Range("Tableau1")
NbVisible Range("Tableau2")
'......
Application.ScreenUpdating = True
End Sub
Vaut mieux laisser les macros séparées.
A+
L'expérience instruit plus sûrement que le conseil. (André Gide)
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
Si tu a beaucoup de tableaux...
Remplace le code du bouton par..
A+
Remplace le code du bouton par..
Private Sub CommandButton1_Click()
Dim i As Integer
Application.ScreenUpdating = False
TaMacroFiltre
With ActiveWorkbook
For i = 1 To .Names.Count
If Left(.Names(i).Name, 5) = "Table" Then NbVisible Range(.Names(i).Name)
Next i
End With
Application.ScreenUpdating = True
End Sub
A+
voila merci beaucoup tous fonctionne il y a une dernière chose mais c'est parce que je suis trop perfectionniste ca va aller comme ca encore une fois merci de ta patience et de partager ton savoir en prog.
Par contre si tu dit que tu en a ta .... pk vient tu aidé les gens sur ce forum ?
Pour ma part je trouve ca admirable de donner son temps comme ca a des inconnus ...
Merci
Au Plaisir !!
Par contre si tu dit que tu en a ta .... pk vient tu aidé les gens sur ce forum ?
Pour ma part je trouve ca admirable de donner son temps comme ca a des inconnus ...
Merci
Au Plaisir !!
Sic : Par contre si tu dit que tu en a ta .... pk vient tu aidé les gens sur ce forum ?
Je n'en ai pas marre d'aider les gens comme tu dis, ce qui est énervant c'est qu'à chaque fois tu change la situation ce qui oblige à refaire une autre macro et ce, toujours pour le même problème, mal expliquer au départ...
Voilà.
A+
Je n'en ai pas marre d'aider les gens comme tu dis, ce qui est énervant c'est qu'à chaque fois tu change la situation ce qui oblige à refaire une autre macro et ce, toujours pour le même problème, mal expliquer au départ...
Voilà.
A+