OVH Cloud OVH Cloud

Demande d'infos sur le Late Binding et Excel

4 réponses
Avatar
RENAUD Eric
Bonjour,
Sur les conseils d'une personne participant à ce forum, j'ai utilisé le Late
Binding afin d'éviter d'ajouter une
référence Excel à mon programme et ainsi améliorer la portabilité de
l'application.
J'ai récupéré mon ancien code (utilisant la référence à Excel), j'ai fait
quelques modifications et j'ai testé.

Il apparait qu'une grande majorité des lignes de commandes passent mais
certaines refusent.
Toutes celles avec "Non OP" à la fin ne fonctionne pas (Erreur 438 -
Propriétés ou méthodes non gérées)
Quoi utiliser comme Méthodes ou Propriétés dans ce cas ?

' Déclarations
Dim xlApp As Object
Dim xlBook As Object
Dim xlSheet As Object
Set xlApp = CreateObject("Excel.Application") Set xlBook =
xlApp.Workbooks.Add
Set xlSheet = xlBook.Worksheets("Feuil1")
' Une partie du code ...
With xlApp.Selection.Font
.Name = "Arial"
.Size = 8
End With
xlSheet.Range("A1:I1").Select
With xlApp.Selection
xlSheet.Selection.HorizontalAlignment = xlCenter 'Non OP
xlApp.Selection.VerticalAlignment = xlBottom 'Non OP
xlApp.Selection.WrapText = False
xlApp.Selection.Orientation = 0
xlApp.Selection.AddIndent = False
xlApp.Selection.IndentLevel = 0
xlApp.Selection.ShrinkToFit = False
xlApp.Selection.ReadingOrder = xlContext 'Non OP
xlApp.Selection.MergeCells = False
End With
xlApp.Selection.Borders(xlDiagonalDown).LineStyle = xlNone 'Non OP
xlApp.Selection.Borders(xlDiagonalUp).LineStyle = xlNone 'Non OP
With xlApp.Selection.Borders(xlEdgeLeft) 'Non OP
.LineStyle = xlContinuous 'Non OP
.Weight = xlThin 'Non OP
.ColorIndex = xlAutomatic 'Non OP
End With 'Non OP
D'avance merci.
Bien amicalement

4 réponses

Avatar
jerome crevecoeur
Bonjour,
Tu utilises des constante Excel qui sont déclarées quand tu coches la
référence à Microsoft Excel.

Tu peux les déclarer en constantes au début de ton module.
Pour retrouver la valeur de ces constantes tu peux recocher
temporairement la référence
Et faire des debug.print

Cordialement



RENAUD Eric wrote:
Bonjour,
Sur les conseils d'une personne participant à ce forum, j'ai utilisé le Late
Binding afin d'éviter d'ajouter une
référence Excel à mon programme et ainsi améliorer la portabili té de
l'application.
J'ai récupéré mon ancien code (utilisant la référence à Exc el), j'ai fait
quelques modifications et j'ai testé.

Il apparait qu'une grande majorité des lignes de commandes passent ma is
certaines refusent.
Toutes celles avec "Non OP" à la fin ne fonctionne pas (Erreur 438 -
Propriétés ou méthodes non gérées)
Quoi utiliser comme Méthodes ou Propriétés dans ce cas ?

' Déclarations
Dim xlApp As Object
Dim xlBook As Object
Dim xlSheet As Object
Set xlApp = CreateObject("Excel.Application") Set xlBook =
xlApp.Workbooks.Add
Set xlSheet = xlBook.Worksheets("Feuil1")
' Une partie du code ...
With xlApp.Selection.Font
.Name = "Arial"
.Size = 8
End With
xlSheet.Range("A1:I1").Select
With xlApp.Selection
xlSheet.Selection.HorizontalAlignment = xlCenter 'Non OP
xlApp.Selection.VerticalAlignment = xlBottom 'Non OP
xlApp.Selection.WrapText = False
xlApp.Selection.Orientation = 0
xlApp.Selection.AddIndent = False
xlApp.Selection.IndentLevel = 0
xlApp.Selection.ShrinkToFit = False
xlApp.Selection.ReadingOrder = xlContext 'Non OP
xlApp.Selection.MergeCells = False
End With
xlApp.Selection.Borders(xlDiagonalDown).LineStyle = xlNone 'N on OP
xlApp.Selection.Borders(xlDiagonalUp).LineStyle = xlNone 'No n OP
With xlApp.Selection.Borders(xlEdgeLeft) 'Non OP
.LineStyle = xlContinuous 'Non OP
.Weight = xlThin 'Non OP
.ColorIndex = xlAutomatic 'Non OP
End With 'Non OP
D'avance merci.
Bien amicalement




