IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Code pour plusieurs feuilles


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    211
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 211
    Par défaut Code pour plusieurs feuilles
    Bonsoir le forum,

    j'ai ce code qui fonctionne très bien (fait par papounet) mais comment faire pour qu'il fonctionne pour toute les feuilles
    merci d'avance
    jacky
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    Sub MasquerLignes()
    Dim Cel As Range, Plage As Range, sh As Object
     
    For Each sh In Sheets
      If sh.Name Like "CG SD*" Then
        With sh
          For Each Cel In .Range("D:D").SpecialCells(xlCellTypeConstants)
            If Cel.Value Like "Dos*" And Cel.Offset(1, 0) = "" Then
              If Plage Is Nothing Then
                Set Plage = Cel.Offset(-1, 0).Resize(10, 1)
                Else
                Set Plage = Application.Union(Plage, Cel.Offset(-1, 0).Resize(10, 1))
              End If
            End If
          Next
        End With
        Plage.EntireRow.Hidden = True
        Set Plage = Nothing
      End If
    Next
    End Sub

  2. #2
    Membre Expert
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 875
    Par défaut
    que veux tu dire par "marcher sur toutes les feuilles"

    Actuellement la procédure tourne sur toutes les feuilles
    en tout cas tu auras un bug si ton classeur passe par une feuille qui n'est pas une feuille de calcul.

    Utilise plutôt:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each sh In WorkSheets
    par contre le contenu de la boucle ne s'exécute que si le nom de la feuille correspond au motif "CG SD*":

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If sh.Name Like "CG SD*" Then
    ...
    End If
    ce test l'empêche de s'exécuter sur toutes les feuilles
    si tu ne le souhaites pas il faut commenter les lignes IF et END IF

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    Sub MasquerLignes()
    Dim Cel As Range, Plage As Range, sh As Worksheet
     
    For Each sh In WorkSheets
      'If sh.Name Like "CG SD*" Then
        With sh
          For Each Cel In .Range("D:D").SpecialCells(xlCellTypeConstants)
            If Cel.Value Like "Dos*" And Cel.Offset(1, 0) = "" Then
              If Plage Is Nothing Then
                Set Plage = Cel.Offset(-1, 0).Resize(10, 1)
                Else
                Set Plage = Application.Union(Plage, Cel.Offset(-1, 0).Resize(10, 1))
              End If
            End If
          Next
        End With
        Plage.EntireRow.Hidden = True
        Set Plage = Nothing
      'End If
    Next
    End Sub

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    211
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 211
    Par défaut
    Bonsoir le forum,Benjîle,

    cela fonctionne sur les feuille qui sont CF SD ou CG SD mais ne fonctionne pas sur les feuilles CF D ou CG D mais je ne pense que cela viennent du format du Nom mais plutot du code car il bug et me met :erreur d'éxécution '91' et variable objet ou variable de bloc non définie et quand je fais débogage, il me surligne cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Plage.EntireRow.Hidden = True
    je pense qu'il y a une erreur de plage mais à part que sur les feuilles ou cela bug, les tableaux s'arrêtent à la ligne 25, je ne vois pas
    merci de votre aide
    jacky

  4. #4
    Membre Expert
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 875
    Par défaut
    quel est le code qui produit une erreur? celui que je vous fournis ou celui vous donnez au début de la discussion?

    si il s'agit du mien voici une autre proposition:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    Sub MasquerLignes()
    Dim Cel As Range, Plage As Range, sh As Object
     
    For Each sh In Sheets
      If sh.Name Like "CG SD*" Then
        With sh
          For Each Cel In .Range("D:D").SpecialCells(xlCellTypeConstants)
            If Cel.Value Like "Dos*" And Cel.Offset(1, 0) = "" Then
              If Plage Is Nothing Then
                Set Plage = Cel.Offset(-1, 0).Resize(10, 1)
                Else
                Set Plage = Application.Union(Plage, Cel.Offset(-1, 0).Resize(10, 1))
              End If
            End If
          Next
        End With
        if Not(Plage is nothing) then  Plage.EntireRow.Hidden = True
        Set Plage = Nothing
      End If
    Next
    End Sub
    La procédure plante sur certaines feuilles parce que dans chacune elle cherche dans la colonne D parmi les cellules contenant des constantes (et pas de résultats de formules ni des cellules vides)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      For Each Cel In .Range("D:D").SpecialCells(xlCellTypeConstants)
    dont le début commence par les lettres "Dos" et dont la cellule en dessous ne contient rien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      If Cel.Value Like "Dos*" And Cel.Offset(1, 0) = "" Then
    si dans ces feuilles il ne trouve aucune cellule de ce type alors que la colonne D contient des constantes l'objet Plage ne sera jamais incrémenté et vaudra Nothing ce qui fait planter la ligne que vous indiquez

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    211
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 211
    Par défaut
    Bonjour le forum, benjile,

    oui, c'est exactement cela, j'avais vu que c'était les feuilles ou lorsque les tableaux étaient rempli et qu'ensuite il n'y avait pas de tableau vide derrière que le code plantait, donc j'ai ajouté un tableau derrière ou j'ai mis les écriture en blanc , aucune bordure et aucun fond comme cela, il y a toujours un mot Dos* derrière et du coup cela fonctionne maintenant , mais je vais essayer ton nouveau code pour voir
    merci beaucoup
    jacky

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Code pour plusieurs feuilles
    Par jacfld49 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 07/03/2010, 10h14
  2. [XL-2003] Avoir le même code pour plusieurs feuilles
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 07/01/2010, 13h29
  3. Execution de code sur plusieurs feuilles
    Par anisr dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 29/12/2006, 11h12
  4. [excel] même code sur plusieurs feuilles
    Par sabotage dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 16/11/2005, 12h23
  5. Réponses: 4
    Dernier message: 06/11/2003, 10h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo