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 :

[VBA-E] agrandissement d'une celulle sur clic


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 111
    Points : 48
    Points
    48
    Par défaut [VBA-E] agrandissement d'une celulle sur clic
    Bonjour
    DAns une feuille excel j'ai beaucoup de celulle avec beaucoup de texte dans environ 10% de celle ci.
    Pour la visibilité je garde les celulle de taille convenable, mais je voudrais qu'au clic sur une celulle celle ci rend la totalité du texte visible ???
    Est ce possible avec VB.
    Merci.

  2. #2
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Ben là, j'avoue que je sèche!
    J'ai deux problème:
    -ajuster la largeur et la hauteur seulement à la cellule sélectionnée, et non à la plus grande cote de la ligne ou de la colonne (ce qui aurait été simple avec Autofit)
    -savoir de quelle cellule on vient, pour remettre les tailles d'origine.

    Mais je cherche, parce que ça me triture la cervelle, ton truc.

  3. #3
    Membre éclairé
    Avatar de Theocourant
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 618
    Points : 739
    Points
    739
    Par défaut
    Salut,

    A priori, il me semble qu'il n'est pas possible de redimensionner une seule cellule sans affecter la taille de la colonne et de la ligne ...

    Une idée peut-être à creuser : utiliser une form pour afficher la valeur en gros dans un TextBox (multilignes ?...) et n'afficher la form que si la cellule est remplie.

    +

    Théo

  4. #4
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Ce n'est pas ce que je veux dire. Le but est bien de donner à TOUTE la ligne et TOUTE la colonne la taille suffisante pour afficher la cellule sur laquelle on clique.
    Mais avec des Autofit, on donne à la ligne et à la colonne la taille de la plus grande cellule de toute la ligne (ou colonne) de la cellule. C'est à dire que quand tu cliques sur une cellule raisonnablement remplie, s'il y a dans la même colonne une grosse cellule, il va agrandir la largeur de la colonne alors que ce n'est pas nécessaire.

    Quant à l'idée de la form, ça ressemble quand même beaucoup à ce qui s'affiche dans la barre naturellement dans Excel.

    Et sinon, tu ne sais pas récupérer les coordonnées de la cellule d'où on vient dans l'événement "SelectionChange"?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    290
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 290
    Points : 374
    Points
    374
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
        Selection.Columns.AutoFit
    End Sub
    jpleroisse

  6. #6
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Y'a vraiment des fois, JP, où on a l'impression que tu ne lis pas ce que les autres ont pu dire avant toi...
    Parce que si tu fais ça, ton fichier Excel va très vite devenir affreux, toutes les colonnes et toutes les lignes prenant la taille maximale pour tout voir, car en te "promenant" dans le fichier pour voir les cellules, tu vas appliquer le autofit à presque toutes les colonnes et lignes.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    290
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 290
    Points : 374
    Points
    374
    Par défaut
    bonsoir
    OK Megaxel, tu as raison, autant pour moi.

    jpleroisse

  8. #8
    Tan
    Tan est déconnecté
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 168
    Points : 158
    Points
    158
    Par défaut
    Pour récupérer la position d'où on viens, je ne sais pas.

    Mais comme il te faut l'ancienne et la colonne, je mémoriserai dans une variable

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range) 
        ' On redonne l'ancienne dimension
        columns(oldColumn).width = oldWidth
     
        ' Onmémorise celle actuelle
        oldWidth =  Selection.column.Width
        oldColumn = Selection.column
     
        ' On change la dimension
        Selection.Columns.AutoFit    ' En attendant mieux
    End Sub
    Pour ajuster à la largeur du texte de la cellule je ne sais pas.
    En VB il y a une fonction qui retourne la largeur d'un texte, par rapport à une forme, mais:
    1 - En VBA, j'ai jamais pu la trouver
    2 - Elle utilise la police de la form (ce qui fait que pour des control qui n'ont pas la même police ça ne marche pas) et donc pour des cellule c'eset encore

    Mais, je vais essayer de voir, si je trouve.

  9. #9
    Tan
    Tan est déconnecté
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 168
    Points : 158
    Points
    158
    Par défaut
    Voici un code de la FAQ pour la largeur utilisant une API, mais il prend un contexte graphique en paramêtre que l'on ne doit pas pouvoir récupérer en VBA....
    http://vb.developpez.com/faq/?page=G...e#taille_texte

  10. #10
    Tan
    Tan est déconnecté
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 168
    Points : 158
    Points
    158
    Par défaut
    A tout ceux qui considère ce code comme étant bidon, je suis entièrement d'accord...

    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
    28
    29
    30
    31
    32
    Dim oldWidth  As Integer
    Dim oldColumn  As Integer
    Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
        Application.ScreenUpdating = False
     
        ' On redonne l'ancienne dimension
        If oldColumn <> 0 Then Columns(oldColumn).ColumnWidth = oldWidth
     
        ' On mémorise celle actuelle
        oldWidth = Target.ColumnWidth
        oldColumn = Selection.Column
     
        ' On met la valeur dans la dernière colonne (il ne faut pas quelque soit utiliser biensûr)
        Range("IV1").Value = Target.Value
     
        ' On donne le même format
        Range("IV1").Font.Name = Target.Font.Name
        Range("IV1").Font.Size = Target.Font.Size
        Range("IV1").Font.Bold = Target.Font.Bold
     
        ' On redimentionne la dernière colonne
        Range("IV1").EntireColumn.AutoFit
     
        ' On met la même taille dans la cellule actuelle
        Target.EntireColumn.ColumnWidth = Range("IV1").ColumnWidth
     
        Range("IV1").Clear
     
        ' Pour ne pas que l'ascenseur considère la dernière cellule comme la dernière
        Debug.Print UsedRange.Address
        Application.ScreenUpdating = True
    End Sub

Discussions similaires

  1. Créer une action sur clic long
    Par louis_lab dans le forum C++/CLI
    Réponses: 4
    Dernier message: 01/03/2007, 14h17
  2. Afficher une image sur clic d'un bouton
    Par thibane dans le forum GTK+ avec C & C++
    Réponses: 16
    Dernier message: 21/02/2007, 10h09
  3. [VBA-E] Comment appliquer une macro sur plusieurs cellules
    Par jeanpierreco dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 25/01/2007, 10h54
  4. [VBA-E]acceder A Une Cellule Sur Une Feuille
    Par CIBOOX dans le forum Macros et VBA Excel
    Réponses: 25
    Dernier message: 17/01/2007, 08h28
  5. [VBA-E]Filtre via une macro sur Excel
    Par jamal.b dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 26/04/2006, 15h35

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