Avatar
Guy DETIENNE
Salut ;O)

En effet, dans mon précédent post j'ai oublié de dire que toutes les
constantes habituellement utilisées lorsque l'objet Excel est référencé ne
sont plus reconnues en late binding. Il faut donc les remplacer par le
valeur nominale.

Guy


"RENAUD Eric" a écrit dans le message de
news:%
Bonjour,
Sur les conseils d'une personne participant à ce forum, j'ai utilisé le


Late
Binding afin d'éviter d'ajouter une
référence Excel à mon programme et ainsi améliorer la portabilité de
l'application.
J'ai récupéré mon ancien code (utilisant la référence à Excel), j'ai fait
quelques modifications et j'ai testé.

Il apparait qu'une grande majorité des lignes de commandes passent mais
certaines refusent.
Toutes celles avec "Non OP" à la fin ne fonctionne pas (Erreur 438 -
Propriétés ou méthodes non gérées)
Quoi utiliser comme Méthodes ou Propriétés dans ce cas ?

' Déclarations
Dim xlApp As Object
Dim xlBook As Object
Dim xlSheet As Object
Set xlApp = CreateObject("Excel.Application") Set xlBook > xlApp.Workbooks.Add
Set xlSheet = xlBook.Worksheets("Feuil1")
' Une partie du code ...
With xlApp.Selection.Font
.Name = "Arial"
.Size = 8
End With
xlSheet.Range("A1:I1").Select
With xlApp.Selection
xlSheet.Selection.HorizontalAlignment = xlCenter 'Non OP
xlApp.Selection.VerticalAlignment = xlBottom 'Non OP
xlApp.Selection.WrapText = False
xlApp.Selection.Orientation = 0
xlApp.Selection.AddIndent = False
xlApp.Selection.IndentLevel = 0
xlApp.Selection.ShrinkToFit = False
xlApp.Selection.ReadingOrder = xlContext 'Non OP
xlApp.Selection.MergeCells = False
End With
xlApp.Selection.Borders(xlDiagonalDown).LineStyle = xlNone 'Non OP
xlApp.Selection.Borders(xlDiagonalUp).LineStyle = xlNone 'Non OP
With xlApp.Selection.Borders(xlEdgeLeft) 'Non OP
.LineStyle = xlContinuous 'Non OP
.Weight = xlThin 'Non OP
.ColorIndex = xlAutomatic 'Non OP
End With 'Non OP
D'avance merci.
Bien amicalement




Avatar
RENAUD Eric
Je comprends pas bien ce que tu me dis.
Aurais tu un petit exemple.
Merci
"Guy DETIENNE" a écrit dans le message de news:

Salut ;O)

En effet, dans mon précédent post j'ai oublié de dire que toutes les
constantes habituellement utilisées lorsque l'objet Excel est référencé ne
sont plus reconnues en late binding. Il faut donc les remplacer par le
valeur nominale.

Guy


"RENAUD Eric" a écrit dans le message de
news:%
Bonjour,
Sur les conseils d'une personne participant à ce forum, j'ai utilisé le


Late
Binding afin d'éviter d'ajouter une
référence Excel à mon programme et ainsi améliorer la portabilité de
l'application.
J'ai récupéré mon ancien code (utilisant la référence à Excel), j'ai fait
quelques modifications et j'ai testé.

Il apparait qu'une grande majorité des lignes de commandes passent mais
certaines refusent.
Toutes celles avec "Non OP" à la fin ne fonctionne pas (Erreur 438 -
Propriétés ou méthodes non gérées)
Quoi utiliser comme Méthodes ou Propriétés dans ce cas ?

' Déclarations
Dim xlApp As Object
Dim xlBook As Object
Dim xlSheet As Object
Set xlApp = CreateObject("Excel.Application") Set xlBook >> xlApp.Workbooks.Add
Set xlSheet = xlBook.Worksheets("Feuil1")
' Une partie du code ...
With xlApp.Selection.Font
.Name = "Arial"
.Size = 8
End With
xlSheet.Range("A1:I1").Select
With xlApp.Selection
xlSheet.Selection.HorizontalAlignment = xlCenter 'Non OP
xlApp.Selection.VerticalAlignment = xlBottom 'Non OP
xlApp.Selection.WrapText = False
xlApp.Selection.Orientation = 0
xlApp.Selection.AddIndent = False
xlApp.Selection.IndentLevel = 0
xlApp.Selection.ShrinkToFit = False
xlApp.Selection.ReadingOrder = xlContext 'Non OP
xlApp.Selection.MergeCells = False
End With
xlApp.Selection.Borders(xlDiagonalDown).LineStyle = xlNone 'Non
OP
xlApp.Selection.Borders(xlDiagonalUp).LineStyle = xlNone 'Non OP
With xlApp.Selection.Borders(xlEdgeLeft) 'Non OP
.LineStyle = xlContinuous 'Non OP
.Weight = xlThin 'Non OP
.ColorIndex = xlAutomatic 'Non OP
End With 'Non OP
D'avance merci.
Bien amicalement








