Variables pour masquage de ligne
Bonjour la commu
Je nage je patauge en VBA HELP !
Je cherche a masquer des lignes lorsque que la cellule en colonne B de cette même ligne est vide. J'ai réussi a faire fonctionner ce code VBa (je ne sais pas si son ecriture est très académique ?) MAIS mon gros soucis c'est que je souhaiterai que ce code ne s'applique que sur certaine plages de cellules (d'ou l'utilisation de variable i,j etc)
hors ce code fonctionne avec 2 variable (i et j) mais au dela ça ne fonctionne pas (sachant que j'aurai 16 plages de cellules différentes).
Pouvez vous m'aider ? faut'il carrément utiliser autre chose ? boucle ?
merci infiniment pour votre aide !
Sub VEROUILLMASQUEETPROTEGE3()
ActiveSheet.Unprotect ("QBDDGV2024")
ActiveSheet.Range("D2:J2", "D3:J31").Select
Selection.Locked = True
ActiveSheet.Range("B:C").Select
Selection.Locked = True
Dim i As Integer, j As Integer
Application.ScreenUpdating = False
For i = 6 To 29
For j = 35 To 58
If Range("B" & i) = "" Then Rows(i).Hidden = True
If Range("B" & j) = "" Then Rows(j).Hidden = True
Next j
Next i
ActiveSheet.Protect ("QBDDGV2024")
MsgBox ("OK")
End Sub
Bonjour,
Non c’est bien comme vous faites. Mais vous n’avez pas besoin de 16 variables, vous pouvez réutiliser i tout simplement.
Dim i As Long
Application.ScreenUpdating = False
For i = 6 To 29
If Range("B" & i) = "" Then Rows(i).Hidden = True
Next i
For i = 35 To 58
If Range("B" & i) = "" Then Rows(i).Hidden = True
Next i
'Etc…(notez que je vous ai mis i en Long car si vous avez +35000 lignes vous risquez d'avoir une erreur)
Il existe aussi d’autres manières de procéder mais cela va dépendre de votre classeur. Si par exemple vous suivez un pattern pour sauter des lignes (par exemple les lignes entre 6 et 29 et 35-38 ont toutes un point commun différent des autres), alors on peut utiliser d’autres outils.
Mais bon, si c’est toujours les memes lignes vous auriez intéret à rester là dessus.
MERCI ! INFINIMENT saboh12617
La réponse parait si simple mais pour moi c'est compliqué... Merci encore ça fonctionne très bien.
Les outils concernant un pattern identique dont vous parler m'interressent de quoi s'agit t'il ?
Très bien, n’oubliez pas de marquer le fil en résolu (petit coche en haut d’un message).
Alors pour les options “avancées” : plusieurs méthodes.
Tout d’abord ne pas oublier la fonction de filtre de base de Excel. C’est la plus efficace et elle est très complète.
Essayer d’utiliser l’enregistreur de macros et d’ajouter à une colonne un filtre (Données > filtre), puis de le modier. Regardez ensuite le code VBA produit cela vous donnera une base. On peut automatiser ce genre de manipulations en VBA.
Sinon on peut parcourir la liste des valeurs en VBA et faire des tests : sur les nombre “=” ou “>” par exemple, et sur les textes il existe des fonctions comme “InStr” qui permettent de trouver un mot dans un texte.
Cela implique cependant que vous ayez une liste de données bien ordonnées, par exemple
1 - Lorem |
2 - Nunc |
3 - Pellentesque |
1 - Aenean |
2 - Suspendisse |
3 - ipsum |
2 - viverra |
3 - habitant |
2 - nec |
2 - dui |
1 - dolor |
3 - imperdiet |
1 - morbi |
1 - lorem. |
1 - purus, |
1 - sit |
3 - enim. |
2 - tristique |
2 - In |
2 - scelerisque |
Sur cette liste on pourrait trier en cherchant un numéro, par exemple “1” dans chacune des cellules.