Boucle test et hauteur de ligne à 0 + TRI de cause

Bonjour à tous,

Deux questions qui ne sont pas liées...

La première sera facile pour nombre d'entre vous...

J'ai besoin d'une macro qui sélectionne un onglet, puis une celule.

Puis un test :

Si la cellule est <> 0, je descend d'une ligne,

Si la cellule est à 0 je masque la ligne puis passe à la ligne suivante

Si la ligne est tel numéro, j'arrete.

Vous l'aurez compris dans un tableau comportant de nombreuses lignes je cherche à masquer les lignes vides...

C'est certainement tres facile, mais ma formation d'Excel date beaucoup et toute la programmation a changé...

Merci de votre aide pour ce premier point !!!

Le deuxième point est peut etre plus ardu...

J'ai une tableau suivant :

C1 C2

L1 Cause 1 Taux1

L2 Cause 2 Taux 2

Ln Cause n Taux n

Bref un tableau tout simple avec des cause et des pourcentage d'orccurence (une 15aine de lignes).

Pour un tableau de bord je souhaite les afficher en automatique de la valeur la plus forte à la plus faible...

J'y arrive ainsi avec la fonction grande valeur sur les taux d'occurence et un recherchev sur le libellé:

=GRANDE.VALEUR($S$70:$S$82;1) =SI(V15=0;"";RECHERCHEV(V15;$S$70:$T$82;2;0))

MAIS, MAIS, MAIS !!!!!

Quand j'ai deux pourcentage identique...

Il me reprend deux fois le premier libellé qu'il trouve !

Et il manque une des causes à mon tableau de bord en libellé !

Heu c'était clair ?

Merci infiniment pour votre aide !!

Pour le test de hauteur de ligne me voila à parcourir le fofo...

Et je "ponds" le code suivant, tres inspiré d'un code proposé en solution pour masquer des lignes dont la valeur est ""...

Sub Hauteur_ligne_0()

'

' Hauteur_ligne_0 Macro

'

For Each lig In Sheets("FICHE DE LIGNE LUN").Rows("11:30")

If WorksheetFunction.CountIf(lig, "=""0") = Empty Then lig.Hidden = True

Next

End Sub

Oui mais voila... Ca déconne avec le seul truc que j'ai changé : CountIf(lig, "=""0")

Quelle est la syntaxe pour lui dire si c'est à zero...

Parce que pour l'instant le code masque toute les lignes de ma plage, vide ou pas !!!!

Bonjour pour avoir plus de chance d'avoir une réponse personnalisée, joignez un fichier proche de la réalité sans donnée sensible à l'interieur.

Voila les fichiers, viendra ensuite les commentaires...


Dans l'ex 1 un tableau ligne 11 à 30 est aligné par liaison.

La liste des produits est suceptible de vairer et de compter plus ou moins de lignes selon les jours.

Je souhaite masquer les lignes avec des 0 pour ne pas détruire des forets à l'impression et gagner en ergonomie utilisateur...


Dans l'exemple 2 ma source de données est en ligne 38 à 52 que je souhaite restituer sous la forme telle que en ligne 10 à 24.

Mon problèeme est que quand 2 valeurs ou plus sont identique, Excel avec les formules que je maitrise me remonte qu'un seul libellé, le premier qu'il trouve par recherchev !

Merci infiniment pour votre aide !

Pour l'exemple 1 cette petite macro peut suffire s'il n'y a pas énormément de ligne (<5000 par exemple) ( et j'suis content de participer moi aussi à la protection de ses bon vieux arbres qui nous lachent toutes leur sèves sur les bagnoles ! Et en prime, abritent des oiseaux qui eux aussi font leur besoins sur nos BAGNOLES !! tsss...

Sub masque_de_zorro()
Dim dl&, i%
dl = Feuil1.Range("a" & Rows.Count).End(xlUp).Row
For i = dl To 11 Step -1
With Feuil1
If .Cells(i, 1) = 0 Then .Rows(i & ":" & i).Hidden = True
End With
Next
End Sub

Pour l'exemple 2 y a ça comme possibilité

Bonjour,

Désolé de répondre si tard, j'était en déplacement...

Pour le deuxième cas, je n'ai pas compris, ca manque d'epxlication...

Je recherche un automatisme, sans avoir à intervenir manuellement...


oupps...

Pardon je n'avais pas vu la pièce jointe, juste l'image...

Tout est OK !


Pour le premier...

J'ai recopié tel que le code...

Sub Hauteur_ligne_0()

'

' Hauteur_ligne_0 Macro

'

Dim dl&, i%

dl = Feuil1.Range("a" & Rows.Count).End(xlUp).Row

For i = dl To 20 Step -1

With Feuil1

If .Cells(i, 1) = 0 Then .Rows(i & ":" & i).Hidden = True

End With

Next

End Sub

J'ai changé le "a" en 11 ou en "11", puisque ma ligne à controler commence en 11.

Ca marche pô !!!

Désolé d'etre une buse, mais comme c'est pour sauver les arbres, les oiseaux et les fleurs...

C'est dans le contexte !!

Merci de votre aide, à nouveau !

Croaaaa !

Salutation...Pour la macro il n'y avait rien à changer, juste à faire fonctionner

dl = Feuil1.Range("a" & Rows.Count).End(xlUp).Row (le "a" n'est pas à remplacer car il indique que l'on recherche la dernière ligne non vide de la colonne a...

For i = dl To 11 Step -1 --> cela veut dire de la dernière ligne rempli à la ligne 11 (donc ici aussi il n'y a rien à remplir)


Pour l'autre fichier, j'me suis permis un petit ABC car j'ai eu vu le nom de paréto qui trainaît dans l'un de vos fichier...

C'est encore la buse...

J'ai recopié tel que les codes que vous m'avez donné, et...

ca marche po !

Voir la PJ

Sachant que j'aurai plusieurs zone de ligne à mettre à zéro puisque plusieurs tableaux se suivent avec des interruptions (en tête différentes...)

Voir la PJ, je suis sur que c'est super simple pour que ca marche, mais...

Pas pour moi ;(

13ca-marche-po.xlsm (54.23 Ko)

Et MErci pour le Pareto au fait !

salutation la buse ! S'normal que ça marche pas car c'est pas le même fichier donc certaines valeurs ne sont plus adéquate dans la macro. Pour le souci qu'il y ait plusieur tableau remplissez en plusieurs pour tester et si cela ne fonctionne pas assez bien on réctifiera.

voici la nouvelle macro

Sub masque_de_zorro()
' Mise à 0 des hauteurs de ligne vide
    Dim dl&, i%
    dl = Feuil12.Range("a" & Rows.Count).End(xlUp).Row
    For i = dl To 8 Step -1
        With Feuil12
            If .Cells(i, 2) = 0 Then .Rows(i & ":" & i).Hidden = True
        End With
    Next
End Sub

et de rien pour le ABC j'ai tenté pour voir si ça pouvait servir...

Rechercher des sujets similaires à "boucle test hauteur ligne tri cause"