Macro cache au fur et à mesure

Résolu
Claudine -  
Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

J'ai fait une macro pour cacher mes onglets qui s'appel SF02 N° 1 SF02 N° 1A etc jusqu'au n° 25 par rapport aux informations que je mets sur ma feuille SF03

Si je mets 1 l'onglet reste si 0 il s'enlève mais ma macro fonctionne si je clic sur ma macro à la fin.

Je voudrais améliorer ma macro en disant que dès que je mes 0 l'onglet correspondant se cache sans attendre la fin.

Voic ma macro :

Sub Cache_Onglets()
For x = 1 To Sheets.Count
If Left(Sheets(x).Name, 4) = "SF02" Then
Sheets(x).Activate
If Range("E12").Value = 0 And Range("E12").Value <> "" Then
'Cache Onglet
Sheets(x).Visible = False
End If
End If
Next x
End Sub

Merci de votre aide que vous voudrez bien m'apporter.

Bien cordialement

17 réponses

  1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub 'sortie si plus d'une cellule selectionnee

    If Target.Column <> 5 And Target.Row <> 12 Then 'cellule E12 selectionnee ??
    'pas E12
    Else
    With Sheets(Sh.Name)
    If Left(.Name, 4) = "SF02" And .Range("E12").Value = 0 And .Range("E12").Value <> "" Then
    .Visible = False
    End If
    End With
    End If

    End Sub

    Vous copier ce code dans ThisWorkbook du VBA

    Bonne suite

    PS: vous savez comment faire pour reafficher les onglets caches!...
    1
  2. Claudine
     
    Pour reafficher les onglets j'ai fait cette macro est-elle toujours valable avec votre macro.

    Sub affOnglet()
    Dim w As Worksheet
    For Each w In Worksheets
    If Left(w.Name, 4) = "SF02" Then
    w.Visible = True
    End If
    Next w
    End Sub

    Merci de votre aide

    Je viens d'essayer votre macro et la première ligne se met en rouge il ne excel ne veut pas du "sub"

    Encore merci de votre aide
    0
    1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Re
      Macro toujours valable.

      Bonne suite
      0
  3. Claudine
     
    Je viens d'essayer votre macro et la première ligne se met en rouge il ne excel ne veut pas du "sub"

    Encore merci de votre aide
    0
    1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Re,
      Montrez ce que vous avez comme code
      0
  4. Claudine
     
    comme code j'ai erreur d'execusion '424'

    Sub Cache_Onglets()
    If Target.Column <> 5 And Target.Row <> 12 Then 'cellule E12 selectionnee ??
    'pas E12
    Else
    With Sheets(Sh.Name)
    If Left(.Name, 4) = "SF02" And .Range("E12").Value = 0 And .Range("E12").Value <> "" Then
    .Visible = False
    End If
    End With
    End If

    End Sub

    La ligne If traget. se met en surbrillance
    0
    1. chossette9 Messages postés 6855 Date d'inscription   Statut Contributeur Dernière intervention   1 313
       
      Bonjour,

      il ne faut pas récupérer le code de f894009 et le mettre dans votre macro, mais bien de copier ce qu'il a écrit.

      La macro a utiliser est simplement celle de f894009, ni plus, ni moins.
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Claudine
     
    Je suis un peut blonde mais je n'est pas mis le code f894009 dans ma macro

    Voici exacement se que j'ai mis :
    Sub Cache_Onglets()
    If Target.Column <> 5 And Target.Row <> 12 Then 'cellule E12 selectionnee ??
    'pas E12
    Else
    With Sheets(Sh.Name)
    If Left(.Name, 4) = "SF02" And .Range("E12").Value = 0 And .Range("E12").Value <> "" Then
    .Visible = False
    End If
    End With
    End If

    End Sub

    Dite moi se que je fais mal ou se que je dois faire ou comment procéder.

    Merci d'avance
    0
    1. chossette9 Messages postés 6855 Date d'inscription   Statut Contributeur Dernière intervention   1 313
       
      Ce qu'il faut faire :

      1°) ouvrir VBA (Alt+F11)
      2°) Dans la colonne de gauche, double-cliquer sur 'This Workbook'
      3°) Copier sans rien changer la macro de f894009
      4°) enregistrer

      Le principe de sa macro est qu'il s'agit d'une macro événementielle, qui se déclenche lors d'une action spécifique (ici la modification d'une cellule). Ce qui la différencie de vos macro, c'est que pouvoir les lancer, vous devez cliquer sur un bouton, ou les lancer manuellement. Les macro événementielles se déclenche automatiquement.
      0
  7. Claudine
     
    Pardon mais les macro ne sont pas simple pour moi et j'ai des laccunes

    Alors voilà ou j'en suis :
    1 - quand je fais Alt+F11 je tombe sur ma première macro
    2 - je n'ai pas de colonne de gauche pour double clic sur 'This Workbook'

    j'ai en haut de l'écran ma barre d'outil

    en dessous un à gauche un déroulant ou il y a d'écrit général et à droite un déroulant ou il y a d'écrit cache_onglets
    puis la macro suivante :

    Sub Cache_Onglets()
    For x = 1 To Sheets.Count
    If Left(Sheets(x).Name, 4) = "SF02" Then
    Sheets(x).Activate
    If Range("E12").Value = 0 And Range("E12").Value <> "" Then
    'Cache Onglet
    Sheets(x).Visible = False
    End If
    End If
    Next x
    End Sub

    Merci de me guider encore une fois
    0
  8. Claudine
     
    J'ai trouver ma colonne sur la gauche et j'ai clic double clic sur This Workbook, j'ai copier la macro, j'ai enregistrer mais elle ne fonctionne pas je pense qu'il me manque une petite chose par exemple à la place de mettre :

    Sub Cache onglets() on doit mettre autre chose et à la fin de la macro à la place de mettre End Sub on devrait aussi mettre autre chose.

    Mais ma question est Quoi ?
    0
    1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Bonjour Claudine

      Vous devez mettre le code que je vous ai fourni.
      Votre macro Sub Cache onglets() ne sert plus.

      A+
      0
  9. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Salut,

    Il est fortement déconseillé d'ouvrir plusieurs discussions sur le même sujet qui n'a pour effet que de disperser les intervenants alors que des discussions restent en souffrances.
    Des solutions t'on été données sur cette discussion qui on été remerciées par des votes négatifs alors que le sujet à été mis en statut résolu drôle façon de remercier les intervenants qui donnent sans compter
    A+
    Mike-31

    Une période d'échec est un moment rêvé pour semer les graines du savoir.
    0
  10. Claudine
     
    Pardon pour Mike, mais comme nous somme a 2 sur mon log ma collègue m'avait dit que ta solution était OK mais je n'ai pu l'appliquer et comme il y a quelque temps j'avais commencé a faire les démarches j'ai repris le relais et je lui est demandé de ne plus prendre mon log afin qu'il n'y est pas de soucis d'interprétation.

    Pour répondre à f0894009 :

    Je voulais que quand je mets un 1 dans ma cellule E12 l'onglet reste et si je mets un 0 l'onglet se cache.

    Dans l'attente de votre aide
    0
    1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Re,

      Ouvrir VBA par Alt+F11
      double click sur ThisWorkbook
      Copiez le code ci-dessous

      Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
      If Target.Count > 1 Then Exit Sub 'sortie si plus d'une cellule selectionnee

      If Target.Column <> 5 And Target.Row <> 12 Then 'cellule E12 selectionnee ??
      'pas E12
      Else
      With Sheets(Sh.Name)
      If Left(.Name, 4) = "SF02" And .Range("E12").Value = 0 And .Range("E12").Value <> "" Then
      .Visible = False
      End If
      End With
      End If

      End Sub

      A votre ecoute pour toutes explications
      0
  11. Claudine
     
    Encore moi,

    Et pardon pour mon ignorance sur le sujet. Je viens de faire ce que vous me dites puis j'ai enregistré mais rien ne se passe. Et quand je fais outil macro elle n'apparaît pas dans la liste des macros, et quand je fait Alt F11 à l'écrant apparraît ma première macro comment dois-je faire car je pense que je suis vraiment bête et excuser moi encore une fois.
    0
    1. chossette9 Messages postés 6855 Date d'inscription   Statut Contributeur Dernière intervention   1 313
       
      e viens de faire ce que vous me dites puis j'ai enregistré mais rien ne se passe
      Avez -vous essayé ensuite de modifier une cellule et de voir si l'onglet était caché ?
      0
    2. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Re,
      Pas de soucis. Votre EXCEL: 2003 ou 2007-2010 pour vous mettre a dispo un exemple?

      A+
      0
  12. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Re,

    En E12 tu saisis 0 tous les onglets se cachent, ensuite 2 affiche la feuil2, 3 la feuil3 etc ...
    En E12 le numéro de feuille peut être remplacé par son nom

    https://www.cjoint.com/?BBxq0MLRKsH
    A+
    Mike-31

    Une période d'échec est un moment rêvé pour semer les graines du savoir.
    0
    1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Bonjour Mike-31
      Il semble que la demande a evolue depuis la proposition que j'ai faite le 24 janvier. Je vous laisse la main.
      Bye
      0
  13. Claudine
     
    Bonsoir,

    Je vous joint mon fichier

    Dans l'onglet SF03 je mets un 1 et dans l'onglet SF02 il se met tout seul et je veux quand il y a un 1 dans la cellule E12 que l'onglet reste et quand il y a 0 l'onglet se cache

    http://cjoint.com/?3BxroF3YP1J

    Merci de votre aide
    0
  14. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Re,

    C'est plus parlant avec ton fichier, pour commencer sur ta feuille SF03 dans quelle cellule veux tu saisir 1 ?

    Si je comprends bien, en mettant 1 dans ta cellule à définir, feuille SF03 toutes les feuilles s'affichent ou simplement les SF02 ?

    A+
    Mike-31

    Une période d'échec est un moment rêvé pour semer les graines du savoir.
    0
    1. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
       
      J'ai décortiqué ton fichier, je modifie la macro et te retourne le fichier
      A+
      0
  15. Claudine
     
    Merci merci Merci encore à vous tous qui vous êtes donnés beaucoup de mal avec ma macro.
    Merci encore Mike-31 pour ta précieuse aide car vraiment je n'y serai pas arrivée toute seul.

    Encore merci.
    0
  16. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Re,

    Ce n'est rien, et il serait possible d'améliorer le code. J'ai préféré écrire 4 lignes par feuille pour te permettre de le comprendre et surtout de le reproduire. J'ai supprimé des codes inutiles par contre tu as deux Modules avec des codes dont 1 inutile que tu peux supprimer.
    Si tu as besoin n'hésite pas de revenir sur le forum et évite d'ouvrir plusieurs discussions similaires
    0