Agrandir une cellule excel quand on clique dessus ?

nemotri Messages postés 179 Statut Membre -  
Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Voilà j'ai rempli un tableau excel où dans chaque cellule il y a beaucoup de lignes de texte.
Seulement j'ai aussi beaucoup de cellule et j'aimerai voir l'ensemble de mes cellule sur mon écran.

Du coup je voudrai réduire chaque cellule à un petit format (hauteur de ligne = 20 pixels et largeur de colonne = 95 pixels) et trouver une solution pour que la largeur de colonne et la hauteur de ligne s'agrandissent et s'adapte quand je clique sur une cellule afin de pouvoir lire tout son contenu.

Je ne suis pas un spécialiste d'excel mais je en pense pas que cela soit possible "facilement" (j'ai cherché dans l'onglet affichage mais je n'ai rien trouvé) du coup je me disait qu'une solution serait de mettre en place un bouton à bascule en haut de ma feuille et lorsque celui-ci est dans une position la cellule sélectionné dans la feuille prend la dimension 20 x 95 pixels et lorsqu'il est dans l'autre position la cellule prend une très grande dimension (500 pixels en hauteur de ligne x 600 pixels en largeur de colonne). De cette façon je pourrai faire des zoom avant/arrière sur toutes mes cellules.

Voyez-vous une autre solution plus simple et si non pourriez-vous m'aider pour le code VBA de mon bouton à bascule car je ne suis vraiment pas doué en VBA...

Merci pour votre aide.
Boris.

