[RESOLU] Retravailler le code de largeur colonne

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 !!
 
Dernière édition:

billpancho

XLDnaute Nouveau
Re : Retravailler le code de largeur colonne

Merci à toi, mais ceci va juste me prendre la valeur de ma textbox et me a convertir dans un format mais je perds du coup toute la notion de dimension "quasi" exacteen centimètre apportée par le code du dessus
 

billpancho

XLDnaute Nouveau
Re : Retravailler le code de largeur colonne

Pour être franc je ne comprends pas toutes les subtilités du code que j'ai trouvé, j'avais choisi celui ci après avoir lu de nombreux postes sur l'histoire de non-proportionnalité des pixels/pouce/cm dans l'établissement d'une largeur de colonne excel. Mais si tu m'assures que le code que tu m'as mis me donneras quelque chose d'aussi précis alors je prends !
sinon, j'en profite pour apprendre, le "0.00" de ta ligne sert à ?? est-ce qu'il sert à dire que mon Integer aura 2 décimales ?

Merci de tes réponses
 

Orodreth

XLDnaute Impliqué
Re : Retravailler le code de largeur colonne

Re,

Pour être franc, je ne suis pas certain du code fourni.
Je certifie que ça va agrandir TOUTES les colonnes, ça oui.
Je te confirme aussi que le "0.00" signifie 2 décimales.

Après, pour l'exactitude de la conversion, j'ai pas eu le temps de tester avec le boulot et tout.

Tu es sûr d'avoir besoin d'une précision en centimètres ?
Et sûr aussi de devoir agrandir TOUTES les colonnes ?

Pour les colonnes utiles, je comprends, mais à moins d'être sûr d'utiliser toutes les colonnes ...
 

billpancho

XLDnaute Nouveau
Re : Retravailler le code de largeur colonne

J'ai essayé mais cela ne correspond pas

Avant d'avoir le code que j'avais mis, j'avais en tatonnant trouvé qu'il fallait multiplier la valeur donnée en cm par environ 6 pour que la taille de la colonne soit a peu près égale à la valeur souhaitée

Le code ci dessus donne vraiment quelque chose de plus proche (surtout vu que l'opération ne semble pas etre proportionnelle) et je ne comprends pas tout mais je sais qu'elle ne dit pas de diviser le tout par 24
 

Orodreth

XLDnaute Impliqué
Re : Retravailler le code de largeur colonne

Rebonjour,

J'ai cherché un peu, je suis plus ou moins convaincu par ce que j'ai pu lire.

Dans l'idée, pour reprendre ton code, et juste insérer cette notion de textbox:

Code:
sub colonnesEnCentimetres()
 Dim cm As Integer, points As Integer, savewidth As Integer
 Dim count As Integer
 Application.ScreenUpdating = False

 cm = cint(LaTextBox.Text)
 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

Juste remplacer l'appel à une imputbox par le texte d'une textbox (à convertir en integer), le reste de ta procédure reste identique.

Si tu as toujours des problèmes, je t'encourage à aller voir ce lien: PB EXCEL [Résolu] | CommentCaMarche
Il y est traité de ta problématique, et quelqu'un utilise une règle de 3 pour faire ses conversions, sachant qu'elle part d'une base fixe. Ca parait encore la solution la plus propre.

Cordialement,
Orodreth
 

billpancho

XLDnaute Nouveau
Re : Retravailler le code de largeur colonne

Merci à toi ca fonctionne très bien

Pour pouvoir le faire sur les autres colonnes j'ai juste recopier le code en le précedent à chaque fois d'un select range et comme après il ne regarde que le active cell column bah ca marche. Je ne pense pas que ce soit le plus simple mais c'est efficace !
 

Discussions similaires

Réponses
29
Affichages
954

Statistiques des forums

Discussions
312 294
Messages
2 086 894
Membres
103 404
dernier inscrit
sultan87