VBA changer hauteur de ligne en fonction de contenu cellule
ab
-
ab -
ab -
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:
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
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
A voir également:
- Vba hauteur ligne
- Partager photos en ligne - Guide
- Mètre en ligne - Guide
- Aller à la ligne excel - Guide
- Apparaitre hors ligne instagram - Guide
- Formulaire en ligne de meta - Guide
2 réponses
Bonjour,
Et à la place de :
C'est pas plus rapide si on met :
?
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
?
Merci pour votre proposition mais voici ce que je recherche:
Voici le code idéal (ne fonctionne pas pour le moment...)
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?
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?