En quelles unités ils marchent ?

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 !

Magic_Doctor

XLDnaute Barbatruc
Supporter XLD
Bonjour,

Je voudrais comparer la largeur d'une colonne avec celle d'un TextBox.

La largeur du TextBox est 36.
J'ajuste, manuellement, la largeur de la colonne sur celle du TextBox. Je demande quelle est la largeur de la colonne, réponse : 5,25

Je sais que les Anglo-Saxons ont de sérieux problèmes définitifs avec les unités (et d'autres choses aussi...), mais quel est le facteur de conversion exact entre ces 2 valeurs ?

Merci d'avance pour toute explication cartésienne.
 
Dernière édition:
Re : En quelles unités ils marchent ?

Bonjour gilbert,

Merci pour votre réponse. L'explication d'Excelabo est on ne peut plus claire !
C'est encore pire que ce que je pensais à leur sujet...

Bref, uniquement pour la largeur de la colonne, sans rentrer dans les détails de la macro qui permet de convertir les unités Microsoft en unités révolutionnaires (quoique... ce serait sous Louis XVI que la décision de ne plus utiliser que des unités de mesures cohérentes fut prise, les Révolutionnaires ne finirent que le boulot déjà commencé pour s'en attribuer la gloire...), par tâtonnemnet j'essaie d'ajuster la largeur de la colonne à celle du TextBox (36... mais 36 quoi au juste ?) sans y parvenir (manifestement on ne peut aller au-delà d'une décimale après la virgule).
Pour en finir avec cette ineptie (se casser la tête avec une boucle, d'accord ! mais avec une connerie pareille...), pour ajuster approximativement la largeur de la colonne à celle du TextBox, je transforme cette dernière en la multipliant par 0,149. Ça fait à peu près l'affaire...

Bonne soirée.
 
Re : En quelles unités ils marchent ?

Bonjour Magic_Doctor, gilbert_RGI,

Je comprends que la TextBox est dans la feuille, donc dans le code de la feuille :

Code:
With TextBox1.TopLeftCell
  TextBox1.Left = .Left
  TextBox1.Top = .Top
  .ColumnWidth = (TextBox1.Width - 2) * .ColumnWidth / .Width
  'le -2 parce qu'il y a une marge dans l'objet TexBox1...
End With
Les propriétés .Width et .ColumnWidth n'utilisent pas les mêmes unités.

A+
 
Re : En quelles unités ils marchent ?

Bonjour Magic_Doctor, le forum,

J'ai été un peu vite.

Il faut d'abord donner à la colonne la largeur maximum (255) pour avoir un coefficient correct.

Ensuite limiter sa largeur à 255 :

Code:
With TextBox1.TopLeftCell
  TextBox1.Left = .Left
  TextBox1.Top = .Top
  .ColumnWidth = 255 'largeur maximum pour avoir un coefficient correct
  .ColumnWidth = Application.Min(TextBox1.Width * .ColumnWidth / .Width, 255)
  TextBox1.Width = .Width 'petit ajustement de la TextBox
End With
Remarque : si la macro n'est pas dans le code de la feuille :

Code:
Dim tb As Object
Set tb = ActiveSheet.TextBox1 'à adapter
With tb.TopLeftCell
  tb.Left = .Left
  tb.Top = .Top
  .ColumnWidth = 255 'largeur maximum pour avoir un coefficient correct
  .ColumnWidth = Application.Min(tb.Width * .ColumnWidth / .Width, 255)
  tb.Width = .Width 'petit ajustement de la TextBox
End With
Bonne journée.
Bonne journée.
 
Dernière édition:
Re : En quelles unités ils marchent ?

Bonjour job,

Merci pour ces perfectionnements, ça marche très bien.

Je n’étais pas rentré dans les détails de mon projet.
Dans ma feuille j’ai une cellule qui récupère un chiffre. Ce chiffre peut être variable et sa longueur de même.
Juste au-dessous de ce chiffre se trouve le TextBox dont les dimensions sont évidemment fixes.
La largeur de la colonne où se trouve la cellule qui récupère le chiffre s’adapte à la longueur du chiffre afin qu’on puisse toujours le lire (sinon : ####... pas très clair…). Mais, pour des raisons esthétiques, je voulais que l’ajustage de la largeur de la colonne n’aille pas en-deçà de la largeur du TextBox. En somme la largeur du TextBox est la limite minimale de celle de la colonne.
Pour résoudre le problème j’avais rédigé ceci qui manifestement marche en dépit de mon bidouillage pour les « unités Microsoft » :
VB:
Private Sub CommandButton1_Click()
'Bouton GO : déclenche le listage des nombres aléatoires dans les 2 1ères colonnes de la feuille "Données"
   
  Application.ScreenUpdating = False
  
  Dim tb As Object, NbTotalChif As Double, largeur As Double

  Set tb = ActiveSheet.GetNbLgn 'TextBox "GetNbLgn"
  largeur = tb.Width 'largeur du TexTbox "GetNbLgn"
  largeur = largeur * 0.149 'bidouillage pour la conversion des unités absconses...
  
  Lim_Inf = TextBox1: Lim_Sup = TextBox2: virg = ComboBox1: Label4.Caption = Limites
   
  NbTotalChif = NbChiffres(Lim_Inf, Lim_Sup, virg) 'nombre de chiffres possibles entre les 2 limites
  [NbTotalChiffres] = NbTotalChif 'la cellule nommée "NbTotalChiffres" récupère le nombre total de chiffres entre les 2 limites
  
  '**** Ajustage de la largeur de la colonne où se trouve la cellule affichant le nombre de chiffres entre 2 nombres *****
  [NbTotalChiffres].EntireColumn.AutoFit 'ajuste la largeur de la colonne au contenu de la cellule "cel"
  'la largeur de la colonne où se trouve la cellule nommée "NbTotalChiffres" ne peut être inférieure à la largeur du TextBox "GetNbLgn"
  If [NbTotalChiffres].ColumnWidth < largeur Then [NbTotalChiffres].ColumnWidth = largeur
  '***********************************************************************************************************************

  If NbLignes > NbTotalChif Then 'il y a plus de lignes que de nombre de chiffres entre les 2 limites de l'intervalle
    Call Big_Bazar_sur_Punta_del_Este_Plages(NbTotalChif) 'on doit raccourcir les colonnes, sinon big plantade !
    NbLignes = NbTotalChif: tb.Text = NbTotalChif
  End If
  
  Call ActualiserColonnes("[", "]") 'dresse les 2 listes de numéros aléatoires
  
  Application.OnTime Now, "EnregistrerUSF_Aleatoire" 'garde en mémoire les dernières valeurs entrées dans l'USF (job75)
  Application.ScreenUpdating = True
End Sub
Mais là j’avoue que j’ai quelques problèmes pour adapter ta routine dans ma macro. Quand on veut bien faire les choses, ta solution est quand même plus élégante que mon « bidouillage ».

A+
 
- 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
Retour