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 :

Macro pour cacher diverses lignes qui ne se suivent pas toutes et afficher d'autres


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Intervenant temps réel
    Inscrit en
    Février 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Intervenant temps réel
    Secteur : Service public

    Informations forums :
    Inscription : Février 2014
    Messages : 6
    Par défaut Macro pour cacher diverses lignes qui ne se suivent pas toutes et afficher d'autres
    Bonjour a vous,
    Je suis nouveau dans la pratique du vba d'Excel, et je galère trop pour réaliser une macro.
    Sans vouloir trop vous déranger j'aurais besoin d'un coup de main. La macro que j'ai faite touriiiinne trop.
    de plus mon âge n'arrange pas les choses.
    Il serait très sympathique si une personne pouvait m'aider. le problème est ci joint.
    Pour être simple, une macro pour cacher des lignes et en laisser certaines apparentes.

    Les lignes de 1 à 29 sont apparentes et fixe.

    les lignes qui doivent être cachées sont :
    33, 34, 35, 36, 37, 38, 39, 40, 41.
    45,46,47,48, 52 58,59,60,61 66,67,68,69, 75, 80, 85

    Les lignes qui restent visible sont:
    30, 31, 32,
    42, 43, 44
    49, 50, 51 et 53
    54, 55, 56 ,57
    62, 63, 64, 65
    70, 71, 72, 73, 74 et 76
    77, 78, 79 et 81
    82,83,84 et 86
    ma 1ere macro ci-dessous marche ("""presque" "manque des lignes) , Mais elle rame, elle saccade.
    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
    Sub Click()
     
    ' Macro servant à masquer les lignes lorsque l'on clique sur le bouton Click
     
    Sheets("Ligne A").Rows("30:32").EntireRow.Hidden = False 'on affiche les lignes 30 à 32
    Sheets("Ligne A").Rows("42:44").EntireRow.Hidden = False 'on affiche les lignes 42 à 44
    Sheets("Ligne A").Rows("49:53").EntireRow.Hidden = False 'on affiche les lignes 49 à 53
    Sheets("Ligne A").Rows("54:57").EntireRow.Hidden = False 'on affiche les lignes 54 à 57
    Sheets("Ligne A").Rows("62:65").EntireRow.Hidden = False 'on affiche les lignes 62 à 65
    Sheets("Ligne A").Rows("69:74").EntireRow.Hidden = False 'on affiche les lignes 69 à 74
    Sheets("Ligne A").Rows("70:76").EntireRow.Hidden = False 'on affiche les lignes 70 à 76
    Sheets("Ligne A").Rows("77:81").EntireRow.Hidden = False 'on affiche les lignes 77 à 81
    Sheets("Ligne A").Rows("82:86").EntireRow.Hidden = False 'on affiche les lignes 82 à 86
     
     
     
    Sheets("Ligne A").Rows("88:217").EntireRow.Hidden = True 'on masque les lignes 88 à 217
    Sheets("Ligne A").Range("BT27") = "ATT" 'on indique le mode ATTention pour confirmer 
     
    End Sub
    Je remercie d’avance ceux qui m’accorderont de leurs temps et du savoir.

  2. #2
    Membre Expert
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Par défaut
    Bonjour,

    les lignes qui doivent être cachées sont :
    33, 34, 35, 36, 37, 38, 39, 40, 41.
    45,46,47,48, 52 58,59,60,61 66,67,68,69, 75, 80, 85
    un exemple vite fait sur tes lignes cachées à toi d'adapter (je ne les ai pas toutes faites)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub Demo()
    Dim LigCache As Range
        Set LigCache = Union(Rows("33:41"), Rows("45:48"), Rows("52:52"), Rows("58:61"))
        LigCache.EntireRow.Hidden = True
        Set LigCache = Nothing
    End Sub
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre :resolu: en n'oubliant pas d'indiquer qu'elle est la solution finale choisie ;)

  3. #3
    Membre Expert
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Par défaut
    re,
    Si on cible une feuille précise (Attention à bien faire les différences entre les 2 codes) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub Demo2()
    Dim LigCache As Range
        With Sheets("Ligne A")
            Set LigCache = Union(.Rows("33:41"), .Rows("45:48"), .Rows("52:52"), .Rows("58:61"))
        End With
        LigCache.EntireRow.Hidden = True
        Set LigCache = Nothing
    End Sub
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre :resolu: en n'oubliant pas d'indiquer qu'elle est la solution finale choisie ;)

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    dans ce cas precis ou les lignes sont connues je ne vois pas l'intérêt d'utiliser union
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A33:A41, A45:A48, A52, A58:A61").EntireRow.Hidden = True
    surtout que utiliser rows"x:y"... et entirerow a la fin ca fait un peu ... hein RYU!!!!

    sur tout aussi que
    Set LigCache = Union(.Rows("33:41"), .Rows("45:48"), .Rows("52:52"), .Rows("58:61")) est une variable type range de X lignes sur le columns.count
    je te dis pas la mémoire si les lignes sont remplie hein !! Ryu!!!
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Intervenant temps réel
    Inscrit en
    Février 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Intervenant temps réel
    Secteur : Service public

    Informations forums :
    Inscription : Février 2014
    Messages : 6
    Par défaut MERCI
    Tout d'abord Merci,
    vous êtes très sympa de m'accorder de votre temps.

    Je suis de ton avis patricktoulond'ailleur c'est pour ça que je fais appel à vous.
    Je vais commencer par adapter et tester la code de RyuAutodidacte, cela semble répondre a mon attente.

    je vous ferais part des résultats ce Samedi .
    Cordialement

  6. #6
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour patricktoulon
    sur tout aussi que
    Set LigCache = Union(.Rows("33:41"), .Rows("45:48"), .Rows("52:52"), .Rows("58:61")) est une variable type range de X lignes sur le columns.count
    je te dis pas la mémoire si les lignes sont remplie hein !! Ryu!!!
    Croyance à ne pas propager.
    un objet range créé par référence à une plage de cellules n'est qu'un pointeur vers cette plage et n'occupe pas de mémoire proportionnelle au nombre de cellules de la plage concernée. Il n'occupe que la mémoire (insignifiant) d'un pointeur *******.
    Préparer une liste de courses n'est pas mettre ou avoir mis dans son caddie les produits figurant sur cette liste !

    Pour être très précis à ce sujet : la seule différence (encore plus insignifiante) qu'il sera possible de constater, ne concernera que le pointeur lui-même, dans le cas d'un pointeur vers une plage constituée d'un très grand nombre d'objets areas (sous-plages discontinues)

    ****** voyons maintenant ce qu'il en est de l'adresse mémorisée par chaque pointeur :
    proposition ryuautodidacte : longue de 31 octets "$33:$41,$45:$48,$52:$52,$58:$61"
    proposition patricktoulon : longue de 41 octets "$A$33:$A$41,$A$45:$A$48,$A$52,$A$58:$A$61"
    Quelle est selon toi celle qui sera analysée puis parcourue la plus vite lors de l'exécution des instructions sur cette plage (ce pointeur de plage, en fait) ?
    J'encourage personnellement Ryuautodidacte à continuer à observer sa saine rigueur.

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

Discussions similaires

  1. [XL-2013] Une macro pour cacher une colonne qui ne fonctionne plus
    Par DavidCsame dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 02/03/2015, 14h17
  2. Réponses: 3
    Dernier message: 20/02/2014, 15h34
  3. Macro pour grouper des lignes sur une plage qui peut varier
    Par RichRich59 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 26/01/2011, 13h04
  4. Macro pour grouper des lignes sur une plage qui peut varier
    Par girardinho dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 26/07/2010, 09h43
  5. Excel : Macro pour positionnement sur ligne
    Par danielh dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/10/2006, 08h45

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