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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Consultant HSE
    Inscrit en
    Février 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Consultant HSE

    Informations forums :
    Inscription : Février 2015
    Messages : 8
    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 Expert 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 : 33
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Mai 2014
    Messages : 1 115
    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

  3. #3
    Expert éminent 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
    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?

  4. #4
    Membre émérite
    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
    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
    Membre régulier
    Homme Profil pro
    Consultant HSE
    Inscrit en
    Février 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Consultant HSE

    Informations forums :
    Inscription : Février 2015
    Messages : 8
    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 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
    Par défaut
    En pas à pas, sur quelle ligne tu as l'erreur

  7. #7
    Membre émérite
    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
    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 374
    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 374
    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
    Membre Expert 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 : 33
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Mai 2014
    Messages : 1 115
    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 ?

+ 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, 08h33
  2. Réponses: 6
    Dernier message: 20/11/2009, 13h07
  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, 21h27
  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, 11h59
  5. faire une condition pour arrêter une macro
    Par db48752b dans le forum Access
    Réponses: 11
    Dernier message: 21/09/2006, 20h21

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