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 :

demande un peu d'aide pour la réalisation d'un macro.


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 55
    Points : 37
    Points
    37
    Par défaut demande un peu d'aide pour la réalisation d'un macro.
    Je voudrai un peu d'aide pour la réalisation d'une macro

    ce que je voudrai c'est que dès que le test trouve la valeur 0 dans la colonne E il puisse cacher la ligne correspondante ainsi que la ligne du dessous.J'ai bien essayer mais je ne suis pas très doué dans les macro.


    une autre petite chose est il possible de paramétrer macro (assez simple) pour cacher une ligne sur deux de mon fichier ?

  2. #2
    Membre chevronné Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Points : 2 168
    Points
    2 168
    Par défaut
    pour le premier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Dim i As Integer
    For i = 1 To Range("E65536").End(xlUp).Row
    If Range("E" & i) = 0 Then
    Rows(i).Hidden = True
    Rows(i + 1).Hidden = True
    End If
    Next i
    Pour la deuxième
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim i As Integer
    For i = 1 To Range("E65536").End(xlUp).Row step 2
    Rows(i).Hidden = True
    Next

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    682
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 682
    Points : 723
    Points
    723
    Par défaut
    Bonjour (je sais pas pourquoi mais j'aime bien dire bonjour...),

    Bon allez, j'arrête de t'embêter.

    1ère question :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub test()
     
    For i = 1 To 100 'Pour les 100 premières lignes
        If Range("E" & i).Value = "0" Then
            Range("E" & i).EntireRow.Hidden = True
            Range("E" & i + 1).EntireRow.Hidden = True
        End If
    Next
     
    End Sub
    Et la 2ème :

    Sub test()

    'On cache une ligne sur 2 en commençant par la 2ème (2-4-6...)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    For i = 2 To 100 Step 2 'Toujours pour 100 lignes, à toi de changer
        Range("A" & i).EntireRow.Hidden = True
    Next
     
    End Sub
    C'est fonctionnel, j'ai testé.

    Au plaisir.

    EDIT Krovax : bonjour, on s'est croisé

  4. #4
    Membre actif Avatar de Yolak
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Vosges (Lorraine)

    Informations forums :
    Inscription : Mars 2007
    Messages : 341
    Points : 206
    Points
    206
    Par défaut
    Bonjour,

    C'est pas bien compliqué, il ne faut pas hésiter à chercher sur ce merveilleux forum et sur les tutos !!!

    pour ton premier problème, voilà le code à mettre dans une SUB :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
        Dim a, FirstAdresse
        Set a = ActiveSheet.Range("E:E").Find(what:="0", lookat:=xlWhole)
        If Not a Is Nothing Then
            FirstAdresse = a.Address
     
            Do
                Range(a.Address).Select
                Selection.EntireRow.Hidden = True
     
                Set a = ActiveSheet.Range("E:E").FindNext(a)
            Loop While Not a Is Nothing And a.Address <> FirstAdresse
     
        End If
    Pour la deuxième problème (encore plus simple)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
        'déclaration de i comme un entier
        Dim i As Integer
     
        'ActiveSheet.UsedRange.Rows.Count compte le nombre
        'de lignes dans le Range utilisé
        'Step 2 permet d'aller de 2 en 2
     
        For i = 1 To ActiveSheet.UsedRange.Rows.Count Step 2
            'Selection d'une ligne
            Rows(i).Select
     
            'On masque la ligne selectionnée
            Selection.EntireRow.Hidden =True
        Next i
    J'ai quand même mis mon code (malgrès les réponses précedentes) car il fonctionne même s'il y a plus de 100 lignes et sans aller jusqu'à la capacité max ^^

  5. #5
    Membre chevronné Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Points : 2 168
    Points
    2 168
    Par défaut
    Citation Envoyé par Yolak Voir le message

    J'ai quand même mis mon code (malgrès les réponses précedentes) car il fonctionne même s'il y a plus de 100 lignes et sans aller jusqu'à la capacité max ^^
    hmm, je ne vais pas jusqu'a la capacité max, je vais jusqu'à la dernière ligne dont la cellule de la colonne E est remplie (je préfère cette méthode au UsedRange.Rows.Count, qui ratera des ligne a la fin si on a des lignes vide dans le tableau ^^ )

    Par contre l'utilisation du find est souvent préférable, mais j'aurais évité les select qui vont illuminé l'écran pour rien

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 55
    Points : 37
    Points
    37
    Par défaut
    Mais il est trop bien ce forum!!
    merci a tous pour ces précieux renseignement, il ne me reste plus qu'a les tester.

  7. #7
    Membre actif Avatar de Yolak
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Vosges (Lorraine)

    Informations forums :
    Inscription : Mars 2007
    Messages : 341
    Points : 206
    Points
    206
    Par défaut
    hmm, je ne vais pas jusqu'a la capacité max, je vais jusqu'à la dernière ligne dont la cellule de la colonne E est remplie (je préfère cette méthode au UsedRange.Rows.Count, qui ratera des ligne a la fin si on a des lignes vide dans le tableau ^^ )
    D'accord d'accord je comprend mieux. C'est vrai que mon code bloque sur les lignes vides...
    Enfin, j'ai toujours du mal a mettre le 65536 dans mes codes, je ne sais pas pourquoi lol.

    Mais il est trop bien ce forum!!
    Depuis le temps que je le dit!

  8. #8
    Membre chevronné Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Points : 2 168
    Points
    2 168
    Par défaut
    Si tu n'aime pas le 65535 tu peux mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DerniereLigne = Cells(Columns(1).Cells.Count, 1).End(xlUp).Row
    Cela est même préférable car sous 2007 il faut mettre 1048576 si je me souvient bien

    Sinon pour avoir la dernière ligne je conseil cette contribution de Ousk'el'nord
    Dernière ligne et la dernière colonne renseignées d'une feuille

    Il y référence un très grand nombre de méthode (je n'ai jamais vu, si je me souviens bien, qui n'y été pas référencé)

Discussions similaires

  1. Demande d'aide pour la réalisation d'un petit jeu video
    Par Frank1010 dans le forum Développement 2D, 3D et Jeux
    Réponses: 2
    Dernier message: 08/09/2009, 07h59
  2. Réponses: 12
    Dernier message: 10/05/2007, 09h18
  3. Un peu d'aide pour la fonction split
    Par azorol dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 11/01/2007, 10h20
  4. aide pour la réalisation de compteur
    Par dark_vidor dans le forum Général JavaScript
    Réponses: 17
    Dernier message: 23/10/2006, 23h06
  5. Un peu d'aide pour un debutant
    Par Auvergnator dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 18/09/2006, 21h16

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