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

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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.
 
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.
 
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

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

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 !
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
406
Retour