billpancho
XLDnaute Nouveau
Bonjour,
Etant d'un niveau plus bas que bas, j'essaye de m'en sortir comme je peux pour comprendre certains trucs qui me servent à réaliser un outil perso...
Je souhaite donner un taille à une colonne en centimetre et qu'excel me la retranscrive avec les pirouettes de pixels...
J'ai fouillé et j'ai trouvé cela qui ne me semble pas mal du tout :
sub colonnesEnCentimetres()
Dim cm As Integer, points As Integer, savewidth As Integer
Dim count As Integer
Application.ScreenUpdating = False
cm = Application.InputBox("entrer la largeur de la colonne en cms", _
"Largeur de la colonne souhaitée", 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
Cela fonctionne exactement comme je veux mais je n'arrive pas à "bidouiller" (vu mon niveau le terme est adapté) pour répondre à 2 de mes souhaits :
le 1er : je souhaite que cela me change la largeur de toutes les colonnes d'une feuille précise nommée "Plan" (même largeur pour toutes les colonnes) et je ne sais pas déchiffrer suffisament pour changer ce qu'il faut
le 2ème : j'ai créer à côté un userform1 et si la valeur de mon textbox11 pouvez remplacer cette fameuse question que me pose ce code ce serait super...
Je sais bien que pour vous c'est pas bien sorcier ce que je demande mais franchement je nage, je nage... 'c'est dommage que les lignes que l'on trouve comme ca ne comptent pas plus de commentaires à chaque étape, ca serait très instructif car j'ai beau utilisé l'enregistreur, pour mes questions, ca reste dur...
Merci !!
Etant d'un niveau plus bas que bas, j'essaye de m'en sortir comme je peux pour comprendre certains trucs qui me servent à réaliser un outil perso...
Je souhaite donner un taille à une colonne en centimetre et qu'excel me la retranscrive avec les pirouettes de pixels...
J'ai fouillé et j'ai trouvé cela qui ne me semble pas mal du tout :
sub colonnesEnCentimetres()
Dim cm As Integer, points As Integer, savewidth As Integer
Dim count As Integer
Application.ScreenUpdating = False
cm = Application.InputBox("entrer la largeur de la colonne en cms", _
"Largeur de la colonne souhaitée", 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
Cela fonctionne exactement comme je veux mais je n'arrive pas à "bidouiller" (vu mon niveau le terme est adapté) pour répondre à 2 de mes souhaits :
le 1er : je souhaite que cela me change la largeur de toutes les colonnes d'une feuille précise nommée "Plan" (même largeur pour toutes les colonnes) et je ne sais pas déchiffrer suffisament pour changer ce qu'il faut
le 2ème : j'ai créer à côté un userform1 et si la valeur de mon textbox11 pouvez remplacer cette fameuse question que me pose ce code ce serait super...
Je sais bien que pour vous c'est pas bien sorcier ce que je demande mais franchement je nage, je nage... 'c'est dommage que les lignes que l'on trouve comme ca ne comptent pas plus de commentaires à chaque étape, ca serait très instructif car j'ai beau utilisé l'enregistreur, pour mes questions, ca reste dur...
Merci !!
Dernière édition: