XL 2013 VBA : tout le contenu d'une cellule est visible

dionys0s

XLDnaute Impliqué
Bonjour le forum,

je souhaite créer une fonction VBA qui permette de déterminer si tout le texte d'une cellule est lisible.
Une fonction du genre AllTextIsVisible(ByRef Cell As Range) As Boolean, dont l'argument Cell est soit une cellule unique non fusionnée, soit une plage qui est une cellule fusionnée (comme dans les exemples dans le classeur), qui renvoie True si tout le texte de la cellule est visible, et False sinon.

D'avance, merci pour votre aide ^^
 

Pièces jointes

  • Text lisible - XLD.xlsm
    8.6 KB · Affichages: 6

Dudu2

XLDnaute Barbatruc
Bonjour,
La question "de déterminer si tout le texte d'une cellule est lisible" peut être interprétée de différentes façons ?
- Il s'agit d'une Font ou de plusieurs représentant des caractères latins
- Les couleurs de caractères et les couleurs de fond sont toutes différentes
- La cellule appartient à la plage affichée à l'écran (ActiveWindow.VisibleRange éventuellement corrigé des marges)
- Le Zoom est au-dessus d'une valeur permettant la lecture du texte
- et j'en oublie, sans compter les combinaisons possibles.
 

dionys0s

XLDnaute Impliqué
Bonjour,

normalement, les 3 exemples de résultat attendu dans le classeur joint au 1er message répondent à ta question.
Sans titre.png

Les cellules ne sont pas nécessairement fusionnées, mais j'aimerais que la fonction marche également quand c'est le cas.

J'espère que c'est plus clair comme ça.
 

GALOUGALOU

XLDnaute Accro
re dionys0s bonjour dudu2 bonjour le forum

je n'ai pas pris le temps de bien lire mais, je vous propose une solution ou le texte est affiché en totalité dans le label d'un formulaire (cellule fusionnée ou pas), un début de solution pour faire évoluer votre projet.
le principe, le clic droit ouvre un formulaire ou dans un label, la cellule active est affichée.
cdt
galougalou






 

Pièces jointes

  • afficher contenu cellule en totalité.xlsm
    19.9 KB · Affichages: 4

job75

XLDnaute Barbatruc
Bonjour dionys0s, Dudu2, GALOUGALOU,

Une solution avec le double-clic, ce n'est pas parfait :
VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim i&, rh#, w#, c As Range, resu$
Cancel = True
For i = 1 To Selection.Rows.Count
    rh = rh + Target.Rows(i).RowHeight
Next
w = Target.Width
Application.ScreenUpdating = False
With Workbooks.Add.Sheets(1).[A1] 'document auxiliaire
    Target.Copy .Cells
    .UnMerge
    .RowHeight = rh
    .Columns.AutoFit 'ajuste la largeur
    resu = IIf(.Width <= w + 3, "On voit tout", "On ne voit pas tout")
End With
ActiveWorkbook.Close False
MsgBox resu
End Sub
A+
 

Pièces jointes

  • Text lisible - XLD(1).xlsm
    18 KB · Affichages: 4

dionys0s

XLDnaute Impliqué
Bonjour Dudu2, GALOUGALOU, job75

merci job75, c'est effectivement ce sur quoi je m'orientais en désespoir de cause. J'espérais une astuce qui m'aurait échappée dans les propriétés d'un objet Range, permettant de contourner ce type de méthode, mais bon. Tant pis.

Merci encore, et bonne journée !
 

Discussions similaires

Statistiques des forums

Discussions
291 805
Messages
1 918 120
Membres
179 933
dernier inscrit
louys
Haut Bas