Masquer colonne selon critére

Bonjour,

Je cherche à masquer des colonnes lorsque certaines cellules d'un tableau sont vides (détection de la première case vide menant au calcul de la plage à masquer).

J'ai pour cela crée le code suivant :

For i = 166 To 315 Step 1

If Workbooks("Fi-Flash.xlsm").Sheets("Visualiser").Cells(201, i) = "" Then 'Not IsNumeric(Workbooks("Fi-Flash.xlsm").Worksheets("Visualiser").Cells(201, i))

colCellule1 = i

Exit For

End If

Next

colonne = Split(Cells(1, colCellule1).Address(), "$")(1)

Workbooks("Fi-Flash.xlsm").Worksheets("Visualiser").Range(colonne & ":LC").EntireColumn.Hidden = True

Comme expliqué lors d'une autre demande, j'ai modifié mon programme pour limiter l'utilisation des méthodes du type .activate et .select.

Mon code ne rencontre pas d'erreur mais il ne masque aucunement les cellules visées. Je tiens à préciser que ce code fonctionnait avant modification et que les plages et variables sont valides.

Pourrait-on m'indiquer les éventuelles erreurs de mon programme?

Bonjour

En considérant que "Workbooks("Fi-Flash.xlsm")." est le classeur contenant la macro

A tester

Sub test()
  With Sheets("Visualiser")
    For i = 166 To 315 Step 1
      If .Cells(201, i) = "" Then
        .Columns(i).Hidden = True
        Exit Sub
      End If
    Next
  End With
End Sub

Banzai64,

Merci pour ta réponse! Je viens d'essayer ta solution, le problème est toujours présent.

La boucle fonctionne mais les colonnes ne sont pas masquées. Est-il possible que le workbook("Fi-Flash") ou la sheet("Visualiser") ne s'activent pas pendant l’exécution du programme?

Bonjour

C'est étrange

Le code vérifie dans la ligne 201 si une cellule entre FJ et LC ( 166 à 315 ) est vide, et si c'est le cas masque la colonne correspondante

Il faudrait le fichier en cause en y expliquant ce que tu veux exactement

Banzai64 ,

Je te joins mon usine à gaz. La boucle for que tu m'as conseillée se trouve à la ligne 336.

J'ai laissé en commentaire les autres solutions que j'avais envisagées.

40fi-flash.xlsm (188.19 Ko)

Bonjour

Je confirme ce code fonctionne très bien

J'ai placé ce code dans une procédure à part et je l'ai exécuté et il a masqué toutes les colonnes de FJ à LC

Sub test()
  With Workbooks("Fi-Flash.xlsm").Sheets("Visualiser")
    For i = 166 To 315 Step 1
      If .Cells(201, i) = "" Then
        .Columns(i).Hidden = True
      End If
    Next
  End With
End Sub

Banzai64,

Merci pour ton retour!

Je viens d'essayer à mon tour : dans un module séparé, le code fonctionne et les colonnes sont masquées comme demandé.

Ce que j'ai du mal à comprendre, est que cette même boucle une fois insérée dans "ma soupe", n'est plus effective.

Suis-je vraiment si mauvais que ça?

Bonsoir banzaï64, alde et le fofo.

Il me semblerais plus simple d'appeler la macro test avec "call" plutôt que de la fondre dans ta soupe.

Bonne soirée.

Bonsoir

Le problème doit être le même que tu l'appelles par un Call ou qu'elle soit dans la macro principale, c'est que sans doute cette partie n'est pas exécutée

Mais il faudrait suivre le code en plaçant des points d'arrêts

Bonjour à tous,

Je fais bien appel à la macro de Banzai par le biais d'un Call test.

La boucle est exécutée par le programme (toutes les colonnes 166 à 315), mais les colonnes restent affichées.

Le mystère reste entier...

Je viens de parcourir mon programme et ... un petit "EntireColumn.Hidden = False" se cachait bien après le "Call test", que vous m'avez conseillé.

Sans cette étourderie, le programme fonctionne maintenant parfaitement!!

Merci beaucoup à vous deux pour votre aide!!

Rechercher des sujets similaires à "masquer colonne critere"