Microsoft 365 Problème VBA lors de l'affichage de ligne masquée

Chris Linefield

XLDnaute Junior
Bonjour !

Je viens vers vous car je bloque sur un point.

Je vous explique ce que mon fichier excel fait :
- L'utilisateur clique sur une des cases à cocher dans la feuille "Demande initiale"
- Le code recherche la valeur de la cellule qui se trouve à gauche de la case à cocher dans la feuille "Liste" pour trouver une correspondance
- Si la valeur est trouvée, il copie l'ensemble des lignes qui correspond dans le tableau de la feuille "Analyse Impacts"
- Lorsque la feuille "Analyse Impacts" est modifiée, il actualise le VBA pour :
*Masquer toutes les lignes du tableau qui contient la valeur "Y" dans la colonne A
*Si dans la colonne "B" une cellule contient "Achats" et en colonne D elle contient "Impact sur coût Matière Première / Service ?" et que la colonne E contient "Oui", alors elle affiche les deux lignes en dessous.

Mon problème :
Si c'est deux lignes masquées en dessous, le code ne fait rien. Si c'est une ligne masquée en dessous et ensuite une ligne rempli, ça fonctionne. J'aimerais avoir une idée de comment faire pour que les deux lignes masquées puissent apparaitre... En sachant que j'ai coché deux cases pour voir si ça venait du fait que c'était la fin du tableau, mais le code ne s'exécute pas comme ça non plus. Que faire ?

Dans mon tableau excel, je ne travaille que sur la case à cocher "Achat" pour le moment. Vous pouvez me venir en aide ?
 

Pièces jointes

  • Xxxx_N-Olivier_Designation_ZCP_adjuvants_AUD22-12_Test_formulaire Excel.xlsm
    125 KB · Affichages: 9

vgendron

XLDnaute Barbatruc
Hello

je crois me souvenir de cette appli..
je viens de regarder. quand les 3 conditions sur les colonnes B D et E sont réunies, les deux lignes justes en dessous sont bien affichées

masque les lignes 26 et 27 manuellement
et remet oui dans la colonne E ==> les deux lignes sont a nouveau affichées..
donc..je ne vois pas le pb.
 

Chris Linefield

XLDnaute Junior
Hello

je crois me souvenir de cette appli..
je viens de regarder. quand les 3 conditions sur les colonnes B D et E sont réunies, les deux lignes justes en dessous sont bien affichées

masque les lignes 26 et 27 manuellement
et remet oui dans la colonne E ==> les deux lignes sont a nouveau affichées..
donc..je ne vois pas le pb.
En effet, tu m'avais déjà aidé sur ce sujet.

J'ai masqué manuellement les lignes 26 et 27 et lorsque je mets "oui" dans la colonne "E", rien ne s'affiche pour moi... J'ai testé sur deux pc, même résultat.

EDIT : Ok, je viens de copier coller moi même les lignes sur le tableau de la feuille "Analyse Impacts", dans ce cas ça fonctionne. Mais lorsque je passe par la case à cocher, ça ne marche pas. C'est le cas chez toi aussi ?
 

Chris Linefield

XLDnaute Junior
avec le fichier que tu as posté, je n'ai pas fait le moindre copier coller.. et ca fonctionne bien..
tu dois certainement faire quelque chose en plus (ou en moins) pour avoir ton pb..??
Je confirme, ça ne fonctionne pas pour ma part.
Je coche la case "Achats" et je regarde dans la feuille "Analyse Impacts"
Ensuite j'indique la valeur non en E25 et rien ne se passe
Tu as une idée ?
 

Phil69970

XLDnaute Barbatruc
Bonjour à tous

J'ai ceci comme message
1724914574604.png


@Chris Linefield

Essaye ceci :

Dans le module 6

Tout au début de module tu rajoutes :

Option Compare Text

1724913729547.png


Toujours dans le module 6

Tu remplaces ceci
LCase((ws.Cells(i, 5).Value) = "oui")

Par ceci
ws.Cells(i, 5).Value) = "oui"

Ce qui te donnera ceci

VB:
Public Sub UpdateHiddenRows()
    Dim ws As Worksheet
    Dim lastRow As Long
    Dim i As Long
 
    Application.EnableEvents = False
    Application.ScreenUpdating = False
 
    On Error GoTo ErrorHandler
 
    Set ws = ThisWorkbook.Worksheets("Analyse Impacts")
    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
 
    For i = lastRow To 1 Step -1
        If ws.Cells(i, 1).Value = "Y" Then
            ws.Rows(i).Hidden = True
        Else
            ws.Rows(i).Hidden = False
        End If
    Next i
 
    For i = 1 To lastRow - 2
        If ws.Cells(i, 2).Value = "Achats" And _
           ws.Cells(i, 4).Value = "Impact sur coût Matière Première / Service ?" And _
           ws.Cells(i, 5).Value = "oui" Then
            ws.Rows(i + 1).Hidden = False
            ws.Rows(i + 2).Hidden = False
        End If
    Next i
 
ErrorHandler:
    Application.EnableEvents = True
    Application.ScreenUpdating = True
End Sub

Ne rien changer d'autre !!!!

Merci de ton retour
 

Pièces jointes

  • Xxxx_N-Olivier_Designation_ZCP_adjuvants_AUD22-12_Test_formulaire Excel.xlsm
    118.7 KB · Affichages: 3

Chris Linefield

XLDnaute Junior
Bonjour à tous

J'ai ceci comme message
Regarde la pièce jointe 1202562

@Chris Linefield

Essaye ceci :

Dans le module 6

Tout au début de module tu rajoutes :



Regarde la pièce jointe 1202557

Toujours dans le module 6

Tu remplaces ceci


Par ceci


Ce qui te donnera ceci

