Microsoft 365 Masquage ligne

BOILEAU

XLDnaute Junior
Bonjour,



Je me suis livré depuis quelques temps au développement de formule VBA sur Mac.

Force est de constater que j'ai encore du travail pour devenir performant.



Voici mon besoin !

Je souhaite masquer des lignes de mon tableau Excel.

Les lignes a masquer sont celles qui ne contiennent pas le mot "Paiement" ou le mot "Règlement" ou le mot "Remboursement" dans une phrase.

Chacun de ces éléments sont dans la colonne E et les lignes à prendre en compte sont de la ligne 7 à la ligne 105.

Sur ma feuille Excel j'ai plusieurs tableaux. Je créerai un bouton de la formule VBA pour chacun des tableaux de ma feuille. Je changerais donc les n° de lignes et nommerais les boutons différemment.

Si vous avez une idée et si vous pouvez m'aider !
Merci d'avance.
Frédéric
 
Solution
Allez une Version 2
j'ai zappé la formule en colonne H et j'ai tout intégré dans la macro

VB:
Sub MaskSem1()
    Dim Cellule As Range
    Dim PositionMot As Integer

    For Each Cellule In ActiveSheet.Range("E8:E105").Cells
        With Cellule
            PositionMot = InStr(1, .Value, "Paiement") + InStr(1, .Value, "Règlement") + InStr(1, .Value, "Remboursement")
            Select Case PositionMot
                Case 0
                    .Rows.RowHeight = 0
                Case Else
                    .Rows.RowHeight = 15
            End Select
        End With
    Next Cellule
End Sub

BOILEAU

XLDnaute Junior
Bonjour,



Je me suis livré depuis quelques temps au développement de formule VBA sur Mac.

Force est de constater que j'ai encore du travail pour devenir performant.



Voici mon besoin !

Je souhaite masquer des lignes de mon tableau Excel.

Les lignes a masquer sont celles qui ne contiennent pas le mot "Paiement" ou le mot "Règlement" ou le mot "Remboursement" dans une phrase.

Chacun de ces éléments sont dans la colonne E et les lignes à prendre en compte sont de la ligne 7 à la ligne 105.

Sur ma feuille Excel j'ai plusieurs tableaux. Je créerai un bouton de la formule VBA pour chacun des tableaux de ma feuille. Je changerais donc les n° de lignes et nommerais les boutons différemment.

Si vous avez une idée et si vous pouvez m'aider !
Merci d'avance.
Frédéric
Bonsoir Deadpool et natorp

Merci pour votre aide.
Ci-joint un fichier exemple.
Dans le fichier original j'ai une feuille par mois. Chaque feuille à la même organisation. 1 bloc par semaine d'écritures importées depuis un fichier csv.
Mon besoin est de cliquer sur le bouton "Masquer ligne" et que toutes les lignes en jaune dans l'exemple et toutes les lignes sans aucune information se masquent (valeur de cellule dans la colonne E). Ce bouton devra fonctionner pour le bloc auquel il est rattaché. Limité aux lignes n° 7 à 105 pour le bouton 1.
Je changerais dans la formule le numéro des lignes pour les boutons 2,3 et 4.
J'espère que ces précisions vous aiderons.
Bonne soirée.
Frédéric
 

Pièces jointes

  • LES RELEVES.xlsm
    26.5 KB · Affichages: 4

Deadpool_CC

XLDnaute Accro
Bonsoir,

alors en 2 étapes :
1- une formule en H8:H105 qui détermine si l'un des mots est présent (somme des positions des mots dans la chaine)
VB:
=SIERREUR(TROUVE("Paiement";E8);0)+SIERREUR(TROUVE("Règlement";E8);0)+SIERREUR(TROUVE("Remboursement";E8);0)

2- Création Bouton (forme) associé à une macro VBA qui si 'position' = 0 (aucun mot trouvé) => masque (hauteur ligne=0), sinon affiche la ligne (hauteur=15)

VB:
Sub MaskSem1()

Dim Cellule As Range

For Each Cellule In ActiveSheet.Range("H8:H105").Cells
    With Cellule
        Select Case .Value
            Case 0
                .Rows.RowHeight = 0
            Case Else
                .Rows.RowHeight = 15
        End Select
    End With
Next Cellule

End Sub

il y a surement moyen d'intégrer l'équivalent de la formule directement dans le VBA si tu veux te donner la peine :)
 

Pièces jointes

  • LES RELEVES_deadpool.xlsm
    30.1 KB · Affichages: 3

Deadpool_CC

XLDnaute Accro
Allez une Version 2
j'ai zappé la formule en colonne H et j'ai tout intégré dans la macro

VB:
Sub MaskSem1()
    Dim Cellule As Range
    Dim PositionMot As Integer

    For Each Cellule In ActiveSheet.Range("E8:E105").Cells
        With Cellule
            PositionMot = InStr(1, .Value, "Paiement") + InStr(1, .Value, "Règlement") + InStr(1, .Value, "Remboursement")
            Select Case PositionMot
                Case 0
                    .Rows.RowHeight = 0
                Case Else
                    .Rows.RowHeight = 15
            End Select
        End With
    Next Cellule
End Sub
 

Pièces jointes

  • LES RELEVES_deadpoolV2.xlsm
    30.9 KB · Affichages: 4

BOILEAU

XLDnaute Junior
Bonsoir,

alors en 2 étapes :
1- une formule en H8:H105 qui détermine si l'un des mots est présent (somme des positions des mots dans la chaine)
VB:
=SIERREUR(TROUVE("Paiement";E8);0)+SIERREUR(TROUVE("Règlement";E8);0)+SIERREUR(TROUVE("Remboursement";E8);0)

2- Création Bouton (forme) associé à une macro VBA qui si 'position' = 0 (aucun mot trouvé) => masque (hauteur ligne=0), sinon affiche la ligne (hauteur=15)

VB:
Sub MaskSem1()

Dim Cellule As Range

For Each Cellule In ActiveSheet.Range("H8:H105").Cells
    With Cellule
        Select Case .Value
            Case 0
                .Rows.RowHeight = 0
            Case Else
                .Rows.RowHeight = 15
        End Select
    End With
Next Cellule

End Sub

il y a surement moyen d'intégrer l'équivalent de la formule directement dans le VBA si tu veux te donner la peine :)
C'est juste très énervant !!!!!!
Cela fait deux jours que je bloquais sur ce code et vous y arrivé en 15 mn.
MERCI MERCI MERCI !!!
Frédéric
 

Deadpool_CC

XLDnaute Accro
Bonjour @BOILEAU
Si pose pose une seconde question dans une sujet déjà résolu ... tu n'aura pas de réponse.
Je t'invite à créer une nouvelle Discussion et à supprimer ton post #9 ci dessus ;)

[Edit] => pense en formulant ta question dans la nouvelle discussion à ajouter un exemple (anonymisé) de ton fichier importé (puisque tu parles d'import.
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 083
Messages
2 085 187
Membres
102 809
dernier inscrit
Sandrine83