XL 2016 Copier et coller une plage en image

garnote

XLDnaute Junior
Bonjour, bonsoir ou bonne nuit, selon le cas,

Je dois sélectionner une plage contenant des cellules noires ou blanches pour en faire des images auxquelles je fais faire diverses rotations avec VBA, mais ses sacrées images ne s'alignent pas avec une précision absolue avec les cellules qu'elles contiennent. Vous connaissez un truc pour m'enlever cette épine :) du pied sans être obligé d'essayer d'y arriver manuellement pour chacune des images pivotées ?
S'il était possible de faire pivoter une plage sans passer par une image, ce serait le pied! 😄

Merci de votre attention et salutations distinguées!
Serge
 

Pièces jointes

  • Plage image rotation.PNG
    Plage image rotation.PNG
    3.4 KB · Affichages: 23

garnote

XLDnaute Junior
Merci pour ta réponse très précise ! 👍👍👍


Pas mal du tout ta méthode : la cellule parait bien carrée à l'écran. 👍


Chez moi ses cellules ne font pas 80 mais 100 pixels de large sur 79 pixels de haut, et visuellement ne sont pas du tout carrées. ;)

[edit]
Bizarre, je viens de lancer la macro sur un fichier vierge, et cette fois-ci j'obtiens bien des cellules de 80 sur 79, comme toi. ;)
[/edit]

[edit2]
Encore plus bizarre : avec un troisième fichier ça me donne des cellules de 46 sur 79 pixels.
Il doit y avoir un "léger" problème dans la logique de la macro... 😁
[/edit2]
Quand même un peu ridicule d'avoir autant de misère pour obtenir des cellules vraiment carrées.
Sans parler, si on a pu faire, supposément, de vrais carrés sur nos feuilles, de l'impression desdits carrés qui ne sont plus vraiment carrés! :)
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
ca n'est pas que c'est compliqué c'est que par calcul c'est impossible a moins de tomber sur des dizaine s
c'est simple
1 point =1.333333333333333 pixel en dpi 100 soit(96)

comme le width en ecriture pour les cells c'est columnswidth(nombre de caractères ) et que meme si on peut facilement ramener ca en points reste que 1 point =1.33.... donc calculer en pixel est une hérésie en vba excel

une cellule mesure 60points de large à la base soit 10.71 caractères(oui oui le dernier caractères c'est un petit chinois il fait que 0.71 LOL LOL🤣)

et le rowheight c'est en point

donc imaginons que je veux des cellules de 80 points de large et de haut

je fait
x=80

w=cells(1).width 'uniquement en lecture

RW=cells(1).columnwidth'en lecture et écriture

'je fait donc une opération simple je vais déterminer le coefficient with 60 à 80

xx = x / w'coéfficient 60 vers 80

'il me reste plus qu'a multiplier le RW original par ce coefficient

With Cells(1)
.ColumnWidth =rw * xx
.RowHeight = x
End With

ben manque de pot vba est passer par là et il arrondi
résultat des course quelque chose de simple et logique devient d'un coup un casse tête chinois
LOL!!!
 

TooFatBoy

XLDnaute Barbatruc
ca n'est pas que c'est compliqué c'est que par calcul c'est impossible a moins de tomber sur des dizaine s
c'est simple
Ca doit forcément être possible, d'abord parce que ce n'est qu'une histoire de mathématiques, et ensuite parce que Microsoft y arrive. ;)

Faut dire que Microsoft et les unités de mesure ça a toujours été tout un poème !
Ils ne sont même pas capables, encore aujourd'hui, d'afficher la bonne unité de mesure pour la taille des disques durs...
Et en VB, dans les années 90, quand ils utilisaient les twips...


1 point =1.333333333333333 pixel en dpi 100 soit(96)
Ah, ça me rappelle une conversation ça. 😁
Souviens-toi : ce n'est pas "dpi 100 soit(96)", c'est "facteur de zoom à 100 % avec une dalle en 96 dpi". ;)
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
314 656
Messages
2 111 609
Membres
111 221
dernier inscrit
Odré