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 :

Une macro pour cacher une colonne qui ne fonctionne plus [XL-2013]


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Consultant HSE
    Inscrit en
    Février 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Consultant HSE

    Informations forums :
    Inscription : Février 2015
    Messages : 8
    Points : 4
    Points
    4
    Par défaut Une macro pour cacher une colonne qui ne fonctionne plus
    Bonjour,

    J'ai un soucis concernant une macro qui marchait sur excel 2010 mais ne marche plus sous 2013. Je l'utilise pour afficher ou non des colonnes parmi 30 en fonction de la valeur que prend la quatrième cellule de la colonne. La macro est la suivante :

    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 ModifmoyensdemaitriseASS()
    
    Set mycell = ActiveCell
    
    ActiveCell.Select
    Selection.Copy
    Range("D3").Select
    Selection.PasteSpecial Paste:=xlPasteValues
    
    
    For col = 6 To 36
    If Cells(4, col) <> "Autres (Modifier BDD)" Then Columns(col).Hidden = False
    Next
    
    For col = 6 To 36
    If Cells(4, col) = "Autres (Modifier BDD)" Then Columns(col).Hidden = True
    Next
    
    
    End Sub

    La première partie fonctionne sans souci, c'est la partie en jaune qui est remise en cause par le débogage. Ainsi que l'équivalent dans la dernière partie.

    Je ne m'explique pas le dysfonctionnement, si vous pouvez éclairer ma lanterne

    Merci d'avance !

  2. #2
    Membre émérite Avatar de antonysansh
    Homme Profil pro
    Chargé d'études RH
    Inscrit en
    Mai 2014
    Messages
    1 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé d'études RH
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 1 115
    Points : 2 439
    Points
    2 439
    Par défaut
    Bonjour DavidCsame,

    Je ne peux pas tester ton code, voici un code qui devrait fonctionner, j'ai juste précisé la feuille ou tu dois faire tes actions

    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
    Sub ModifmoyensdemaitriseASS()
     
        Dim mycell As Range
        Dim sh As Worksheet
        Dim col As Byte
     
        Set mycell = ActiveCell
        Set sh = mycell.Parent
     
        sh.Select
        mycell.Select
     
        Selection.Copy
        Range("D3").Select
        Selection.PasteSpecial Paste:=xlPasteValues
     
        With sh
            For col = 6 To 36
                If .Cells(4, col) <> "Autres (Modifier BDD)" Then
                    .Columns(col).Hidden = False
                Else
                    .Columns(col).Hidden = True
                End If
            Next
        End With
     
    End Sub
    Si ça ne fonctionne pas, je ne sais pas quelles sont les particularités de la version 2013 qui empêche le fonctionnement de cette macro

    Antony
    Antony

    Mieux vaut ne rien dire et passer pour un con que de l'ouvrir et ne laisser aucun doute à ce sujet.
    Gustave Parking


    Si le post vous est utile un petit fait toujours plaisir et pensez à passer en

    Et surtout -> Balise CODE

  3. #3
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Ou simplement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim Col As Integer
     
    Range("D3") = ActiveCell
    For Col = 6 To 36
        Columns(Col).Hidden = Cells(4, Col) = "Autres (Modifier BDD)"
    Next Col
    PS. Y a t-il un moyen de ne pas faire rédérence à la cellule active?
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  4. #4
    Membre éprouvé
    Avatar de eric4459
    Homme Profil pro
    Ingénieur Gestion de Projets
    Inscrit en
    Avril 2014
    Messages
    605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Gestion de Projets
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 605
    Points : 1 124
    Points
    1 124
    Par défaut
    Bonjour David
    J'ai un peu simplifié ton code, ôté les "Select" qui ne servent à rien et supprimé la deuxième boucle en l'intégrant à la première.
    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
    Sub ModifmoyensdemaitriseASS()
     
    Set mycell = ActiveCell
     
    ActiveCell.Copy
    Range("D3").PasteSpecial Paste:=xlPasteValues
     
    For col = 6 To 36
    If Cells(4, col) <> "Autres (Modifier BDD)" Then
    Columns(col).Hidden = False
    Else
    Columns(col).Hidden = True
    End If
    Next
     
     
    End Sub

    Autre petit conseil, essayes systématiquement de déclarer tes variables
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Dim myCell As ..., Dim col as ...
    et ajoute en haut de chaque module avant la première Sub Option Explicit cela t'aidera au débogage si nécessaire

    Je suis moi-même sous Excel 2010 et le code fonctionne correctement, quel est le message d'erreur qui apparaît?

    Eric
    "Vous n’avez cessé d’essayer ? Vous n’avez cessé d’échouer ? Aucune importance !
    Réessayez, échouez encore, échouez mieux." Samuel Beckett
    Pensez aux balises et
    Visitez les FAQ Excel et allez faire un tour ici
    Tutoriels de SilkyRoad

  5. #5
    Candidat au Club
    Homme Profil pro
    Consultant HSE
    Inscrit en
    Février 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Consultant HSE

    Informations forums :
    Inscription : Février 2015
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Pour commencer, merci à vous trois pour votre intervention, c'est toujours un plaisir de trouver de l'aide sur un forum !

    J'ai testé vos trois propositions et les trois fonctionnent (seules les colonnes que je veux voir apparaissent) MAIS le message d'erreur apparaît toujours et ouvre la fenêtre de débogage.

    Le message d'erreur exact est :

    Erreur d'éxecution '13':
    Incompatibilité de type


    Il parle de moi et d'Excel? :p

  6. #6
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    En pas à pas, sur quelle ligne tu as l'erreur
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  7. #7
    Membre éprouvé
    Avatar de eric4459
    Homme Profil pro
    Ingénieur Gestion de Projets
    Inscrit en
    Avril 2014
    Messages
    605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Gestion de Projets
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 605
    Points : 1 124
    Points
    1 124
    Par défaut
    Et si tu essayais
    ?
    L'erreur apparait-elle toujours?
    Eric
    "Vous n’avez cessé d’essayer ? Vous n’avez cessé d’échouer ? Aucune importance !
    Réessayez, échouez encore, échouez mieux." Samuel Beckett
    Pensez aux balises et
    Visitez les FAQ Excel et allez faire un tour ici
    Tutoriels de SilkyRoad

  8. #8
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 073
    Points
    12 073
    Billets dans le blog
    8
    Par défaut heu
    bonjour

    pourquoi "activecell.select " activecell est déjà la cellule sélectionnée


    ensuite pourquoi 2 boucle pour un false ou true sur le même object ????

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub ModifmoyensdemaitriseASS()
    Range("D3").Value = ActiveCell.Value
    For col = 6 To 36
    If Cells(4, col) = "Autres (Modifier BDD)" Then
    Columns(col).Hidden = True
    Else
    Columns(col).Hidden = False
    End If
    Next
    End Sub
    je viens de relire le post en entier et le code de mercatog devrait fonctionner (utiliser le l'erreur du égal sur la valeur de la cells en boolean )j'aime beaucoup
    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

  9. #9
    Candidat au Club
    Homme Profil pro
    Consultant HSE
    Inscrit en
    Février 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Consultant HSE

    Informations forums :
    Inscription : Février 2015
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    En faisant :

    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
    Sub ModifmoyensdemaitriseASS()
     
    Dim col As Integer
     
    Set mycell = ActiveCell
     
    ActiveCell.Copy
    Range("D3").PasteSpecial Paste:=xlPasteValues
     
    For col = 6 To 36
    If Cells(4, col) <> "Autres (Modifier BDD)" Then
    Columns(col).Hidden = False
    Else
    Columns(col).Hidden = True
    End If
    Next
     
     
    End Sub

    L'erreur apparaît toujours (si j'ai bien compris la modification que tu as proposé).

    avec le pas à pas déraillé c'est la ligne If Cells(4, col) <> "Autres (Modifier BDD)" Then qui apparaît surlignée en premier.

    @patricktoulon : Toujours le même message d'erreur :s

    Pour répondre à tes pourquoi, he bien... Parce que je suis un bon gros débutant en macros et que j'apprends sur le tas avec des formulations pas toujours élégantes pour essayer de traduire ce que je pense :p

    EDIT : là encore avec le pas-à-pas c'est la ligne If Cells(4, col) = "Autres (Modifier BDD)" Then qui apparaît en jaune.

  10. #10
    Membre émérite Avatar de antonysansh
    Homme Profil pro
    Chargé d'études RH
    Inscrit en
    Mai 2014
    Messages
    1 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé d'études RH
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 1 115
    Points : 2 439
    Points
    2 439
    Par défaut
    peut etre car je ne vois pas de probléme de type dans ce code
    Antony

    Mieux vaut ne rien dire et passer pour un con que de l'ouvrir et ne laisser aucun doute à ce sujet.
    Gustave Parking


    Si le post vous est utile un petit fait toujours plaisir et pensez à passer en

    Et surtout -> Balise CODE

  11. #11
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Sur la ligne 4, tu as une formule donnant une erreur de type #Div/0 #Valeur ou autre?
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  12. #12
    Candidat au Club
    Homme Profil pro
    Consultant HSE
    Inscrit en
    Février 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Consultant HSE

    Informations forums :
    Inscription : Février 2015
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par antonysansh Voir le message
    peut etre car je ne vois pas de probléme de type dans ce code
    Toujours le même message :s

    J'ai d'autant plus de mal à comprendre que la macro affiche correctement les cellules !

  13. #13
    Membre émérite Avatar de antonysansh
    Homme Profil pro
    Chargé d'études RH
    Inscrit en
    Mai 2014
    Messages
    1 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé d'études RH
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 1 115
    Points : 2 439
    Points
    2 439
    Par défaut
    Citation Envoyé par DavidCsame Voir le message
    J'ai testé vos trois propositions et les trois fonctionnent (seules les colonnes que je veux voir apparaissent) MAIS le message d'erreur apparaît toujours et ouvre la fenêtre de débogage.

    Le message d'erreur exact est :

    Erreur d'éxecution '13':
    Incompatibilité de type
    Donc ça marche mais a un moment ça plante.

    Tes variables ont quelles valeurs au moment du bug ?
    Antony

    Mieux vaut ne rien dire et passer pour un con que de l'ouvrir et ne laisser aucun doute à ce sujet.
    Gustave Parking


    Si le post vous est utile un petit fait toujours plaisir et pensez à passer en

    Et surtout -> Balise CODE

  14. #14
    Candidat au Club
    Homme Profil pro
    Consultant HSE
    Inscrit en
    Février 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Consultant HSE

    Informations forums :
    Inscription : Février 2015
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par mercatog Voir le message
    Sur la ligne 4, tu as une formule donnant une erreur de type #Div/0 #Valeur ou autre?
    And the winner is .... Mercatog !

    J'avais effectivement un n#a sur une cellule CACHEE de la ligne 4. Une fois l'erreur de lien dans la formule corrigé, et une vraie valeur affichée, tout marche correctement

    Un gros gros merci à vous tous !

  15. #15
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 073
    Points
    12 073
    Billets dans le blog
    8
    Par défaut re
    1° question :n y aurait il pas des cellules protégées dans ton sheets?

    2° question :y aurait il des colonnes déjà masquée??
    car peut être que si dans le tour de boucle une colonne (col) est déjà masquée cela peut engendrée une erreur mais je n'en suis pas sur alors test ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub ModifmoyensdemaitriseASS()
    Range("D3").Value = ActiveCell.Value
    For col = 6 To 36
    If Cells(4, col) = "Autres (Modifier BDD)" Then
    Columns(col).Hidden = IIf(Columns(col).Hidden = True, Columns(col).Hidden, True)
    Else
    Columns(col).Hidden = IIf(Columns(col).Hidden = False, Columns(col).Hidden, False)
    End If
    Next
    End Sub
    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

  16. #16
    Membre émérite Avatar de antonysansh
    Homme Profil pro
    Chargé d'études RH
    Inscrit en
    Mai 2014
    Messages
    1 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé d'études RH
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 1 115
    Points : 2 439
    Points
    2 439
    Par défaut
    Citation Envoyé par DavidCsame Voir le message
    And the winner is .... Mercatog !
    Je l'aurais un jour !

    En tout cas c'est bon a savoir pour une prochaine fois
    Antony

    Mieux vaut ne rien dire et passer pour un con que de l'ouvrir et ne laisser aucun doute à ce sujet.
    Gustave Parking


    Si le post vous est utile un petit fait toujours plaisir et pensez à passer en

    Et surtout -> Balise CODE

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

Discussions similaires

  1. [XL-2003] Une macro pour enregistrée une image d'un USF
    Par creolia dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/03/2010, 09h33
  2. Réponses: 6
    Dernier message: 20/11/2009, 14h07
  3. Rédiger une macro pour sélectionner une zone d'impresion
    Par lenul78570 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 10/02/2009, 22h27
  4. [Macro] Une macro pour générer une autre macro
    Par green_fr dans le forum Macro
    Réponses: 2
    Dernier message: 13/01/2009, 12h59
  5. faire une condition pour arrêter une macro
    Par db48752b dans le forum Access
    Réponses: 11
    Dernier message: 21/09/2006, 21h21

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