VB:
Public Sub UpdateHiddenRows()
    Dim ws As Worksheet
    Dim lastRow As Long
    Dim i As Long
 
    Application.EnableEvents = False
    Application.ScreenUpdating = False
 
    On Error GoTo ErrorHandler
 
    Set ws = ThisWorkbook.Worksheets("Analyse Impacts")
    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
 
    For i = lastRow To 1 Step -1
        If ws.Cells(i, 1).Value = "Y" Then
            ws.Rows(i).Hidden = True
        Else
            ws.Rows(i).Hidden = False
        End If
    Next i
 
    For i = 1 To lastRow - 2
        If ws.Cells(i, 2).Value = "Achats" And _
           ws.Cells(i, 4).Value = "Impact sur coût Matière Première / Service ?" And _
           ws.Cells(i, 5).Value = "oui" Then
            ws.Rows(i + 1).Hidden = False
            ws.Rows(i + 2).Hidden = False
        End If
    Next i
 
ErrorHandler:
    Application.EnableEvents = True
    Application.ScreenUpdating = True
End Sub

Ne rien changer d'autre !!!!

Merci de ton retour
Toujours le même souci...
J'ai teste sur le poste de 3 de mes utilisateurs et j'ai la même problématique...
1724915694805.png
 

Chris Linefield

XLDnaute Junior
Re

Perso je n'ai plus d’erreur après ma modif du post # 7

@Chris Linefield

Mais je viens de voir ceci

Regarde la pièce jointe 1202567

Il serait surprenant que Vincent est fait un TS avec pour nom "Tableau16"

Rappel quand tu as un TS tu écris le code pour un TS

*TS = Tableau structuré
En effet, il semblerait que j'ai une connexion :
1724917003686.png

Ca impacte le code ?

J'ai remarqué quelque chose par contre, lorsque je coche plusieurs cases, les lignes masquées vont à la fin du tableau, comme ci elles n'étaient pas présentes, ça n'aurait pas un impact ?

J'ai recrée également la même chose sur un fichier excel vierge, j'ai le même souci des lignes qui ne s'affichent pas malgré les conditions remplies.
 
Dernière édition:

Chris Linefield

XLDnaute Junior
Hello @Phil69970
effectivement, en général je renomme systématiquement (ou à 99%) les tableaux

@Chris Linefield
et à y regarder de plus près.. ce fichier n'est plus vraiment celui que je t'avais proposé dans l'autre post..
je ne sais pas quelles modifs tu as faites, mais tu aurais intérêt à repartir de l'ancien fichier qui fonctionnait bien.. me semble t il..?
Le souci est que l'ancien fichier ne convenait pas et que je partais dans la mauvaise direction... D'après les utilisateurs.
Je vais voir ce que je peux faire alors, merci pour le temps que vous avez passé à m'aider en tout cas
 

Chris Linefield

XLDnaute Junior
dans ce cas.. plutot que tout refaire, il vaut mieux expliquer le plus clairement ce qui va, et ce qui ne va pas dans le précédent fichier, et exposer les modifications à apporter
La mise à jour du fichier pourrait être complexe étant donné que l'ancienne version n'a pas été actualisée. Voici ce que je souhaite réaliser avec ce fichier :
  1. Fonctionnalité des cases à cocher :
    • Lorsqu'un utilisateur coche une case, le système recherche la valeur correspondante à gauche de cette case dans la feuille "Liste".
    • Si une correspondance est trouvée, les lignes associées sont copiées et collées dans le tableau de la feuille "Analyse Impacts".
    • À l'inverse, si une case est décochée, les lignes correspondantes sont retirées du tableau "Analyse Impacts".
  2. Copie des données :
    • Les lignes sont copiées sans code couleur, conformément aux souhaits des utilisateurs.
    • Il est crucial de ne pas supprimer les lignes 22 et 23 du tableau, car elles s'appliquent à l'ensemble des services.
  3. Masquage/démasquage des lignes :
    • Après la copie des lignes, un code est exécuté pour masquer ou démasquer les lignes contenant la valeur "Y" dans la colonne A.
    • La règle actuelle est la suivante : Si colonne B = "Achats" ET colonne D = "Impact sur coût Matière Première / Service ?" ET colonne E = "oui", alors les deux lignes suivantes doivent être affichées.
  4. Problème rencontré :
    • Actuellement, lorsque la condition est vraie, les deux lignes suivant la ligne correspondante ne s'affichent pas comme prévu.
    • Ce problème pourrait être lié à la version de Microsoft Office utilisée (Microsoft 365 Apps for entreprise).
J'espère que cette description est claire et précise. N'hésitez pas à me demander des éclaircissements si nécessaire.
 

vgendron

XLDnaute Barbatruc
re
on va le faire dans l'ordre
1) j'ai supprimé les cases à cocher: il suffit de cliquer dans la cellule pour qu'un X apparaisse ou disparaisse
==>quand l'item est coché, les lignes correspondantes de la feuille "Liste" sont copiées telles quelles dans la feuillle "Analyse impact"
==> quand l'item est coché, les lignes sont supprimées

a quoi servait le SA1 SA2...S22 que tu mets en colonne Z de la feuille Analyse impact?

pour l'instant.. aucune ligne n'est masquée ou affichée..

est ce que déjà.. ca correspond ?

Remarque: dans la feuile "Liste", la colonne "Masqué": tu as X ou Y... ne serait il pas plus logique et plus explicite de mettre un des deux couples "Yes / No, "Oui/Non"
 

Pièces jointes

  • Chris Linefield V0.xlsm
    124.1 KB · Affichages: 1
Dernière édition:

Discussions similaires

Réponses
18
Affichages
526

Statistiques des forums

Discussions
314 698
Messages
2 112 019
Membres
111 400
dernier inscrit
mandaille