Si telle cellule est vide, alors masquer la ligne

Feitan

XLDnaute Nouveau
Bonsoir à tous,

Je suis à la recherche de la formule magique qui grâce à une macro, me permettrait d'effectuer l'action suivante :

J'ai un tableau avec des lignes de noms et des caractéristiques en colonne.
Pour chaque nom, les caractéristiques sont cochées dans les colonnes par un X.

excel-15b575f558.jpg


Ce que j'aimerai, c'est que grâce à la macro, si un nom ne possède aucune caractéristique (ici encadrés en rouge), en gros si les colonnes sont vides, et bien la ligne soit masquée.

J'espère avoir été assez clair, merci beaucoup par avance pour votre aide.
 

skoobi

XLDnaute Barbatruc
Re : Si telle cellule est vide, alors masquer la ligne

Bonjour Feitan,

Il n'y a pas besoin de VBA pour faire ça, le filtre élaboré suffit, voir le fichier joint.
 

Pièces jointes

  • filtre élaboré.zip
    12.9 KB · Affichages: 3 692
  • filtre élaboré.zip
    12.9 KB · Affichages: 3 449
  • filtre élaboré.zip
    12.9 KB · Affichages: 3 459

Excel-lent

XLDnaute Barbatruc
Re : Si telle cellule est vide, alors masquer la ligne

Bonjour Feitan,

Oui c'est clair, mais si tu avais mis le fichier excel ci-joint, au lieu d'une photo de l'écran, cela aurait été plus sympa!!!!

Et nous aurions pu répondre plus vite!

Voici ci-joint une solution en VBA.

Bonne soirée

Edition : Bonsoir Skoobi
 

Pièces jointes

  • Proposition Feitan.xls
    25 KB · Affichages: 3 427
  • Proposition Feitan.xls
    25 KB · Affichages: 3 371
  • Proposition Feitan.xls
    25 KB · Affichages: 3 432

Staple1600

XLDnaute Barbatruc
Re : Si telle cellule est vide, alors masquer la ligne

Bonsoir à tous


Une autre façon de faire avec le filtre élaboré (en se basant sur le fichier de skoobi)

en b1: laisser la cellule vide
saisir cette formule en B2:
Code:
=NON(ESTVIDE(B10))+NON(ESTVIDE(C10))+NON(ESTVIDE(D10))+NON(ESTVIDE(E10))>=1
Choisir la plage B1:B2 comme critère pour le filtre élaboré.

PS: on peut choisir une autre plage que B1:B2 mais la première cellule du critère ne doit rien contenir et la cellule juste dessous la formule.
 

Excel-lent

XLDnaute Barbatruc
Re : Si telle cellule est vide, alors masquer la ligne

Bonjour Feitan, le fil,

Feitan à dit:
je ne suis pas arrivé à reproduire ce que je voulais sur mon document Surement parce que je ne m'y connais pas bien !

Je voulais donc savoir comment appliquer la formule si :
- la première ligne du tableau est la ligne 10
- les colonnes à vérifier si vide ou non vont de E à L.

Je te remercie énormément par avance pour ton aide.
Bonne soirée

La macro "AfficherToutesLesLignes", reste la même (aucune modification) :
Code:
Sub AfficherToutesLesLignes()
' Macro réalisé par Excel-lent
    
Rows.EntireRow.Hidden = False

End Sub

Concernant la macro MasquerLignesVide, j'ai colorié les modifications :
Code:
Sub MasquerLignesVide()
' Macro réalisé par Excel-lent
    
    For i = [A65536].End(xlUp).Row To [B][COLOR="Blue"]10[/COLOR][/B] Step -1
    
        If Application.WorksheetFunction.CountBlank(Range(Cells(i, [COLOR="Red"][B]5[/B][/COLOR]), Cells(i, [COLOR="Gray"][B]12[/B][/COLOR]))) = [COLOR="Orange"][B]8[/B][/COLOR] Then
           Rows(i).EntireRow.Hidden = True
        End If
        
    Next i

End Sub

Cells(numéro de la ligne, numéro de la colonne)
-> numéro de la ligne : facile, il suffit de regarder la feuille excel
-> numéro de la colonne : 1=A, 2=B, 3=C, ..., 26=Z, 27=AA, 28=AB, ...

8 : car le nombre de cellules comprises de E à L s'élèvent au nombre de 8.

La macro compte le nombre de cellules vide de E... à L..., s'il trouve 8 cela signifie que tu n'as rien saisie de E... à L..., donc il masque la ligne concernée.

