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 :

Macro ( ou VB ? ) pour largeurs de colonnes [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Gestionnaire de données
    Inscrit en
    Mars 2006
    Messages
    356
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestionnaire de données
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 356
    Par défaut Macro ( ou VB ? ) pour largeurs de colonnes
    Bonjour ,

    J'ai un fichier excel ( une seule feuille ) avec une ligne d'entête , des lignes de données , et X colonnes ( X est variable selon tel ou tel fichier excel)

    Quand l'utilisateur est positionné dans une cellule quelconque, avoir une macro qui :

    - masque les colonnes dont la cellule est vide pour la ligne où il est positionné
    Attention , sauf pour la dernière colonne de droite qu'on doit laisser telle quelle.

    - justifie les colonnes dont la cellule n'est pas vide pour la ligne où il est positionné

    Exemple sur le fichier en pièce jointe :
    - si je suis sur n'importe quelle cellule de la ligne 4 , masquer les colonnes C,E et justifier les colonnes A,B,D,F
    - sur n'importe quelle cellule de la ligne 10 , masquer les colonnes A,D et justifier les colonnes B,C,E,F

    Quelqu'un se sent-il la compétence et le courage ?

    Merci d'avance !
    Fichiers attachés Fichiers attachés

  2. #2
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    Bonjour,

    Cette discussion aurait mieux trouvé sa place dans "Macros et VBA Excel".
    Je ne prétends être ni compétent, ni courageux mais je veux bien te servir d’exemple et me secouer les neurones pour chercher une solution .
    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
    Option Explicit
    Private Sub CommandButton1_Click() 'Bouton pour masquer
    Dim DerCol As Integer
    Dim MaPlage As Range
        With Worksheets("Feuil1") 'Nom de feuille à adapter
        If Selection.Count = 1 Then
            DerCol = .Cells(1, .Columns.Count).End(xlToLeft).Column
            Set MaPlage = Range(.Cells(Selection.Row, "A"), .Cells(Selection.Row, DerCol - 1))
            If Not MaPlage Is Nothing Then
                MaPlage.Resize(1, DerCol).EntireColumn.AutoFit
                MaPlage.SpecialCells(xlCellTypeBlanks).EntireColumn.Hidden = True
            End If
        End If
        End With
    End Sub
    Private Sub CommandButton2_Click() 'Bouton pour réinitialiser
        Columns("A:F").EntireColumn.Hidden = False
    End Sub
    A toi de jouer.

    Cordialement.

  3. #3
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Bonjour,

    Ci dessous une ébauche à approfondir

    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
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim rg As Range
     
    If Target.Count > 1 Then Exit Sub
     
    Columns().EntireColumn.Hidden = False
     
    For Each rg In Range("A" & Target.Row & ":E" & Target.Row)
     
        If IsEmpty(rg) Then
            Columns(rg.Column).EntireColumn.Hidden = True
        Else
            Columns(rg.Column).EntireColumn.AutoFit
        End If
     
    Next
     
    End Sub

  4. #4
    Membre éclairé
    Profil pro
    Gestionnaire de données
    Inscrit en
    Mars 2006
    Messages
    356
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestionnaire de données
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 356
    Par défaut
    D'abord merci à tous les 2 .

    Je suis parti de la solution de jfontaine car je ne souhaite pas utiliser de bouton.

    Question 1 : dès que je clique sur une nouvelle cellule, le redimensionnement se fait. Je voudrais être moins "brutal" et ne le faire qu'à la demande ( par un Ctrl-a par exemple).
    Si je fais une macro macro1 ( avec Ctrl-a) , comment appeler la fonction ?
    ( ou bien comment affecter un Ctrl-a directement à la fonction ? )

    Question 2 : ma dernière colonne n'est pas forcément la colonne F. Peut-on récupérer la valeur de la dernière colonne et l'envoyer à la fonction ?

    Merci !

  5. #5
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    1. Dans menu Outils>Macro>Macros tu sélectionnes ta macro, Tu clic sur le bouton Options et choisi la touche de raccourci


    le code dans une procédure à lier à ton raccourci clavier avec la colonne de gauche dynamique
    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
    Sub MaMacro()
     
    Dim rg As Range
     
    Columns().EntireColumn.Hidden = False
     
    For Each rg In Range(Cells(ActiveCell.Row, 1), Cells(ActiveCell.Row, Rows(1).End(xlToRight).Column))
     
        If IsEmpty(rg) Then
            Columns(rg.Column).EntireColumn.Hidden = True
        Else
            Columns(rg.Column).EntireColumn.AutoFit
        End If
     
    Next
    End Sub

  6. #6
    Membre éclairé
    Profil pro
    Gestionnaire de données
    Inscrit en
    Mars 2006
    Messages
    356
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestionnaire de données
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 356
    Par défaut
    Merci beaucoup ça marche nickel ,

    J'ai juste mis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each rg In Range(Cells(ActiveCell.Row, 5), Cells(ActiveCell.Row, Rows(1).End(xlToRight).Column - 1))
    à la place de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each rg In Range(Cells(ActiveCell.Row, 5), Cells(ActiveCell.Row, Rows(1).End(xlToRight).Column))
    afin de ne pas toucher à la dernière colonne de droite

    Encore merci

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

Discussions similaires

  1. [XL-2007] Macro pour masquer les colonnes avec cellules vides
    Par Cirrus22 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 20/12/2009, 19h50
  2. Largeur de colonne [table pour impression]
    Par richard_sraing dans le forum Mise en page CSS
    Réponses: 7
    Dernier message: 07/05/2009, 12h28
  3. Réponses: 3
    Dernier message: 26/06/2008, 10h57
  4. Macro pour traiter une colonne en relatif
    Par jacques64 dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 14/06/2007, 12h53
  5. javascript pour tableau à largeur de colonnes variables
    Par barkleyone dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 06/06/2006, 17h14

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