VBA changer hauteur de ligne en fonction de contenu cellule

Fermé
ab - 21 juil. 2016 à 11:35
 ab - 22 juil. 2016 à 09:09
Bonjour à tous et à toutes,

J'ai un léger problème pour un bout de code VBA... Je possède plusieurs tableaux sur une feuille "bon de commande" avec plein de cellules qui contiennent des 0 dans la ligne j-3 de chaque tableau.

J'aimerais en appuyant sur un bouton qu'une procédure se lance et n'affiche que les cases des tableaux avec une valeur.

J'ai donc fait le code suivant:

Sub Affichercommande()

Dim i, j, bascule As Integer

j = 5 * Sheets("Bon de commande").Range("A55").Value + 2 'j prend en compte le nombre de tableaux à traiter
bascule = Sheets("Bon de commande").Range("A57").Value


If bascule = 0 Then
Sheets("Bon de commande").Range("A57").Value = 1
While j > 2 'boucle qui permet de parcourir chaque tableau 1 à 1
For i = 3 To 1677
If Sheets("Bon de commande").Cells(i, j - 3) = 0 Then 'si la cellule est vide alors
Sheets("Bon de commande").Cells(i, j - 3).RowHeight = 0 'mettre la taille de ligne à 0
End If
Next i
j = j - 5
Wend

Else
Sheets("Bon de commande").Range("A57").Value = 0
While j > 2
For i = 3 To 1677
Sheets("Bon de commande").Cells(i, j - 3).RowHeight = 17
Next i
j = j - 5
Wend

End If
End Sub


Le problème, c'est que comme le tableau est long (1667 lignes), la procédure est beaucoup trop longue...

J'espère avoir été clair et que vous pourrez m'aider :)

Merci d'avoir pris le temps de lire ma demande,

Antoine

2 réponses

Kuartz Messages postés 852 Date d'inscription vendredi 13 février 2015 Statut Membre Dernière intervention 15 février 2019 61
21 juil. 2016 à 12:08
Bonjour,

Et à la place de :

Sheets("Bon de commande").Cells(i, j - 3).RowHeight = 0


C'est pas plus rapide si on met :

Sheets("Bon de commande").Cells(i, j - 3).EntireRow.Hidden = True


?
0
Merci pour votre proposition mais voici ce que je recherche:

Voici le code idéal (ne fonctionne pas pour le moment...)

Dim test As Integer


For test = 1 To 20
With ActiveSheet.Range("D1:D" & DerLig) 'ta plage qui contient tout tes tableaux ici a adapter
.AutoFilter Field:=1, Criteria1:=test 'on recherche les valeur = a zero ou alors met le 0 entre guillemet pour les cellule qui contienne le chiffre zero
End With
Next test


J'aurai préféré mettre comme critère "n'est pas égal à 0 et *"... De plus, la range ne fonctionne pas comme ceci, auriez-vous des conseils?
0