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 :

[VBA-E optimisation code] ameliorer la méthode pour cacher des lignes


Sujet :

Macros et VBA Excel

  1. #1
    Membre actif
    Profil pro
    chomeur
    Inscrit en
    Août 2006
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Août 2006
    Messages : 343
    Points : 246
    Points
    246
    Par défaut [VBA-E optimisation code] ameliorer la méthode pour cacher des lignes
    Bonjour
    Dernièrement j'ai du faire un petit morceau de code en VBA où je devais cacher les lignes présentes entre deux noms de cellules. Exemple
    la cellule A1 s'appelle Toto
    la celulle A10 s'appelle Titi
    je lance cacheentrelesnoms(toto,titi), et il me masque toutes les lignes entre A1 et A10. Rien de sorcier à faire.
    Sauf que ma méthode n'est pas du tout performante...
    J'aimerai avoir votre avis pour me permettre d'accelerer ce code.
    voici le code de la fonction.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub CacheEntreLesNoms(ByRef StNom1 As String, ByRef stNom2 As String)
    Dim iX1 As Byte
    Dim iX2 As Byte
     
        iX1 = Calendrier.iNameToLigneDebut(StNom1)
        iX2 = Calendrier.iNameToLigneDebut(stNom2)
        With ThisWorkbook.Sheets(1)
            Do
                .Rows(iX1).Hidden = True
                iX1 = iX1 + 1
            Loop While iX1 < iX2
        End With
     
    End Sub
    Merci pour toutes vos réponses

  2. #2
    Membre actif
    Profil pro
    chomeur
    Inscrit en
    Août 2006
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Août 2006
    Messages : 343
    Points : 246
    Points
    246
    Par défaut
    j'ai trouvé une amélioration mais sait on jamais si quelqu'un avait mieux...
    Voici mon amélioration
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Sub CacheEntreLesNoms(ByRef StNom1 As String, ByRef stNom2 As String)
    Dim iX1 As Byte
    Dim iX2 As Byte
     
        iX1 = Calendrier.iNameToLigneDebut(StNom1)
        iX2 = Calendrier.iNameToLigneDebut(stNom2)
        ThisWorkbook.Sheets(1).Range("A" & iX1 & ":A" & iX2).Rows.Hidden = True
     
    End Sub

  3. #3
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Bonjour,

    2 petites choses
    • déclare tes variables iX1 et iX2 As Integer sinon tu risques rapidement d'avoir un dépassement de capacité (Byte = de 0 à 255)
    • il n'est pas nécessaire de préciser ThisWorkbook, si tu ne lui dis rien il n'ira pas voir ailleurs que dans le classeur actif
    LES FAQ OFFICE - LES COURS OFFICE - LES COURS EXCEL - LES LIVRES OFFICE - SOURCES VBA - ATELIER BRICOLAGE VBA

    Lorsque votre problème est solutionné, pensez à le signaler en cliquant sur le bouton au bas de la discussion.

  4. #4
    Membre actif
    Profil pro
    chomeur
    Inscrit en
    Août 2006
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Août 2006
    Messages : 343
    Points : 246
    Points
    246
    Par défaut
    Pour le ThisworkBook effectivement je peux le retirer... je n'avais pas fait attention à ce point.
    Pour ce qui est du byte, en fait c'est que les zones à masquer sont entre 1 et 150... d'où mon byte... ça fait un peu pingre coté espace mémoire, je le reconnais.

  5. #5
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    Au prix du Byte, sur Ebay ou ailleurs, je pense que tu peux te fendre d'un integer ou deux sans risquer la banqueroute.
    (\ _ /) Cordialement G@dz
    (='.'=)

    (")-(") Vous avez des neurones. Sollicitez-les. . Si vous êtes aidé, pensez à Voter.

Discussions similaires

  1. [XL-2007] Code VBA pour supprimer des lignes sous condition - problème
    Par PeaceMaker dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 08/06/2011, 09h09
  2. Autres méthodes pour remplacer des If
    Par carlou135 dans le forum C++
    Réponses: 7
    Dernier message: 17/01/2007, 02h44
  3. Meilleure méthode pour faire des coins arrondis
    Par kodokan dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 17/09/2006, 15h08
  4. Méthode pour traiter des commandes
    Par Kr00pS dans le forum C
    Réponses: 17
    Dernier message: 15/06/2006, 17h58
  5. [VBA-E]parcourir partour dans mon ordi pour trouver des avi
    Par shirya dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 22/02/2006, 18h06

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