8 réponses

  1. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Salut le fil,

    teste ce code à coller dans les propriétés de la feuille.
    Pour y accéder clic droit sur l'onglet de feuille/Visualiser le code ou clic sur les touche Alt et F11 en même temps
    gérera les colonnes de A à G et les lignes de 3 à 30 (à adapter)
    la largeur minimum des colonnes est de 5 et s'adapte automatiquement au passage de la souris

    Option Explicit

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Column >= 1 And Target.Column <= 7 And Target.Row >= 3 And Target.Row <= 30 Then
    Columns("A:G").ColumnWidth = 5
    Me.Columns(Target.Column).EntireColumn.AutoFit
    End If
    End Sub

    A+
    Mike-31

    Une période d'échec est un moment rêvé pour semer les graines du savoir.
    0
  2. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 783
     
    Bonjour,

    Essaie ce code :
    - Le changement de cellule dimensionne toutes les cellules à 20 x 95
    - Un clic droit dimensionne la cellule à 500 x 600
    Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
      Rows.RowHeight = 15 
      Columns.ColumnWidth = 12.86 
    End Sub 
    
    Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) 
      ActiveWindow.ScrollRow = Application.WorksheetFunction.Max(Target.Row - 5, 1) 
      ActiveWindow.ScrollColumn = Application.WorksheetFunction.Max(Target.Column - 4, 1) 
      Target.RowHeight = 375 
      Target.ColumnWidth = 85 
      Cancel = True 
    End Sub 
    


    Cordialement
    Patrice


    PS :Petite erreur corrigée sur Max
    0
  3. nemotri Messages postés 179 Statut Membre 35
     
    Premièrement merci à tous les 3 pour vos réponses.

    Pour eriic la méthode pourrait me convenir malheureusement je ne comprends pas le code VBA et je suis donc incapable de l'adapter à mon fichier. Si tu as un moment pour me l'expliquer ça m'intéresse ;-)

    Pour Mike-31 je pense que ta méthode est celle qui me conviendrait le mieux mais cela ne semble pas fonctionner... Quant je rentre le code VBA, si je clique sur une cellule toutes les colonnes concernées (de A à G donc) prennent bien la largeur 5 mais ensuite elle la largeur ne s'adapte pas de tout ou du mois pas tout le temps : pour les cellule ou j'ai juste une ligne de texte dans la cellule ça marche très bien mais pour celles où j'ai plusieurs lignes de texte ça ne fonctionne pas... J'ai l'impression que la largeur s'adapte à la largeur de ma première ligne de texte dans la cellule mais malheureusement ce n'est jamais ma plus longue ligne. De plus le code permet d'adapter la largeur de la colonne mais pas la hauteur de ligne donc là encore je ne peux voir que ma première ligne de texter... Pour information les colonnes à gérer seraient de D à O et les lignes à gérer de 4 à 55.

    Enfin pour Patrice33740 ça marche très bien mais y'a t-il moyen d'adapter ce code à la plage de cellules suivante : colonnes de D à U (si possible sans prendre en compte les colonnes H, M et R) et lignes 4 à 55 ?

    Merci pour votre aide.
    0
  4. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Re,

    Pour mon code il suffit de le copier dans le module de la (des) feuille concernées.

    Pour simplifier l'adaptation remplace :
    If Target.Column <> 3 Or IsEmpty(Target) Or Target.Cells.Count > 1 Then Exit Sub
    par :
    If IsEmpty(Target) Or Target.Cells.Count > 1 Then Exit Sub
    et si tu veux restreindre à une plage ajouter en plus :
    If Intersect(Target, [A2:E25]) Is Nothing Then Exit Sub

    Ce programme était prévu pour une demande où il n'y avait que du texte à afficher et ne prévois pas que ce soit du numérique.
    Il faudrait reprendre cette partie : .Comment.Text Text:=Target.Value pour ne pas que ça plante dans ce cas.

    Fais déjà ton choix entre les 3 propositions pour trouver celle qui est le plus adaptée pour toi. On verra à ce moment là.

    eric

    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. nemotri Messages postés 179 Statut Membre 35
     
    Ok merci Eric,

    Si je devais faire un choix je dirai que la méthode à Mike-31 est celle qui répondrait le mieux à mes attentes.
    Si toutefois quelqu'un peut m'aider et l'adapter à ma demande ça serait génial.

    Merci.
    Boris.
    0
  7. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Salut le fil,

    Je ne pense pas que mon code soit le mieux adapté à cause des retours lignes que tu as dans les cellules, sauf si on prédifini une largeur fixe.

    le code de Patrice n'est pas mal et fonctionne sur des dimensions cellules prédéfinies et fixe, que tu peux adapter

    Par contre le code d'Eriiic me plait parce qu'il ne dimensionnement pas tes cellules et le contenu de la cellule s'affiche dans le commentaire au passage de la souris
    0
  8. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 783
     
    Bonsoir,

    Essaie ce code qui agrandit/rétrécit uniquement les cellules de la plage D4:U55 sauf les colonnes H, M et R :
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
      Rows("4:55").RowHeight = 15
      Columns("D:G").ColumnWidth = 12.86
      Columns("I:L").ColumnWidth = 12.86
      Columns("N:R").ColumnWidth = 12.86
    End Sub
    
    Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
      If Intersect(Target, [D4:U55]) Is Nothing Then Exit Sub
      If Not (Intersect(Target, [H:H]) Is Nothing) Then Exit Sub
      If Not (Intersect(Target, [M:M]) Is Nothing) Then Exit Sub
      If Not (Intersect(Target, [R:R]) Is Nothing) Then Exit Sub
      ActiveWindow.ScrollRow = Application.WorksheetFunction.Max(Target.Row - 5, 1)
      ActiveWindow.ScrollColumn = Application.WorksheetFunction.Max(Target.Column - 4, 1)
      Target.RowHeight = 375
      Target.ColumnWidth = 85
      Cancel = True
    End Sub
     

    0
  9. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonjour,

    lorsque tu cliques une cellule son contenu apparait en commentaires dont la taille s'ajuste.
    Regarde si ça te va : https://www.cjoint.com/?BJmmKP24d9E

    eric

    Jamais tu ne répondras à un mp non sollicité...
    Bon, ça c'est fait.
    -1