Code:
[A65536].End(xlUp).Row
Cela signifie qu'Excel se met sur la cellule A65536, puis il remonte jusqu'à la première cellule saisie (qui correspond donc à la dernière ligne de ton tableau - sauf si tu as rajouté un autre tableau en dessous du tableau qui nous occupe!

PS : si ta colonne NOM est situé colonne C (au lieu de A), alors dans la macro ci-dessus, pense à remplacer :
Code:
[A65536].End(xlUp).Row

par :
Code:
[[COLOR="DarkSlateBlue"][B][I]C[/I][/B][/COLOR]65536].End(xlUp).Row

Bonne soirée
 
Dernière édition:

gauchou

XLDnaute Nouveau
Re : Si telle cellule est vide, alors masquer la ligne

Bonjour Feitan,

Oui c'est clair, mais si tu avais mis le fichier excel ci-joint, au lieu d'une photo de l'écran, cela aurait été plus sympa!!!!

Et nous aurions pu répondre plus vite!

Voici ci-joint une solution en VBA.

Bonne soirée

Edition : Bonsoir Skoobi

Salut le forum, salut excel lent,

merci, je trouve plein de choses ici...

par contre sur ton fichier, je ne trouve pas la USF qui gère le module, impossible de commander les macros grâce à des bouttons..
quelqu'un peut il éclairer ma lanterne??

Merci d'avance à tous.
 

jeanpierre

Nous a quitté
Repose en paix
Re : Si telle cellule est vide, alors masquer la ligne

Bonjour geuchou, Excel-lent, le fil,

Dans le fichier déposé par Excel-lent il n'y a pas besoin d'USF, il suffit de cliquer sur les boutons "Masquer" ou "Afficher".

Tu trouveras le code en faisant Alt F11 pour aller sous VBE, Affichage Explorateur de projets (au besoin) et tu cliques ou tu développes le petit plus (+) sur le nom de ton fichier, même chose sur Module pour finalement lire le code dans Module1.

Bon après-midi.

Jean-Pierre
 

gauchou

XLDnaute Nouveau
Re : Si telle cellule est vide, alors masquer la ligne

Bonjour geuchou, Excel-lent, le fil,

Dans le fichier déposé par Excel-lent il n'y a pas besoin d'USF, il suffit de cliquer sur les boutons "Masquer" ou "Afficher".

Tu trouveras le code en faisant Alt F11 pour aller sous VBE, Affichage Explorateur de projets (au besoin) et tu cliques ou tu développes le petit plus (+) sur le nom de ton fichier, même chose sur Module pour finalement lire le code dans Module1.

Bon après-midi.

Jean-Pierre

Bonjour Jean Pierre,

je pense avoir compris, j'ai créé deux boutons formulaires que j'ai lié aux macros.. et cela fonctionne.Si c'est pas la bonne méthode, n'hésite pas me le dire.

Merci et à bientôt
 

jeanpierre

Nous a quitté
Repose en paix
Re : Si telle cellule est vide, alors masquer la ligne

Re gauchou,

Désolé d'avoir mutilé ton pseudo, je viens de voir à l'instant.

Si tu as compris comment lier une macro, peu importe que ce soit à partir d'un bouton Formulaire ou Contrôle ou même d'une photo ou d'une image, d'une Zone texte etc..., le principal c'est que cela fonctionne.

Bon après-midi.

Jean-Pierre
 

gauchou

XLDnaute Nouveau
Re : Si telle cellule est vide, alors masquer la ligne

JE progresse, je progresse..et ce gràce à vous!! merci..

bon je fais mon bonheur de la compilation de macro et je me trouve confronté au pb suivant: ma macro fonctionne sur une feuille, et quand je veux la mettre sur une autre, j'ai le message: "variable non définie" et le petit "i" de ma macro s'allume en jaune, quelle est la raison et comment puis y remédier??
merci à tous., ci après ma macro:

Private Sub MDLShob_Click()
Application.ScreenUpdating = False
If MDLShob.Value = True Then
For i = [A65536].End(xlUp).Row To 9 Step -1

If Application.WorksheetFunction.CountBlank(Range(Cells(i, 3), Cells(i, 39))) = 37 Then
Rows(i).EntireRow.Hidden = True
End If
Next i

ElseIf MDLShob = False Then

Rows.EntireRow.Hidden = False
End If
End Sub
 

gauchou

XLDnaute Nouveau
Re : Si telle cellule est vide, alors masquer la ligne

Bonjour à tous,
gauchou essauyer de déclarer la variable :
Private Sub MDLShob_Click()
Dim i As Long
Application.ScreenUpdating = False
'Etc...
Cordialement

Salut Efgé,
je n'ai plus de message d'erreur, mais la macro ne fonctionne pas :confused:, pour info sup. j'ai une case à cocher sur chaque feuille, je leurs ai bien donné un nom différents..
à bientot.
 

Efgé

XLDnaute Barbatruc
Re : Si telle cellule est vide, alors masquer la ligne

Re
Je n'avais pas bien regarder :eek: mais il y a un problème: dans votre feuille vous devez mettre deux boutons (masquer et afficher). Puis le code à mettre "dans les boutons est :

Code:
Private Sub CommandButton1_Click()
Call a
End Sub
Pour masquer et
Code:
Private Sub CommandButton2_Click()
Call b
End Sub
Pour afficher.

Votre ligne
Private Sub MDLShob_Click()
ne correspond à rien (on ne click pas sur MDLShip mais sur un CommandButton).

Ensuite si les macros a ou b "plantent, vous pouvez laisser ma ligne (Dim I As Long)
Cordialement.
 

Discussions similaires

Statistiques des forums

Discussions
312 231
Messages
2 086 447
Membres
103 213
dernier inscrit
Poupoule