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 :

Sortie prématurée d'une fonction


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2014
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2014
    Messages : 28
    Par défaut
    Bonjour,

    J'ai un souci ... j'ai des boutons qui permettent d'afficher ou masquer un ensemble de colonnes ... cela fonctionnait correctement encore hier et ça ne fonctionne plus hier ... j'ai dû modifié un truc à un moment donné mais je ne sais plus revenir en arrière.

    En fait, je fait appel à un sub et tout d'un coup il sort de la fonction pour je ne sais quelle raison. Voici mon code:
    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
    Sub afficher_masquer(tb As toggleButton, colonnes As String)
        Dim s As String
     
        s = return_group_colonnes(colonnes)
        If tb.Value = False Then
            Call afficher(s)
            tb.BackColor = RGB(0, 238, 0)
        Else
            Call masquer(s)
            tb.BackColor = RGB(255, 0, 0)
        End If
     
    End Sub
    ----------------------------------------
    Sub masquer(listeColonnes)
         MsgBox 1
         Range(listeColonnes).EntireColumn.Hidden = True
         MsgBox 2
    End Sub
    ----------------------------------------
    Sub afficher(listeColonnes)
        MsgBox 1
        Range(listeColonnes).EntireColumn.Hidden = False
        MsgBox 2
    End Sub
    En gros, lorsque la fonction afficher ou masquer est appelée, en debug, je sors de la fonction Range(...).EntireColumn.Hidden ... je ne vois jamais de popup avec un 2 ... je vois juste les popup avec un 1 ...

    Auriez vous une idée par hasard ?

    Merci de votre aide.

    Re,

    J'ai oublié de préciser que les colonnes en paramètre correspondent bien aux colonnes que je souhaite afficher / masquer...

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 169
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Qu'envoies-tu comme paramètre à la procédure ?
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre averti
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2014
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2014
    Messages : 28
    Par défaut
    Bonjour Philippe,

    J'appelle la fonction de la façon suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Call afficher_masquer(InfosDpToggleButton, "V_GROUP_COL_INFO_DP")
    avec InfosDpToggleButton mon bouton, et lorsque j'arrive à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    s = return_group_colonnes(colonnes)
    Il me renvoie "D:K" correspondant aux colonnes que je souhaite afficher / masquer.

    Merci de ton aide ... je suis un peu en galère ...

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 169
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Chez moi, cela fonctionne d'ailleurs à mon grand étonnement (je n'avais jamais utilisé l'objet Range en utilisant uniquement les lettres de colonnes) mais la syntaxe serait préférable comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub masquer(listeColonnes)
         Columns(listeColonnes).Hidden = True
    End Sub
    Il vaudrait mieux également ajouter la filiation de la colonne (Objet feuille et classeur)
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Membre averti
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2014
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2014
    Messages : 28
    Par défaut
    Bonjour,

    Cela ne fonctionne toujours pas chez moi ... jai peur que ce soit un problème d'instabilité ou aléatoire ....

    Pourriez vous tester chez vous mon fichier ? Je l'ai mis en pièce jointe ... pour être plus précis par rapport à mon problème, lorsque je clique sur le bouton ALL, je devrais masquer toutes les colonnes D:AD, puis mettre les autres boutons à false, puis une fois que je reclique sur ALL alors toutes les colonnes s'affichent de nouveau et les autres boutons doivent être activés (voir contenu de la fonction DisplayAllToggleButton_Click). Mais le souci est lorsque je rentre dans ma fonction masquer() ou afficher(), il ne ressort jamais de la fonction... je ne comprend pas pourquoi. Je peux toujours la suite de mon code avant l'appel à cette fonction mais j'aimerais bien comprendre pourquoi tout de même ...

    Cédric
    Fichiers attachés Fichiers attachés

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 169
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    En cliquant sur le bouton "ALL", il masque les colonnes D à CD donc pas de problèmes
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  7. #7
    Membre averti
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2014
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2014
    Messages : 28
    Par défaut
    Oui, je suis d'accord qu'il masque bien les colonnes, mais est ce que tous les boutons passent-il en rouge ? (comme il devrait le faire selon le code ... quoique le code indique que seul le bouton ALL devrait passer en rouge selon mes souvenirs ... je n'ai plus le fichier devant moi ... mais avant tous les boutons passaient en rouge)?
    de même lorsqu'il réaffiche les colonnes, il devrait remettre tous les boutons en vert ?

  8. #8
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    Bonjour,

    Tu n'appelles jamais afficher_masquer(), ils ne risquent pas de changer de couleur.
    Executer en pas à pas avec F8 lorsque tu recherches un bug.

    eric

Discussions similaires

  1. Réponses: 17
    Dernier message: 16/07/2012, 14h10
  2. Plusieurs variables en sortie d'une fonction
    Par Matgic95 dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 14/05/2008, 12h05
  3. cherche une fonction system avec capture de la sortie
    Par ChipsterJulien dans le forum C++
    Réponses: 4
    Dernier message: 28/02/2008, 16h47
  4. lire la sortie d'une fonction linux
    Par NexRezzo dans le forum C
    Réponses: 2
    Dernier message: 02/12/2007, 01h08
  5. Execution a la sortie d'une fonction
    Par cococococococo dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 10/07/2007, 14h21

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