Petit probleme de macro VBA sous Excel

Petit probleme de macro VBA sous Excel - VB/VBA/VBS - Programmation

Marsh Posté le 29-04-2010 à 15:55:39    

Bonjour,
 
Je suis actuellement en train d'essayer de faire une macro me permettant de pouvoir changer la taille d'une ligne ou d'une colonne en rentrant une valeur en centimetre.
 
Le probleme que je rencontre c'est que sur la macro pour les colonne j'ai 2mm en trop pour une taille de 5cm et pour la macro ligne c'est l'inverse il me manque 2mm pour une taille de 5cm.
 
Donc si l'un d'entre vous avait la possibilité de m'aider se ne serai pas de refut.
 
Voici les 2 macros :
 


Sub LignesEnCm()
 
Dim cm As Single
 
cm = Application.InputBox("Hauteur de la ligne en cm.", Type:=1)
 
If cm Then
Selection.RowHeight = Application.CentimetersToPoints(cm) + 5
End If
 
End Sub


 
 


Sub ColonnesEnCm()
 
Dim cm As Single, points As Single, savewidth As Single
Dim count As Single
 
Application.ScreenUpdating = False
cm = Application.InputBox("Largeur de la colonne en cm.", Type:=1)
If cm = False Then Exit Sub
points = Application.CentimetersToPoints(cm)
savewidth = ActiveCell.ColumnWidth
ActiveCell.ColumnWidth = 255
 
If points > ActiveCell.Width Then
MsgBox "la largeur de" & cm & "est trop large" & Chr(10) & _
"la valeur maxi est de " & _
Format(ActiveCell.Width / 28.3464566929134, _
"0.00" ), vbOKOnly + vbExclamation, "largeur non valable"
ActiveCell.ColumnWidth = savewidth
Exit Sub
 
End If
lowerwidth = 0
upwidth = 255
ActiveCell.ColumnWidth = 127.5
curwidth = ActiveCell.ColumnWidth
count = 0
While (ActiveCell.Width <> points) And (count < 20)
 
If ActiveCell.Width < points Then
lowerwidth = curwidth
Selection.ColumnWidth = (curwidth + upwidth) / 2
Else
upwidth = curwidth
Selection.ColumnWidth = (curwidth + lowerwidth) / 2
End If
 
curwidth = ActiveCell.ColumnWidth
count = count + 1
 
Wend
 
End Sub


 
 
 
 
Je tiens juste à préciser que je suis un gros NooB en programmation ...
 
Merci d'avance pour votre aide.
 
Sincères Salutations
 
Snipetout
 
 
*edit : Comme cela c'est bon ? Par contre je n'arrive pas à avoir la colorisation dont il parle ....


Message édité par Snipe_tout le 30-04-2010 à 07:55:30
Reply

Marsh Posté le 29-04-2010 à 15:55:39   

Reply

Marsh Posté le 29-04-2010 à 16:08:46    

Hello
 
Commence par mettre une balise pour ton code, la c'est illisible, c'est pas indenté...
Je doute que qqun s'amuse a lire ca comme ca.
 

Citation :

[14] Pour poster du code, il existe des balises C/C++ bien pratiques.

  • Malheureusement certains ne les utilisent pas. Si vous les oubliez, on vous le signalera, vous serez alors prié d'effectuer ces modifications.
  • Si vous ne voulez pas de la coloration syntaxique C/C++ (qui peut s'appliquer au PHP, JAVA et autres), vous pouvez utiliser les balises [code] ou [fixed] à la place de [cpp] (elles sont d'ailleur recommandées si vous voulez poster autre chose que du code ayant un style proche du C++).


Message édité par SuppotDeSaTante le 29-04-2010 à 16:10:21

---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 30-04-2010 à 11:17:01    

Et bien deja je ne comprends pourquoi tu ajoutes 5 a ton CentimetersToPoints ici

Code :
  1. If cm Then
  2. Selection.RowHeight = Application.CentimetersToPoints(cm) + 5
  3. End If


 
1cm = 28.346456693 points
donc 5cm = 5x28.346456693  
5cm = 141.732283465 points
 
Le souci, c'est qu'avec CentimetersToPoints, si je fais :

Code :
  1. Selection.RowHeight = Application.CentimetersToPoints(5)

J'obtiens une hauteur à 141.75
Alors qu'elle devrait faire 141.73 si je ne prends que 2 chiffres apres la virgule.
 
Cela vient peut etre de ca...?
 
Maintenant, si je prends une image (ou un dessin) que je definis sa hauteur à 5cm, et que je la positionne sur ma ligne, avec

Code :
  1. Selection.RowHeight = Application.CentimetersToPoints(5)

j'ai bien l'image et la ligne alignées...
 
Pour finir, quelle version d'Excel as tu ?
Dans 2007 on peut definir les tailles en cm me semble-t-il


Message édité par SuppotDeSaTante le 30-04-2010 à 11:23:02

---------------
Soyez malin, louez entre voisins !
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed