Petit probleme de macro VBA sous Excel - VB/VBA/VBS - Programmation
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.
|
Marsh Posté le 30-04-2010 à 11:17:01
Et bien deja je ne comprends pourquoi tu ajoutes 5 a ton CentimetersToPoints ici
Code :
|
1cm = 28.346456693 points
donc 5cm = 5x28.346456693
5cm = 141.732283465 points
Le souci, c'est qu'avec CentimetersToPoints, si je fais :
Code :
|
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 :
|
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
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