Meilleur auteur de réponses
Correspondance Excel VB6 et VB.net

Question
-
Dim FeuilleExcel As Excel.Worksheet
With FeuilleExcel
.Activate()
NumLigne = 2
For I = 1 To NbColonne
.Columns(I).HorizontalAlignment = xlVAlignCenter
.Cells(NumLigne, I).Font.Bold = True
.Cells(NumLigne, I).Interior.Color = &HFFC0C0 'Bleu clair
.Cells(NumLigne, I).Borders.LineStyle = xlDoubleEnd With
Bonjour,
Quelqu'un connait il l'équivalence des lignes foncées (Caractères en gras) pour VB.net?
Merci.
Réponses
-
Dans ce cas :
CType(.Cells(numLigne, I), Excel.Range).Font.Bold = True
.Cells(numLigne,I) retourne un objet dont l'erreur si on utilise Option Strict On. Donc il faut typer l'objet retourné en "Range" pour éviter cette erreur...
Eventuellement une méthode d'extension devrait permettre d'éviter d'avoir à faire cela à tout bout de champ par exemple :
Module WorksheetExtension <Extension()> Function CellsAsRange(ByVal wks As Worksheet, ByVal rowIndex As Integer, ByVal columnIndex As Integer) As Excel.Range Return CType(wks.Cells(rowIndex, columnIndex), Excel.Range) End Function End Module
Ce qui permettrait de faire directement qq chose comme .CellsAsRange(numLigne,I).Font.Bold=True
Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".- Modifié Patrice ScribeMVP, Moderator mercredi 19 octobre 2011 09:29 Mélange de pinceaux dans les lignes/colonnes.
- Proposé comme réponse Ciprian Duduiala jeudi 20 octobre 2011 06:43
- Marqué comme réponse MarcelD22 vendredi 21 octobre 2011 09:14
Toutes les réponses
-
Bonjour,
En supposant que le problème est sur les énumérations, voir http://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.xlvalign.aspx ou http://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.xllinestyle(v=office.11).aspx
(donc cela serait Excel.XlVAlign.XlVAlignCenter et Excel.xlLineStyle.xlDouble au lieu de simplement XlVAlingCenter et xlDouble).
Pour les autres lignes, il y a un problème particulier ? (les objets exposés par Excel doivent être sensiblement exposés de la même façon que ce soit du VB6 ou du .NET).
De préférence toujours indiquer l'erreur exacte rencontrée...
Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".- Modifié Patrice ScribeMVP, Moderator mardi 18 octobre 2011 15:04 Ajout du namespace Excel. Après test les autres lignes sont effectivement ok
- Proposé comme réponse TroxsaEditor mardi 18 octobre 2011 16:05
-
-
Bonjour,
Dim FeuilleExcel As Excel.Worksheet With FeuilleExcel .Activate() Dim NumLigne = 2 For I = 1 To 100 .Columns(I).HorizontalAlignment = Excel.XlVAlign.xlVAlignCenter .Cells(NumLigne, I).Font.Bold = True .Cells(NumLigne, I).Interior.Color = Excel.XlThemeColor.xlThemeColorLight2 ' &HFFC0C0 'Bleu clair .Cells(NumLigne, I).Borders.LineStyle = Excel.XlLineStyle.xlDouble .Columns(I).HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter .Cells(NumLigne, I).Font.Bold = True Next I End With
J'ai juste retouché, un peu, le code pour ne pas avoir d'erreur, a vous de faire les modifications pour que ça fonctionne.A bientôt
Cordialement,
Xavier TALOUR
Alias Troxsa SendMail
- Proposé comme réponse TroxsaEditor mercredi 19 octobre 2011 07:26
-
Cf la réponse de Xavier qui restitue explicitement les modifications que je suggérais.
Par contre pour ".Cells(NumLigne,I).Font.Bold=True" je ne ne vois quel est le problème. Cette ligne devrait fonctionner sans souci. Si ce n'est pas le cas, merci d'indiquer précisemment quel est l'erreur générée par cette ligne comme demandé précédemment.
Les erreurs sur xlVAlignCenter, xlDouble sont dues au fait que l'énumération utilisée doit être indiquée en VB.NET alors qu'elle est optionnelle en VB6. Ce n'est donc pas un problème général, juste une petite différence liée à la rigueur un peu plus grande du langage et cela ne concerne que les énumérations.
Les autres lignes ne devraient pas poser problème.
Please always mark whatever response solved your issue so that the thread is properly marked as "Answered". -
-
Dans ce cas :
CType(.Cells(numLigne, I), Excel.Range).Font.Bold = True
.Cells(numLigne,I) retourne un objet dont l'erreur si on utilise Option Strict On. Donc il faut typer l'objet retourné en "Range" pour éviter cette erreur...
Eventuellement une méthode d'extension devrait permettre d'éviter d'avoir à faire cela à tout bout de champ par exemple :
Module WorksheetExtension <Extension()> Function CellsAsRange(ByVal wks As Worksheet, ByVal rowIndex As Integer, ByVal columnIndex As Integer) As Excel.Range Return CType(wks.Cells(rowIndex, columnIndex), Excel.Range) End Function End Module
Ce qui permettrait de faire directement qq chose comme .CellsAsRange(numLigne,I).Font.Bold=True
Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".- Modifié Patrice ScribeMVP, Moderator mercredi 19 octobre 2011 09:29 Mélange de pinceaux dans les lignes/colonnes.
- Proposé comme réponse Ciprian Duduiala jeudi 20 octobre 2011 06:43
- Marqué comme réponse MarcelD22 vendredi 21 octobre 2011 09:14
-
-
Effectivement, il est préférable de minimiser le nombre d'appels vers Excel.
Ici on fait effectivement une boucle pour modifier chaque cellule d'un bloc l'une après l'autre de la même façon ce qui fera plusieurs centaines d'appels à Excel.
En appliquant cela au bloc concerné, on ne devrait plus avoir qu'une dizaine d'appels vers Excel...
Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".- Proposé comme réponse marcel46fr mercredi 19 octobre 2011 11:56