Avatar
Guy DETIENNE
Salut ;O)

En effet, lorsque tu référencies l'objet Excel (early binding) dans VB6, VB6
connaît dès lors toutes les propriétés, méthodes et constantes de l'objet
Excel lorsque tu es dans L'IDE (environnement de programmation). Cela amène
aussi une plus grande rapidité de l'objet Excel lorsque le programme est
compilé. Tout est déjà 'linké' à l'avance.

Au contraire, lorsque tu crées un objet en late binding via CreateObject,
VB6 ne connaît pas l'objet Excel dans l'IDE et donc par conséquant il ne
connaît pas les constantes puisqu'il ne peut faire la conversion avec une
éventuelle bibliothèque. Utiliser le Late binding est plus lent puisque VB
devra effectuer tous ses liens avec l'objet lors de l'exécution du
CreatObject, la compilation n'ayant pas pris en compte les références à
Excel puis non référencé.

Guy


"RENAUD Eric" a écrit dans le message de
news:%
Je comprends pas bien ce que tu me dis.
Aurais tu un petit exemple.
Merci
"Guy DETIENNE" a écrit dans le message de news:

> Salut ;O)
>
> En effet, dans mon précédent post j'ai oublié de dire que toutes les
> constantes habituellement utilisées lorsque l'objet Excel est référencé


ne
> sont plus reconnues en late binding. Il faut donc les remplacer par le
> valeur nominale.
>
> Guy
>
>
> "RENAUD Eric" a écrit dans le message de
> news:%
>> Bonjour,
>> Sur les conseils d'une personne participant à ce forum, j'ai utilisé le
> Late
>> Binding afin d'éviter d'ajouter une
>> référence Excel à mon programme et ainsi améliorer la portabilité de
>> l'application.
>> J'ai récupéré mon ancien code (utilisant la référence à Excel), j'ai


fait
>> quelques modifications et j'ai testé.
>>
>> Il apparait qu'une grande majorité des lignes de commandes passent mais
>> certaines refusent.
>> Toutes celles avec "Non OP" à la fin ne fonctionne pas (Erreur 438 -
>> Propriétés ou méthodes non gérées)
>> Quoi utiliser comme Méthodes ou Propriétés dans ce cas ?
>>
>> ' Déclarations
>> Dim xlApp As Object
>> Dim xlBook As Object
>> Dim xlSheet As Object
>> Set xlApp = CreateObject("Excel.Application") Set xlBook > >> xlApp.Workbooks.Add
>> Set xlSheet = xlBook.Worksheets("Feuil1")
>> ' Une partie du code ...
>> With xlApp.Selection.Font
>> .Name = "Arial"
>> .Size = 8
>> End With
>> xlSheet.Range("A1:I1").Select
>> With xlApp.Selection
>> xlSheet.Selection.HorizontalAlignment = xlCenter 'Non OP
>> xlApp.Selection.VerticalAlignment = xlBottom 'Non OP
>> xlApp.Selection.WrapText = False
>> xlApp.Selection.Orientation = 0
>> xlApp.Selection.AddIndent = False
>> xlApp.Selection.IndentLevel = 0
>> xlApp.Selection.ShrinkToFit = False
>> xlApp.Selection.ReadingOrder = xlContext 'Non OP
>> xlApp.Selection.MergeCells = False
>> End With
>> xlApp.Selection.Borders(xlDiagonalDown).LineStyle = xlNone 'Non
>> OP
>> xlApp.Selection.Borders(xlDiagonalUp).LineStyle = xlNone 'Non


OP
>> With xlApp.Selection.Borders(xlEdgeLeft) 'Non OP
>> .LineStyle = xlContinuous 'Non OP
>> .Weight = xlThin 'Non OP
>> .ColorIndex = xlAutomatic 'Non OP
>> End With 'Non OP
>> D'avance merci.
>> Bien amicalement
>>
>>
>
>