Excel modifier la largeur des colonnes à partir de vb.net

cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 - 27 févr. 2012 à 21:51
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 - 28 févr. 2012 à 09:31
Bonjour à tous

j'ai une liste de strings que j'écris dans une
feuille excel
chaque lettre dans un cell
chaque string a la meme longueur
le string le plus long est de 19 lettres
donc dans ce cas la rangée va de A1 à P1

1 Comment caculer le width des colonnes A:P
de façon à ne pas dépasser une feuille A4 ?

2 centrer chaque lettre dans chaque cell
j'ai crée un macro
Columns("B:B").ColumnWidth = 4
    Range("B3:L7").Select
    Range("L3").Activate
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlBottom
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With


avec le code en net
j'ai écrit
cellstrcopy = "A1" 
.Range(cellstrcopy).HorizontalAlignment = xlCenter

j'ai une erreur xlCenter is not declared


Merci

7 réponses

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
27 févr. 2012 à 22:23
Bonjour,

As-tu tenté d’appeler l'énumération avec le bon espace de nom ?
Excel.Enumeration.Nom


---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, ce lien ou encore celui-ci[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
27 févr. 2012 à 23:47
Bonsoir Henry

j'ai trouvé pour le xlcenter
excel.XlVAlign.xlVAlignCenter

.Range("A1").HorizontalAlignment = excel.XlVAlign.xlVAlignCenter


pour la largeur des colonnes
par ex j'ai crée un macro avec excel
après avoir modifié la largeur de B
j'obtiens ça
Columns("B:B").ColumnWidth = 3.86

les 3.86 en quelle unité ?
si j'ai la taille du feuille A4
An A4 is 21 x 29.7 cm or 8.27 x 11.69 inches.

et je veux afficher 19 colonnes je ne sais
pas si c'est correcte d'écrire
29.7 cm \ 19 = 1.56
0
Utilisateur anonyme
28 févr. 2012 à 02:45
Bonjour,

L'unité de mesure des dimensions des cellules, des lignes et des colonnes d'Excel est une unité arbitraire basée sur différents éléments, le plus connu étant la police de caractères utilisée; et n'a rien à voir avec la taille du papier. Le moyen le plus sur de voir combien de colonnes peuvent être imprimées est l'impression elle-même. Le résultat peut même être différent d'une imprimante à l'autre selon l'imprimante elle-même et le pilote d'imprimante.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
28 févr. 2012 à 07:47
Bonjour,

avec le code en net
j'ai écrit
Code Visual Basic :

cellstrcopy = "A1"
.Range(cellstrcopy).HorizontalAlignment = xlCenter


Cette ligne figure donc dans ton code VB.Net .
Or xlCenter n'est pas une constante de VB.Net, mais une constante de VBA/Excel
===>>
Il faut donc le préciser à VB.Net, tout simplement !
Soit toto l'objet Excel(appli) que tu pilotes : === >>
toto. xlCenter


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
28 févr. 2012 à 07:52
Pareil pour tout le reste (tes calculs de largeur). Les calculer depuis l'objet créé pour la feuille (en pilotage, donc) === >> le résultat obtenu es en points (échelle de VBA/Excel). Ce résultat est donc ensuite à transposer en pixels (échelle de VB.Net) ou, plus simplement, puisque mesures d'une feuille A4, directement en centimètres ou millimètres. Je ne doute pas de ce que VB.Net t'offre à cette fin de transposition, au moins les mêmes facilités que celles qu'offre VB6.


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
28 févr. 2012 à 08:08
Je voudrais enfin te faire remarquer que s'il s'agit de faire en sorte que tout rentre dans la largeur d'une feuille A4, il t'est possible de le faire simplement en pilotage de Excel, puisqu'il t'offre précisément l'objet PageSetup, avec toutes ses propriétés ! Parmi ces propriétés, il y a bien évidemment Zoom. Mais d'autres également, qui ne sont pas dénuées d'intérêt (marges, etc ...). Excel te permet donc de définir comme tu l'entends l'impression. Il te tend les bras et attends que tu le pilotes.


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
28 févr. 2012 à 09:31
Bonjour

J'ai trouvé
pour le xlcenter -> excel.XlVAlign.xlVAlignCenter

Columns("B:B").ColumnWidth = 3.86

en net
 Dim xlworksheet As excel.Worksheet
 xlworksheet.Range("B").ColumnWidth = 3.86


Il te tend les bras et attends que tu le pilotes.



j'ai pris un parachute au cas où
0
Rejoignez-nous