Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Jean-marc
Barsalou wrote:
Bonjour
Excusez cette question d'un néophyte, mais j'aimerais savoir comment lire en VB6 le contenu d'une cellule d'un document Excel.
Merci d'avance
Hello,
C'est tout simple :-)
Il y a 2 façons possible, selon que tu veuilles faire du early binding ou du late binding. Voir à ce sujet : http://faq.vb.free.fr/index.php?question4
Mais plus concrètement, voici comme faire (en early binding) :
La première chose à faire est d'inclure une référence à Excel dans ton projet : Menu Projet, Références, chercher "Microsoft Excel 10.0 Object Library" (la version peut différer selon ce qui est installé sur la machine, pas de soucis).
Puis dans le code :
'Déclaration des variables Dim appExcel As Excel.Application 'Application Excel Dim wbExcel As Excel.Workbook 'Classeur Excel Dim wsExcel As Excel.Worksheet 'Feuille Excel Dim celluleA1 As String Dim celluleB2 As String
'Ouverture de l'application Set appExcel = CreateObject("Excel.Application") 'Ouverture d'un fichier Excel Set wbExcel = appExcel.Workbooks.Open("C:toto.xls") 'wsExcel correspond à la première feuille du fichier Set wsExcel = wbExcel.Worksheets(1)
Excusez cette question d'un néophyte, mais j'aimerais savoir comment
lire en VB6 le contenu d'une cellule d'un document Excel.
Merci d'avance
Hello,
C'est tout simple :-)
Il y a 2 façons possible, selon que tu veuilles faire du
early binding ou du late binding.
Voir à ce sujet :
http://faq.vb.free.fr/index.php?question4
Mais plus concrètement, voici comme faire (en early binding) :
La première chose à faire est d'inclure une référence à Excel
dans ton projet :
Menu Projet, Références, chercher "Microsoft Excel 10.0 Object Library"
(la version peut différer selon ce qui est installé sur la machine,
pas de soucis).
Puis dans le code :
'Déclaration des variables
Dim appExcel As Excel.Application 'Application Excel
Dim wbExcel As Excel.Workbook 'Classeur Excel
Dim wsExcel As Excel.Worksheet 'Feuille Excel
Dim celluleA1 As String
Dim celluleB2 As String
'Ouverture de l'application
Set appExcel = CreateObject("Excel.Application")
'Ouverture d'un fichier Excel
Set wbExcel = appExcel.Workbooks.Open("C:toto.xls")
'wsExcel correspond à la première feuille du fichier
Set wsExcel = wbExcel.Worksheets(1)
Excusez cette question d'un néophyte, mais j'aimerais savoir comment lire en VB6 le contenu d'une cellule d'un document Excel.
Merci d'avance
Hello,
C'est tout simple :-)
Il y a 2 façons possible, selon que tu veuilles faire du early binding ou du late binding. Voir à ce sujet : http://faq.vb.free.fr/index.php?question4
Mais plus concrètement, voici comme faire (en early binding) :
La première chose à faire est d'inclure une référence à Excel dans ton projet : Menu Projet, Références, chercher "Microsoft Excel 10.0 Object Library" (la version peut différer selon ce qui est installé sur la machine, pas de soucis).
Puis dans le code :
'Déclaration des variables Dim appExcel As Excel.Application 'Application Excel Dim wbExcel As Excel.Workbook 'Classeur Excel Dim wsExcel As Excel.Worksheet 'Feuille Excel Dim celluleA1 As String Dim celluleB2 As String
'Ouverture de l'application Set appExcel = CreateObject("Excel.Application") 'Ouverture d'un fichier Excel Set wbExcel = appExcel.Workbooks.Open("C:toto.xls") 'wsExcel correspond à la première feuille du fichier Set wsExcel = wbExcel.Worksheets(1)
Un problème cependant: pas de Microsoft Excel 10.0 Object Library dans les références. La seule chose d'approchant est Microsoft Office 10.0 Object Library. Est-ce que cela suffit ? Sinon comment faire ?
Merci encore
Un problème cependant: pas de Microsoft Excel 10.0 Object Library dans les
références.
La seule chose d'approchant est Microsoft Office 10.0 Object Library.
Est-ce que cela suffit ?
Sinon comment faire ?
Un problème cependant: pas de Microsoft Excel 10.0 Object Library dans les références. La seule chose d'approchant est Microsoft Office 10.0 Object Library. Est-ce que cela suffit ? Sinon comment faire ?
Merci encore
Daniel AUBRY
Bonjour,
le problème en mettant une référence à Excel : si tu changes de version ton programme ne fonctionne plus !!
Ci dessous le code que j'utilise avec des versions différentes d'Excel.
Je lis des données dans un classeur protégé, donc ouverture du fichier, déprotection, récup des infos, fermeture du fichier.
'Récup du chemin "Mes Documents" CheminDocument = GetSpecialFolder(CSIDL_PERSONAL)
If Repere <> "A" Then MsgBox "Ce fichier n'est pas un fichier de cotisations !!", vbCritical, NomEtVersion AppExcel.Workbooks.Close AppExcel.Quit Set AppExcel = Nothing Screen.MousePointer = vbArrow Exit Sub End If
'Lecture de l'année AnneeCotisation = Mid(AppExcel.Worksheets(1).Cells(LigneExcel, ColonneExcel).Value, 3, 4)
'Lecture du titre Titre = AppExcel.Worksheets(1).Cells(LigneExcel, ColonneExcel + 1).Value
If Len(Titre) < 11 Then MsgBox "Ce fichier n'est pas un fichier de cotisations !!", vbCritical, NomEtVersion AppExcel.Workbooks.Close AppExcel.Quit Set AppExcel = Nothing Screen.MousePointer = vbArrow Exit Sub End If
'Lecture d'autres infos dont je te fais grace
'Fermeture du fichier et quitter Excel AppExcel.Workbooks.Close AppExcel.Quit Set AppExcel = Nothing
MsgBox "Mise à jour terminée !!", vbInformation
Screen.MousePointer = vbArrow
Dany
"Barsalou" a écrit dans le message de news:
Un problème cependant: pas de Microsoft Excel 10.0 Object Library dans les références. La seule chose d'approchant est Microsoft Office 10.0 Object Library. Est-ce que cela suffit ? Sinon comment faire ?
Merci encore
Bonjour,
le problème en mettant une référence à Excel :
si tu changes de version ton programme ne fonctionne plus !!
Ci dessous le code que j'utilise avec des versions différentes d'Excel.
Je lis des données dans un classeur protégé, donc ouverture du fichier,
déprotection, récup des infos, fermeture du fichier.
'Récup du chemin "Mes Documents"
CheminDocument = GetSpecialFolder(CSIDL_PERSONAL)
If Repere <> "A" Then
MsgBox "Ce fichier n'est pas un fichier de cotisations !!", vbCritical,
NomEtVersion
AppExcel.Workbooks.Close
AppExcel.Quit
Set AppExcel = Nothing
Screen.MousePointer = vbArrow
Exit Sub
End If
'Lecture de l'année
AnneeCotisation = Mid(AppExcel.Worksheets(1).Cells(LigneExcel,
ColonneExcel).Value, 3, 4)
'Lecture du titre
Titre = AppExcel.Worksheets(1).Cells(LigneExcel, ColonneExcel + 1).Value
If Len(Titre) < 11 Then
MsgBox "Ce fichier n'est pas un fichier de cotisations !!", vbCritical,
NomEtVersion
AppExcel.Workbooks.Close
AppExcel.Quit
Set AppExcel = Nothing
Screen.MousePointer = vbArrow
Exit Sub
End If
'Lecture d'autres infos dont je te fais grace
'Fermeture du fichier et quitter Excel
AppExcel.Workbooks.Close
AppExcel.Quit
Set AppExcel = Nothing
MsgBox "Mise à jour terminée !!", vbInformation
Screen.MousePointer = vbArrow
Dany
"Barsalou" <ericMettreUnPointbarsalou@wanadoo.fr> a écrit dans le message de
news: egyRaBIUHHA.4832@TK2MSFTNGP04.phx.gbl...
Un problème cependant: pas de Microsoft Excel 10.0 Object Library dans les
références.
La seule chose d'approchant est Microsoft Office 10.0 Object Library.
Est-ce que cela suffit ?
Sinon comment faire ?
If Repere <> "A" Then MsgBox "Ce fichier n'est pas un fichier de cotisations !!", vbCritical, NomEtVersion AppExcel.Workbooks.Close AppExcel.Quit Set AppExcel = Nothing Screen.MousePointer = vbArrow Exit Sub End If
'Lecture de l'année AnneeCotisation = Mid(AppExcel.Worksheets(1).Cells(LigneExcel, ColonneExcel).Value, 3, 4)
'Lecture du titre Titre = AppExcel.Worksheets(1).Cells(LigneExcel, ColonneExcel + 1).Value
If Len(Titre) < 11 Then MsgBox "Ce fichier n'est pas un fichier de cotisations !!", vbCritical, NomEtVersion AppExcel.Workbooks.Close AppExcel.Quit Set AppExcel = Nothing Screen.MousePointer = vbArrow Exit Sub End If
'Lecture d'autres infos dont je te fais grace
'Fermeture du fichier et quitter Excel AppExcel.Workbooks.Close AppExcel.Quit Set AppExcel = Nothing
MsgBox "Mise à jour terminée !!", vbInformation
Screen.MousePointer = vbArrow
Dany
"Barsalou" a écrit dans le message de news:
Un problème cependant: pas de Microsoft Excel 10.0 Object Library dans les références. La seule chose d'approchant est Microsoft Office 10.0 Object Library. Est-ce que cela suffit ? Sinon comment faire ?
Merci encore
Jean-marc
"Daniel AUBRY" wrote in message news:45d3f40b$0$25655$
Bonjour,
le problème en mettant une référence à Excel : si tu changes de version ton programme ne fonctionne plus !!
Ci dessous le code que j'utilise avec des versions différentes d'Excel.
Hello Daniel,
C'est effectivement une bonne solution, c'est celle qui est connue comme étant "Late Binding".
La FAQ a une petite entrée à ce sujet: http://faq.vb.free.fr:80/index.php?question4
-- Jean-marc
"Daniel AUBRY" <daniel@dansoft.fr> wrote in message
news:45d3f40b$0$25655$426a74cc@news.free.fr...
Bonjour,
le problème en mettant une référence à Excel :
si tu changes de version ton programme ne fonctionne plus !!
Ci dessous le code que j'utilise avec des versions différentes d'Excel.
Hello Daniel,
C'est effectivement une bonne solution, c'est celle qui est connue
comme étant "Late Binding".
La FAQ a une petite entrée à ce sujet:
http://faq.vb.free.fr:80/index.php?question4
"Daniel AUBRY" wrote in message news:45d3f40b$0$25655$
Bonjour,
le problème en mettant une référence à Excel : si tu changes de version ton programme ne fonctionne plus !!
Ci dessous le code que j'utilise avec des versions différentes d'Excel.
Hello Daniel,
C'est effectivement une bonne solution, c'est celle qui est connue comme étant "Late Binding".
La FAQ a une petite entrée à ce sujet: http://faq.vb.free.fr:80/index.php?question4
-- Jean-marc
Driss HANIB
Salut Jean Marc..
justement quelle est la meilleure solution ?
Driss
"Jean-marc" a écrit dans le message de news:er1hhm$phs$
"Daniel AUBRY" wrote in message news:45d3f40b$0$25655$ > Bonjour, > > le problème en mettant une référence à Excel : > si tu changes de version ton programme ne fonctionne plus !! > > Ci dessous le code que j'utilise avec des versions différentes d'Excel.
Hello Daniel,
C'est effectivement une bonne solution, c'est celle qui est connue comme étant "Late Binding".
La FAQ a une petite entrée à ce sujet: http://faq.vb.free.fr:80/index.php?question4
-- Jean-marc
Salut Jean Marc..
justement quelle est la meilleure solution ?
Driss
"Jean-marc" <jean_marc_n2@NO_SPAM_yahoo.fr> a écrit dans le message de
news:er1hhm$phs$1@aioe.org...
"Daniel AUBRY" <daniel@dansoft.fr> wrote in message
news:45d3f40b$0$25655$426a74cc@news.free.fr...
> Bonjour,
>
> le problème en mettant une référence à Excel :
> si tu changes de version ton programme ne fonctionne plus !!
>
> Ci dessous le code que j'utilise avec des versions différentes d'Excel.
Hello Daniel,
C'est effectivement une bonne solution, c'est celle qui est connue
comme étant "Late Binding".
La FAQ a une petite entrée à ce sujet:
http://faq.vb.free.fr:80/index.php?question4
"Jean-marc" a écrit dans le message de news:er1hhm$phs$
"Daniel AUBRY" wrote in message news:45d3f40b$0$25655$ > Bonjour, > > le problème en mettant une référence à Excel : > si tu changes de version ton programme ne fonctionne plus !! > > Ci dessous le code que j'utilise avec des versions différentes d'Excel.
Hello Daniel,
C'est effectivement une bonne solution, c'est celle qui est connue comme étant "Late Binding".
La FAQ a une petite entrée à ce sujet: http://faq.vb.free.fr:80/index.php?question4
-- Jean-marc
Jean-marc
Driss HANIB wrote:
Salut Jean Marc..
justement quelle est la meilleure solution ?
Hello Driss,
Je ne peux que répéter ce qui est dit dans la FAQ http://faq.vb.free.fr:80/index.php?question4
Disons que le eraly binding est plus efficace et plus commode pendant la conception, alors que le late binding permet (dans une certaine mesure) d'éviter les conflits de Version.
Quand tu fais:
Dim xl As Excel.Application
Il faut avoir inclut la référence à une version particulière d'Excel, qui ne sera peut être pas la version installée lors du déploiement sur la machine cible.
Alors qu'en Late Binding, la question ne se pose pas.
Tu fais juste : Dim xl As Object Set xl = CreateObject("Excel.Application")
C'est lors de l'exécution que le programme créera l'objet, en prenant sur la machine cible la version d'Excel disponible.
Evidemment, c'est beaucoup plus lent, ce qui peut être ou non un problème: pour certaines applis, les performances ne sont tout simplement pas importantes.
Disons qu'en règle générale, on essaie de préférer le early binding. Si l'appli doit être massivement déployée en environnement hétérogène, on choisira sans doute le Late binding. Si les perfs sont critiques, on pourra toujours construire des packages de dépoiement distincts, par version d'Excel, en ayant tout remis en Early binding.
Si tu développes une appli perso (destinée à tourener sur ta machine ou sur des machines dont tu connais la version d'Excel) => early binding.
Je ne peux que répéter ce qui est dit dans la FAQ
http://faq.vb.free.fr:80/index.php?question4
Disons que le eraly binding est plus efficace et plus commode
pendant la conception, alors que le late binding permet
(dans une certaine mesure) d'éviter les conflits de Version.
Quand tu fais:
Dim xl As Excel.Application
Il faut avoir inclut la référence à une version particulière d'Excel,
qui ne sera peut être pas la version installée lors du déploiement sur
la machine cible.
Alors qu'en Late Binding, la question ne se pose pas.
Tu fais juste :
Dim xl As Object
Set xl = CreateObject("Excel.Application")
C'est lors de l'exécution que le programme créera l'objet, en
prenant sur la machine cible la version d'Excel disponible.
Evidemment, c'est beaucoup plus lent, ce qui peut être ou non un
problème: pour certaines applis, les performances ne sont tout
simplement pas importantes.
Disons qu'en règle générale, on essaie de préférer le early binding.
Si l'appli doit être massivement déployée en environnement hétérogène,
on choisira sans doute le Late binding. Si les perfs sont critiques,
on pourra toujours construire des packages de dépoiement distincts, par
version d'Excel, en ayant tout remis en Early binding.
Si tu développes une appli perso (destinée à tourener sur ta machine ou
sur des machines dont tu connais la version d'Excel) => early binding.
Je ne peux que répéter ce qui est dit dans la FAQ http://faq.vb.free.fr:80/index.php?question4
Disons que le eraly binding est plus efficace et plus commode pendant la conception, alors que le late binding permet (dans une certaine mesure) d'éviter les conflits de Version.
Quand tu fais:
Dim xl As Excel.Application
Il faut avoir inclut la référence à une version particulière d'Excel, qui ne sera peut être pas la version installée lors du déploiement sur la machine cible.
Alors qu'en Late Binding, la question ne se pose pas.
Tu fais juste : Dim xl As Object Set xl = CreateObject("Excel.Application")
C'est lors de l'exécution que le programme créera l'objet, en prenant sur la machine cible la version d'Excel disponible.
Evidemment, c'est beaucoup plus lent, ce qui peut être ou non un problème: pour certaines applis, les performances ne sont tout simplement pas importantes.
Disons qu'en règle générale, on essaie de préférer le early binding. Si l'appli doit être massivement déployée en environnement hétérogène, on choisira sans doute le Late binding. Si les perfs sont critiques, on pourra toujours construire des packages de dépoiement distincts, par version d'Excel, en ayant tout remis en Early binding.
Si tu développes une appli perso (destinée à tourener sur ta machine ou sur des machines dont tu connais la version d'Excel) => early binding.
Ok Jean Marc je comprends mieux. je suis pour ma part plus dans le "developpement" d'applis perso ou dans un contexte de PME où l'archi est à peu près constante Merc i pour tes conseils toujours éclairés
Driss
"Jean-marc" a écrit dans le message de news:er25pq$955$
Driss HANIB wrote: > Salut Jean Marc.. > > justement quelle est la meilleure solution ?
Hello Driss,
Je ne peux que répéter ce qui est dit dans la FAQ http://faq.vb.free.fr:80/index.php?question4
Disons que le eraly binding est plus efficace et plus commode pendant la conception, alors que le late binding permet (dans une certaine mesure) d'éviter les conflits de Version.
Quand tu fais:
Dim xl As Excel.Application
Il faut avoir inclut la référence à une version particulière d'Excel, qui ne sera peut être pas la version installée lors du déploiement sur la machine cible.
Alors qu'en Late Binding, la question ne se pose pas.
Tu fais juste : Dim xl As Object Set xl = CreateObject("Excel.Application")
C'est lors de l'exécution que le programme créera l'objet, en prenant sur la machine cible la version d'Excel disponible.
Evidemment, c'est beaucoup plus lent, ce qui peut être ou non un problème: pour certaines applis, les performances ne sont tout simplement pas importantes.
Disons qu'en règle générale, on essaie de préférer le early binding. Si l'appli doit être massivement déployée en environnement hétérogène, on choisira sans doute le Late binding. Si les perfs sont critiques, on pourra toujours construire des packages de dépoiement distincts, par version d'Excel, en ayant tout remis en Early binding.
Si tu développes une appli perso (destinée à tourener sur ta machine ou sur des machines dont tu connais la version d'Excel) => early binding.
Ok Jean Marc
je comprends mieux.
je suis pour ma part plus dans le "developpement" d'applis perso ou dans un
contexte de PME où l'archi est à peu près constante
Merc i pour tes conseils toujours éclairés
Driss
"Jean-marc" <NO_SPAM_jean_marc_n2@yahoo.fr.invalid> a écrit dans le message
de news:er25pq$955$1@aioe.org...
Driss HANIB wrote:
> Salut Jean Marc..
>
> justement quelle est la meilleure solution ?
Hello Driss,
Je ne peux que répéter ce qui est dit dans la FAQ
http://faq.vb.free.fr:80/index.php?question4
Disons que le eraly binding est plus efficace et plus commode
pendant la conception, alors que le late binding permet
(dans une certaine mesure) d'éviter les conflits de Version.
Quand tu fais:
Dim xl As Excel.Application
Il faut avoir inclut la référence à une version particulière d'Excel,
qui ne sera peut être pas la version installée lors du déploiement sur
la machine cible.
Alors qu'en Late Binding, la question ne se pose pas.
Tu fais juste :
Dim xl As Object
Set xl = CreateObject("Excel.Application")
C'est lors de l'exécution que le programme créera l'objet, en
prenant sur la machine cible la version d'Excel disponible.
Evidemment, c'est beaucoup plus lent, ce qui peut être ou non un
problème: pour certaines applis, les performances ne sont tout
simplement pas importantes.
Disons qu'en règle générale, on essaie de préférer le early binding.
Si l'appli doit être massivement déployée en environnement hétérogène,
on choisira sans doute le Late binding. Si les perfs sont critiques,
on pourra toujours construire des packages de dépoiement distincts, par
version d'Excel, en ayant tout remis en Early binding.
Si tu développes une appli perso (destinée à tourener sur ta machine ou
sur des machines dont tu connais la version d'Excel) => early binding.
Ok Jean Marc je comprends mieux. je suis pour ma part plus dans le "developpement" d'applis perso ou dans un contexte de PME où l'archi est à peu près constante Merc i pour tes conseils toujours éclairés
Driss
"Jean-marc" a écrit dans le message de news:er25pq$955$
Driss HANIB wrote: > Salut Jean Marc.. > > justement quelle est la meilleure solution ?
Hello Driss,
Je ne peux que répéter ce qui est dit dans la FAQ http://faq.vb.free.fr:80/index.php?question4
Disons que le eraly binding est plus efficace et plus commode pendant la conception, alors que le late binding permet (dans une certaine mesure) d'éviter les conflits de Version.
Quand tu fais:
Dim xl As Excel.Application
Il faut avoir inclut la référence à une version particulière d'Excel, qui ne sera peut être pas la version installée lors du déploiement sur la machine cible.
Alors qu'en Late Binding, la question ne se pose pas.
Tu fais juste : Dim xl As Object Set xl = CreateObject("Excel.Application")
C'est lors de l'exécution que le programme créera l'objet, en prenant sur la machine cible la version d'Excel disponible.
Evidemment, c'est beaucoup plus lent, ce qui peut être ou non un problème: pour certaines applis, les performances ne sont tout simplement pas importantes.
Disons qu'en règle générale, on essaie de préférer le early binding. Si l'appli doit être massivement déployée en environnement hétérogène, on choisira sans doute le Late binding. Si les perfs sont critiques, on pourra toujours construire des packages de dépoiement distincts, par version d'Excel, en ayant tout remis en Early binding.
Si tu développes une appli perso (destinée à tourener sur ta machine ou sur des machines dont tu connais la version d'Excel) => early binding.