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 :

Ajuster automatiquement la largeur d'une colonne en fonction de la taille de la fenêtre de l’application [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Février 2015
    Messages : 66
    Par défaut Ajuster automatiquement la largeur d'une colonne en fonction de la taille de la fenêtre de l’application
    Bonjour les amis, je demande votre aide pour résoudre un problème de programmation !!

    Le fichier « Test1 » contient 3 feuilles, chaque feuille contient un tableau (en rouge), la colonne A et la ligne 1 de chaque feuille changent respectivement la largeur et la hauteur pour garder les 3 tableaux aux centres des feuilles lorsque la taille de la fenêtre de l’application change. Ce changement de largeur et de hauteur se fait à l’activation de chaque feuille.

    La question : comment automatiser cette opération ? : Ajuster automatiquement la Largeur de la colonne A et la hauteur de la ligne 1 sur les trois feuilles (en même temps, pour garder les tableaux aux centres) en fonction de la largeur et de la hauteur de la fenêtre de l’application sans avoir besoin d’activer chaque feuille.

    Code de chaque feuille :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Private Sub Worksheet_Activate()
        Ajustement
    End Sub
    Code dans le module :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Sub Ajustement()
        Application.ScreenUpdating = False
        If Application.UsableWidth > Columns("B:L").Width Then
            Columns("A:A").ColumnWidth = (Application.UsableWidth - Columns("B:L").Width) / 11
        End If
        If Application.UsableHeight > Rows("2:25").Height Then
            Rows("1:1").RowHeight = (Application.UsableHeight - Rows("2:25").Height) / 2
        End If
        Application.ScreenUpdating = True
    End Sub
    Fichiers attachés Fichiers attachés

  2. #2
    Membre Expert Avatar de Zekraoui_Jakani
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    1 671
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 671
    Par défaut
    En principe, si vous sélectionnez les 3 feuilles simultanément (Ctrl + clic, ou VBA), tout ce que vous faites sur une feuille se répercute sur les feuilles sélectionnées; à tester !

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Février 2015
    Messages : 66
    Par défaut
    Bonjour,
    Monsieur Zekraoui_Jakani, je vous remercie pour votre réponse. Ce que je veux : c'est exécuter la macro "Ajustement ()" automatiquement (sans avoir besoin d’activer chaque feuille) quand la taille (Largeur seulement, Hauteur ou les deux) de la fenêtre de l'application change.

  4. #4
    Membre Expert Avatar de Zekraoui_Jakani
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    1 671
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 671
    Par défaut
    J'ai bien compris. Voici un exemple que j'ai testé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        Sheets(Array("Sheet7", "Sheet8", "Sheet9", "Sheet10")).Select  'je sélectionne 4 feuilles
        Sheets("Sheet8").Activate
        Range("X2").Select
        ActiveCell.FormulaR1C1 = "alpha"  ' j'ai écrit "alpha" dans X2 de la feuille8; la même chose eut lieu dans les autres feuilles sans que j'aie à les activer une par une
          'Vous pouvez très bien lancer votre macro ici, du moment que les 4 feuilles restent sélectionnées.
        Range("X3").Select
        Sheets("Sheet11").Select

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Février 2015
    Messages : 66
    Par défaut
    Bonjour, je peux utiliser la boucle For Each pour effectuer le changement directement sur les trois feuilles, mais il me faut un code pour exécuter la macro lorsque les dimensions de la fenêtre de l'application changent.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Sub Ajustement()
            Dim ws As Worksheet
            For Each ws In Worksheets
                If Application.UsableWidth > Columns("B:L").Width Then
                    ws.Columns("A:A").ColumnWidth = (Application.UsableWidth - ws.Columns("B:L").Width) / 11
                End If
                If Application.UsableHeight > Rows("2:25").Height Then
                    ws.Rows("1:1").RowHeight = (Application.UsableHeight - ws.Rows("2:25").Height) / 2
                End If
            Next ws
    End Sub

  6. #6
    Membre Expert Avatar de Zekraoui_Jakani
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    1 671
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 671
    Par défaut
    Essayez ceci dans le module de chaque feuille:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Worksheet_Activate()
         Call Ajustement
    End Sub

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/08/2012, 14h08
  2. Réponses: 1
    Dernier message: 13/02/2010, 18h49
  3. Réponses: 28
    Dernier message: 30/11/2006, 17h47
  4. [TListView] Comment connaître la largeur d'une colonne ?
    Par remixtech dans le forum Composants VCL
    Réponses: 8
    Dernier message: 03/04/2005, 13h18
  5. [tableau]largeur d'une colonne
    Par Nadine dans le forum ASP
    Réponses: 2
    Dernier message: 15/03/2005, 21h11

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