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 :

Afficher des lignes en fonction d'un nombre


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2015
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Afficher des lignes en fonction d'un nombre
    Bonjour,

    Je suis débutante dans les macros, et je sollicite votre aide.
    Je dois rédiger un projet pour un examen, et j'ai besoin d'une macro.
    Je vous explique la situation : en B4 je vais taper un nombre de 1 à 39 .
    j'ai les lignes disponibles de la ligne 5 à 44.
    Je désire, que si je tape 2, seulement 2 lignes apparaisse ou 37 lignes ce mettent en masquer. (pas d'insertion, car j'ai peur que mes formules changent)
    Et que par la suite si je tape 8, j'ai que 8 lignes qui s'affichent.
    Est-ce qu'une macro peut m'aider pour afficher et masquer des lignes ?

    j'espère que mes explications ont été claires.

    Merci
    Sandra

  2. #2
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 906
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 906
    Points : 8 539
    Points
    8 539
    Par défaut
    Salut

    Bien sûr, le plus simple étant de masquer toutes les lignes dans un 1er temps puis d'afficher la ligne que tu souhaites.
    Vu que c'est pour un examen, je suppose que tu souhaites maitriser ce que tu fais et donc comprendre le code, le mieux est donc de le constituer toi même avec notre aide?

    Pour t'aider je te conseilles de regarder la propriété Hidden de l'objet Range.

    Si la démarche te convient, propose un début de code pour que nous puissions te guider.

    ++
    Qwaz

  3. #3
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Autre solution (ni plus compliquée ni plus simple) : tu places tes résultats dans un autre onglet que l'onglet de tes données sources.
    En début de macro tu remets à blanc ton onglet résultat (un simple Delete sur les lignes remplies) et ensuite tu y copies le nombre de lignes souhaitées depuis ton onglet source (un simple Copy).
    L'avantage de cette méthode, c'est que toutes tes données sources reste consultables tout en gardant le résultat intact.

    En somme, tu peux coder ça en deux lignes (avec le méthode de Qwazerty aussi).

    Un dernier détail : si tu veux que ça se fasse automatiquement chaque fois que tu modifies ton paramètre (nb de lignes), il va falloir lier ça à un évènement, un Worksheet_Change par exemple.

  4. #4
    Nouveau Candidat au Club
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2015
    Messages : 3
    Points : 1
    Points
    1
    Par défaut macro suite
    Merci à vous pour vos réponses.

    J'ai regardé la propriété d'Hidden, elle me paraît extrêmement sympas pour mon dossier. J'ai commencé à regarder des sites pour comprendre.
    Voici ce que je pense avoir trouvé. Je pense que j'ai des erreurs, dites moi si je suis sur la bonne piste


    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 afficcher_lignes_fonction_des_nombres ()
     
    Dim txt_lignes As String
    Dim a as long      '"a" est une variable qui varie de 1 à 39
     
       a=sheet("Feuil1").Range("b4")       '"a" fait référence à la feuille 1 cellule B4
       txt_lignes = "Résultat"                  ' les lignes sont le résultat
     
            If a = 1                                  'si "a"  est égale à 1
            then 
            activeCell.EntireRange.Hidden=1      'là je pense que j'ai faux !  Donc activer une seule ligne
       Else
             If a=2                                         
             then
              activeCell.EntireRange.Hidden=2
             ...
     
             End if
     
     
    End sub

  5. #5
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 906
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 906
    Points : 8 539
    Points
    8 539
    Par défaut
    Salut

    Tu as des supports de cours ou un énoncé qui t'impose un cadre particulier ?

    J'ai mis des commentaires dans ton code.
    L'un d'eux faire référence à l'aide VBA, comme en littérature, un code informatique quel qu'il soit à une syntaxe qu'il faut respecter sinon la phrase n'est pas comprise par l’interpréteur.
    Il faut t'appuyer sur l'aide pour utiliser les bons termes.

    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
    23
    24
    25
    26
    27
    28
    29
    Sub afficcher_lignes_fonction_des_nombres()
     
    Dim txt_lignes As String
    Dim a As Long '"a" est une variable qui varie de 1 à 39
     
    'Il faut toujours spécifier les classeur sur lequel tu travailles, ici ThisWorkbook faire référence au classeur qui contient la macro. Ca évite bien des tracas
    'ajoute ".value" lorsque tu veux récupérer la valeur contenue dans une cellule, VBA l'ajoute automatiquement mais dans certains cas ça pose des problème quand il n'y ait pas.
    a = ThisWorkbook.Sheet("Feuil1").Range("b4").Value '"a" fait référence à la feuille 1 cellule B4
     
    'Je ne comprends pas ce que tu veux faire avec cette ligne
    txt_lignes = "Résultat" ' les lignes sont le résultat
     
    'Si une ligne passe en rouge c'est que ta syntaxe est fausse, la structure if ... Then doit rester sur une seule ligne
    If a = 1 Then 'si "a" est égale à 1
        'Pour rendre le code plus lisible, décalle les lignes de code inclusent dans une structure (ici structure If) à l'aide de la touche Tabulation
        'Activecell représente la cellule active, celle ou tu as cliqué en dernier avant de lancer le code.
        'Il ne faut pas hésiter à utiliser l'aide VBA (touche F1) afin d'avoir des information sur les différents objets/propriétés que tu manipules
        'Lorsque tu tapes ton code, après un point VBA te propose des suite possible, il est extrêmement rare d'avoir à taper un mot qui ne se trouve pas dans la liste.
            'Ici EntireRange n'existe pas en VBA
            'Hidden est un type boolean, il est soit True soit False
        ActiveCell.EntireRange.Hidden = 1 'là je pense que j'ai faux ! Donc activer une seule ligne
     
    ElseIf a = 2 Then
        ActiveCell.EntireRange.Hidden = 2
    ...
     
    End If
     
    End Sub

    Voila un exemple de code à adapter à ton besoin

    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
    Sub Demo()
     
    Dim MesCellules As Range 'On déclare un objet range (il représente une ou plusieurs cellules)
     
    'On pointe un groupe de cellule (l'utilisation de Set est réservé aux objets)
    Set MesCellules = ThisWorkbook.Sheets("Feuil1").Range("A2:A50")
    'A partir de maintenant MesCellules représente la plage de cellules allant de A2 jusqu'à A50
    'Cette écriture évite d'avoir à tout réécrire à chaque fois
     
    'Si je veux masquer toutes les ligne contenant ces cellules, je vais chercher l'objet qui représente ces lignes (EntireRow)
    'EntireRow est lui aussi un objet de type Range, il représente en faite la totalité des cellules contenues dans une ligne
    MesCellules.EntireRow.Hidden = True
     
    '...
     
    End Sub
    ++
    Qwaz

  6. #6
    Nouveau Candidat au Club
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2015
    Messages : 3
    Points : 1
    Points
    1
    Par défaut macro suite
    Merci beaucoup !!!!!!!!!!!
    Non je n'ai pas de support, cours ou autres. J'ai vu seulement les algo il y a maintenant 3 ans.

    J'essaie de trouvé des sites ou des vidéos, pour que j'apprenne quelque truc sympas !
    Mais c'est vrais que je suis vite perdu.

    Je vais essayer de comprendre ta macro, et de l'appliquer.
    S'il y a des éléments où je ne comprends pas trop le pourquoi du comment, je te solliciterai pour que tu m'expliques.

    En tous cas merci beaucoup, je vais essayer de faire la macro en l'adaptant!

  7. #7
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par sandra24 Voir le message
    J'ai commencé à regarder des sites pour comprendre.
    L'aide VBA intégrée à Excel est très bien faite. Elle apporte déjà beaucoup d'information sans avoir à farfouiller sur le net.

Discussions similaires

  1. Réponses: 23
    Dernier message: 07/07/2015, 16h39
  2. incrémenter des lignes en fonction d'un champ "nombre"
    Par bookaro92 dans le forum Access
    Réponses: 2
    Dernier message: 01/12/2006, 15h05
  3. [Conception] Afficher des données en fonction du mois.
    Par fabrice88 dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 05/06/2006, 10h31
  4. [VBA-E] Créer des lignes en fonction d'un champ
    Par antakini dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 18/04/2006, 20h23
  5. Réponses: 4
    Dernier message: 31/05/2004, 12h26

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