Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2529 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Petit probleme de macro VBA sous Excel

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Petit probleme de macro VBA sous Excel

n°1988779
Snipe_tout
Posté le 29-04-2010 à 15:55:39  profilanswer
 

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
mood
Publicité
Posté le 29-04-2010 à 15:55:39  profilanswer
 

n°1988787
SuppotDeSa​Tante
Aka dje69r
Posté le 29-04-2010 à 16:08:46  profilanswer
 

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 !
n°1989013
SuppotDeSa​Tante
Aka dje69r
Posté le 30-04-2010 à 11:17:01  profilanswer
 

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 !

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Petit probleme de macro VBA sous Excel

 

Sujets relatifs
tracer une ligne verticale en vba (excel)probleme pour cacher les erreurs de connexion à database
Demande de creation d'un petit logiciel (rémunéré)Probléme avec phpmyadmin et easyphp 5.3.1.0
Problème de l'utilisation de session() et header()VBA / Excel : Bug étrange ...
Petit problème à résoudre sur carte de France interactive Flash:)PHP probleme retour chariot
Plus de sujets relatifs à : Petit probleme de macro VBA sous Excel


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR