Aperçu (Genre d'info-bulle) d'une cellule trop large

Gedch

XLDnaute Occasionnel
Bonjour

Je souhaiterais en passant la souris sur une cellule dont la largeur ne permet pas de voir tout son contenu directement, d’avoir un aperçu (genre d'info-bulle) comme lorsque l’on passe sur les commentaires par exemple.

Est-ce possible ?

Merci
 

job75

XLDnaute Barbatruc
Re : Aperçu (Genre d'info-bulle) d'une cellule trop large

Bonjour Gedch, le forum,

Est-il possible de modifier la couleur du fond ou du texte de l'info-bulle ?

Pour modifier l'apparence des info-bulles Windows voyez ce fil :

Comment augmenter la taille des infobulles ? - Fiche pratique

Mais ici il s'agit de messages de saisie dans les validations de données d'Excel, je ne sais pas si ça changera quelque chose.

Et je n'ai pas testé car je n'ai pas envie de modifier le paramétrage de mon ordi :)

A+
 

Gedch

XLDnaute Occasionnel
Re : Aperçu (Genre d'info-bulle) d'une cellule trop large

Re,

Une variante que le post d'eriiiic m'a inspirée :

Code:
Sub Info(Target As Range)
Dim larg1 As Single, larg2 As Single, f As String
Application.ScreenUpdating = False
With Target.Cells(1, 1)
  larg1 = .ColumnWidth
  .Columns.AutoFit 'ajustement de la colonne
  larg2 = .ColumnWidth
  .ColumnWidth = larg1
  f = .NumberFormat
End With
With Target.Validation
  .Delete
  .Add Type:=xlValidateInputOnly
  .InputMessage = IIf(larg2 > larg1, Format(Target.Cells(1, 1), f), "")
End With
End Sub

Le message utilise le format nombre de la cellule.

A+

Je n'avais vu ce poste

Je l'ai essayé, mais rien se passe !

Est-ce qu'il faut combiner ta macro avec celle d'eriiiic ?

A+
 

Gedch

XLDnaute Occasionnel
Re : Aperçu (Genre d'info-bulle) d'une cellule trop large

Bonjour Gedch, le forum,



Pour modifier l'apparence des info-bulles Windows voyez ce fil :

Comment augmenter la taille des infobulles ? - Fiche pratique

Mais ici il s'agit de messages de saisie dans les validations de données d'Excel, je ne sais pas si ça changera quelque chose.


A+

J'ai essayé, cela fonctionne parfaitement,
Petit problème effectivement, cela agit sur toutes les Info-bulles de Windows

On peut tout remettre à létat initial sans problème !, mais cela fait beaucoup de manipes ....

A+
 

hamcec

XLDnaute Nouveau
Re : Aperçu (Genre d'info-bulle) d'une cellule trop large

Bonsoir le forum,

Il ne faut pas oublier de gérer l'erreur n°1004 (Erreur définie par l'application ou par l'objet) quand le nombre de caractères de la cellule traitée est supérieur à 254 :

En utilisant par exemple le code suivant :
Left(Trim(Target), 254)

Ce qui revient à supprimer les espaces à droite et à gauche et à conserver les 254 premiers caractères.

Sinon cette astuce est excellente !

A+
Hamcec
 

job75

XLDnaute Barbatruc
Re : Aperçu (Genre d'info-bulle) d'une cellule trop large

Bonjour Gedch, hamcec, le forum,

@ Gedch post #17

Pour voir la différence entre les macros des posts #10 et #11, entrez une date et mettez la cellule au format personnalisé jjjj j mmmm aaaa.

@ Gedch post #18

J'espérais bien obtenir ce résultat.

Peut-être existe-t-il des API Windows permettant de modifier l'apparence des info-bulles depuis Excel, mais je n'ai rien trouvé.

@ hamcec post #19

Tout à fait exact, il faut limiter à 254 caractères, donc modifier la macro :

Code:
Sub Info(Target As Range)
Dim larg1 As Single, larg2 As Single, f As String
Application.ScreenUpdating = False
With Target.Cells(1, 1)
  larg1 = .ColumnWidth
  .Columns.AutoFit 'ajustement de la colonne
  larg2 = .ColumnWidth
  .ColumnWidth = larg1
  f = .NumberFormat
End With
With Target.Validation
  .Delete
  .Add Type:=xlValidateInputOnly
  .InputMessage = IIf(larg2 > larg1, [COLOR="Red"]Format(Left(Trim(Target.Cells(1, 1)), 254), f)[/COLOR], "")
End With
End Sub

A+
 

job75

XLDnaute Barbatruc
Re : Aperçu (Genre d'info-bulle) d'une cellule trop large

Re,

Voici une autre solution qui utilise une TextBox :

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Info ActiveCell
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
Info Target.Cells(1, 1)
End Sub

Sub Info(Target As Range)
Dim larg1 As Single, larg2 As Single, f As String
Application.ScreenUpdating = False
With Target
  larg1 = .ColumnWidth
  .Columns.AutoFit 'ajustement de la colonne
  larg2 = .ColumnWidth
  .ColumnWidth = larg1
  f = .NumberFormat
End With
With MaChose 'nom de la TextBox
  .Visible = larg2 > larg1
  .Value = Format(Target, f)
  .AutoSize = True
  .Top = Target.Top
  .Left = Target.Offset(, 1).Left
End With
End Sub

Créez la TextBox avec la Boîte à Outils Contrôles et nommez-la MaChose.

En mode Création, on peut modifier à loisir les propriétés de la TextBox.

Il n'y a plus de limitation du nombre de caractères (testé jusqu'à 10000...).

Fichier joint.

A+
 

Pièces jointes

  • TextBox(1).xls
    40 KB · Affichages: 96
  • TextBox(1).xls
    40 KB · Affichages: 94
  • TextBox(1).xls
    40 KB · Affichages: 100

Gedch

XLDnaute Occasionnel
Re : Aperçu (Genre d'info-bulle) d'une cellule trop large

Bonjour job75


Re,

Voici une autre solution qui utilise une TextBox :

Créez la TextBox avec la Boîte à Outils Contrôles et nommez-la MaChose.

En mode Création, on peut modifier à loisir les propriétés de la TextBox.

Il n'y a plus de limitation du nombre de caractères (testé jusqu'à 10000...).

Fichier joint.

A+

Peux tu m'en dire un peu plus sur comment "Créez la TextBox avec la Boîte à Outils Contrôles", ou se trouve cette "Boîte à Outils Contrôles" ?

Merci

A+
 

job75

XLDnaute Barbatruc
Re : Aperçu (Genre d'info-bulle) d'une cellule trop large

Bonjour Gedch,

Là c'est du archi archi classique :)

Je n'ai pas Excel 2007, alors cherchez sur le forum.

De même pour modifier les propriétés de la TextBox, vous devriez arriver à vous débrouiller tout seul :)

A+
 

Gedch

XLDnaute Occasionnel
Re : Aperçu (Genre d'info-bulle) d'une cellule trop large

Bonsoir

Cette TextBox a effectivement des avantages par rapport à l'autre solution
On a pas de problème de nombre de caractères
On peut paramétrer pas mal de choses comme la couleur

Par contre on a un problème d'affichage
c'est que la TexteBox s'étire en longueur à l'infini
On ne peut donc pas lire toute la phrase.

J'ai bien essayé de figer la taille, mais dans ce cas même si la hauteur permet de mettre plusieurs lignes, il n'y a pas de retour à la ligne et on ne voit donc que une partie du texte.

Reste plus que à chercher comment mettre une césure automatique ...

A+
 

job75

XLDnaute Barbatruc
Re : Aperçu (Genre d'info-bulle) d'une cellule trop large

Bonjour Gedch,

Il faut savoir que (presque) tout a été prévu sur Excel :)

Voyez ce fichier et la macro :

Code:
Sub Info(Target As Range)
Dim larg1 As Single, larg2 As Single, f As String, Lmax As Single
Application.ScreenUpdating = False
With Target
  larg1 = .ColumnWidth
  .Columns.AutoFit 'ajustement de la colonne
  larg2 = .ColumnWidth
  .ColumnWidth = larg1
  f = .NumberFormat
End With
With MaChose 'nom de la TextBox
  .Visible = larg2 > larg1
  .Value = Format(Target, f)
  .AutoSize = True
  [COLOR="Red"].MultiLine = False
  Lmax = 200 'on définit ici la largeur max de la TextBox
  If .Width > Lmax Then
    .AutoSize = False
    .MultiLine = True
    .Width = Lmax
    .AutoSize = True
  End If[/COLOR]
  .Top = Target.Top
  .Left = Target.Offset(, 1).Left
End With
End Sub

On joue sur les propriétés MultiLine et AutoSize de la TextBox

A+
 

Pièces jointes

  • TextBox(2).zip
    11.4 KB · Affichages: 52

Gedch

XLDnaute Occasionnel
Re : Aperçu (Genre d'info-bulle) d'une cellule trop large

Bonjour job75

Merci pour la réponse

Maintenant c'est parfaitement lisible

J'ai bien trouvé les couleurs, les bordures, Le mode transparent.

Les effets ? (Je ne voit pas de changement ?)

J'ai cherché s'il était possible de paramétrer la zone ou apparaît la bulle
Plutôt à droite que à gauche, dessus au lieu de en-dessous
Voir si il était possible de faire apparaître à partir du milieu, pour avoir en fait la même présentation que une info-bulle

Mais je n'ai rien trouvé, mais peut-être que c'est pas paramétrable

A+
 

job75

XLDnaute Barbatruc
Re : Aperçu (Genre d'info-bulle) d'une cellule trop large

Bonjour,

L'endroit où apparaît la TextBox est défini par ses propriétés Top et Left.

Essayez en modifiant la macro par :

Code:
.Top = Target.Top + 15 'ou aussi => Target.Top + Target.Height + 3
.Left = Target.Left + 20 'ou aussi => Target.Left + Target.Width / 2

Mais cela gêne un peu pour sélectionner la cellule du dessous.

Modifiez les nombres 15 et 20 pour obtenir ce que vous voulez.

A+
 
Dernière édition:

Gedch

XLDnaute Occasionnel
Re : Aperçu (Genre d'info-bulle) d'une cellule trop large

Bonhour

J'ai modifié avec ces valeurs :

Code:
  .Top = Target.Offset(, 1).Top + Target.Height / 2
  .Left = Target.Offset(, 1).Left - Target.Width / 2

A présent j'ai bien la Textbox en plein centre de la cellule, quelle que soit la hauteur et la largeur.

Merci

A+
 

job75

XLDnaute Barbatruc
Re : Aperçu (Genre d'info-bulle) d'une cellule trop large

Bonjour Gedch,

OK, mais pourquoi ne pas écrire simplement :

Code:
.Top = Target.Top + Target.Height / 2
.Left = Target.Left + Target.Width / 2

A bientôt peut-être.
 

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 909
Membres
101 836
dernier inscrit
karmon