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

Signaler
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
-
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
-
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

Messages postés
14757
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
14 janvier 2021
151
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
---
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
50
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

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.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
232
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
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
232
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
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
232
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
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
50
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ù