Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2367 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  PB sur EXCEL

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

PB sur EXCEL

n°2316362
gugi976
Posté le 04-06-2018 à 10:23:32  profilanswer
 

Bonjour à tous,  
 
Voilà j'ai un souci avec un tableau Excel. Ce que je veux faire est tout simple mais n'ayant pas un très bon niveau, je n'y arrive pas.  
 
Alors j'ai une feuille Excel avec un tableau en face duquel pour chaque ligne en fonction d'un certain critère j'ai "VRAI" OU "FAUX"  
 
Ce que j'aimerais tout simplement c'est que toutes les lignes qui contiennent une cellule "FAUX" soit masquées et s'affiche si non. Ou à l'inverse toutes les lignes marquées "VRAI" s'affichent ou se masquent si non.  
 
Ce tableau étant en permanence utilisé, il faut que ça puisse se faire automatiquement à chaque fois que ça se modifie ( et donc si un "FAUX" devient "VRAI" la ligne  s'affiche et vis et versa)  
 
Pour info les "VRAI" ou "FAUX" seront toujours dans une seule et même colonne (A:A)  
 
Je vous remercie,  
 

mood
Publicité
Posté le 04-06-2018 à 10:23:32  profilanswer
 

n°2316379
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 04-06-2018 à 13:51:10  profilanswer
 

Peut être ceci pourra t'il t'aider ?  
https://www.extendoffice.com/docume [...] value.html


---------------
J'ai un string dans l'array (Paris Hilton)
n°2316386
gugi976
Posté le 04-06-2018 à 14:32:21  profilanswer
 

Merci pour le lien très intéressant, c'est la seconde solution qui intéresserait, à savoir en VB, le souci c'est que ce n'est pas exactement ce que je veux, dans l'exemple il supprime la ligne si une valeur est supérieure à 3000, moi je veux la même chose avec la valuer exacte "FAUX". Or ne sachant pas programmer je ne sais pas ce qu'il faut changer.  
je remet ici les lignes de codes :  
 
Sub HideRow()
'Updateby20150618
Dim Rng As Range
Dim WorkRng As Range
Dim xNumber As Integer
On Error Resume Next
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
xNumber = Application.InputBox("Number", xTitleId, "", Type:=1)
For Each Rng In WorkRng
   <span style="background-color:#ff0"> Rng.EntireRow.Hidden = Rng.Value < xNumber</span>
Next
End Sub
 
Que faut il changer là dedans ?? J'ai bien essayer mais ça ne marche pas .
D'ailleurs j'ai essayer leur code à eux en changeant mes valeurs, et ça me met erreur de compilation ...  
 
   

n°2316391
gugi976
Posté le 04-06-2018 à 14:49:00  profilanswer
 

Alors pardon si, j'ai réussi à voir ce qui n'allait pas et à le faire marcher :  
 
Sub HideRow()
Dim Rng As Range
Dim WorkRng As Range
Dim xNumber As Integer
On Error Resume Next
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
xNumber = Application.InputBox("Number", xTitleId, "", Type:=1)
For Each Rng In WorkRng
  Rng.EntireRow.Hidden = Rng.Value = xNumber
Next
End Sub
 
J'essaye de voir maintenant pour que ça se fasse automatiquement ou à défaut avec un bouton,  
 
Merci encore

n°2316392
gugi976
Posté le 04-06-2018 à 15:04:34  profilanswer
 

Alors en fait non ça ne va pas ;)  
En effet c'est ce que je veux sauf que à chaque fois que j'exécute la macro,  
je doit choisir les lignes et la valeur d'application.  
 
Moi c'est toujours la colonne A:A et ça sera toujours la valeur "FAUX" ce qui me permettrais via un bouton d'appliquer la macro tout de suite.  
Là à chaque fois je dois redonner les valeurs.
 

n°2316408
patrice337​40
Avec la réponse, c'est facile.
Posté le 04-06-2018 à 17:11:33  profilanswer
 

Bonjour,
 
Dans le module de la feuille :

Code :
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2.   Call HideRow
  3. End Sub
  4. Private Sub HideRow()
  5. Dim rng As Range
  6. Dim cel As Range
  7.   Set rng = Intersect(Me.Columns(1), Me.UsedRange)
  8.   For Each cel In rng.Cells
  9.     cel.EntireRow.Hidden = cel.Value = False
  10.   Next cel
  11. End Sub


Mais il faudrait restreindre la zone d'exécution en ciblant les antécédent.
I.e. au lieu de mettre simplement :

Code :
  1. CallHideRow


Mettre quelque chose comme (à adapter):

Code :
  1. If Intersect(Target, Me.Range("B5:F18" )) Is Nothing Then Exit Sub
  2.   CallHideRow


 


---------------
Cordialement, Patrice
n°2316447
gugi976
Posté le 05-06-2018 à 15:25:27  profilanswer
 

Bonjour Patrice,  
 
Merci beaucoup ça marche, malheureusement là encore même en faisant une restriction comme tu le suggères j'ai un moment donné un BUG où il me dit qu'il y à trop de données.  
 
Finalement je pense que c'est faisable en faisant une combinaison de conditionnelle mais faut que je rajoute quelque colonnes masquées à mon avis.  
Mais déjà je maitriserais un peu plus le sujet.  
 
Merci encore à ceux qui m'ont répondu;
 
 

n°2316452
patrice337​40
Avec la réponse, c'est facile.
Posté le 05-06-2018 à 16:14:47  profilanswer
 

gugi976 a écrit :

Bonjour Patrice,  
 
Merci beaucoup ça marche, malheureusement là encore même en faisant une restriction comme tu le suggères j'ai un moment donné un BUG où il me dit qu'il y à trop de données.  
 
Finalement je pense que c'est faisable en faisant une combinaison de conditionnelle mais faut que je rajoute quelque colonnes masquées à mon avis.  
Mais déjà je maitriserais un peu plus le sujet.  
 
Merci encore à ceux qui m'ont répondu;
 
 


Ce que je suggérais, c'est de surveiller les antécédents :  
l'évènement _Change ne produit pas lorsque le résultat d'une formule change, mais uniquement lors de la modification d'une donnée (un antécédent) qui entraine la modification du résultat de la dite formule.
D'où la suggestion de ne surveiller que la modification de ces données en restreignant l'exécution de la procédure à la plage qui les contient avec intersect().


---------------
Cordialement, Patrice

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  PB sur EXCEL

 

Sujets relatifs
Modifier valeur cellule Excel en VBA AccessActualiser un organigramme PPT à partir d'un tableau excel
A-t-on vraiment besoin du VBA sur Excel ? Voyez-vous mêmeLancement de recherche internet par Excel vba
[VBA Excel] Tirage de personne en aleatoire selon 2 conditionsPb fonction RechercheV Excel
Pb: copier un graph Excel sur WordPb exportation de données vers feuille excel
Pb Numérotation automatique sur modèle ExcelPB EXCEL VBA
Plus de sujets relatifs à : PB sur EXCEL


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR