Importer et exporter avec excel

Soyez le premier à donner votre avis sur cette source.

Snippet vu 107 502 fois - Téléchargée 42 fois

Contenu du snippet

Ce code permet d'extraire des données depuis les cellules d'un fichier excel ou d'y envoyer des données depuis une applilcation VB, tout ceci sans avoir à ouvrir le fichier "manuellement" (contrairement à la méthode linktopic).
Vous y trouverez également quelques commandes intéressantes pour la manipulation de fichiers excel.

11/04/05: mise à jour
le code que j'avais posté à l'origine était une bidouille que j'avais concocté pour les besoins d'un stage.
Ca m'avait bien dépanné mais j'avoue que c'était loin d'être stable.
Après plusieurs demandes (parfois sans réponse de ma part, je l'avoue) je me suis enfin décidé à mettre ça à jour.
Voilà donc la nouvelle mouture, en espérant que cela vous aide.

Le principe est simple: on crée une variable objet dans laquelle on affecte un fichier Excel, et après il ne reste plus qu'à la modifier au besoin.

Pour cela il faut d'abord ajouter dans les références (Projet --> Références) "Microsoft Excel 10.0 Object Library"

Source / Exemple :


Dim xls As Excel.Workbook        ' déclaration d'une variable objet de type classeur Excel
Dim var As ce_que_vous_voulez

Set xls = GetObject("monfichier.xls")   'instanciation de l'objet (qui devient ici le fichier excel indiqué)

' export de données
With xls
   .worksheets(1).range("B6").Value = "1"
   .worksheets(1).range("B18").Value = "2"
   .worksheets(1).range("A18").Value = "3"
End With

' worksheets(1) correspond à la feuille 1 du fichier Excel
' pour spécifier le nom d'une feuille mettre à la place sheets("nom de la feuille")

' import de données
var = xls.worksheets(1).range("C2").Value

' etc etc...
' après à vous d'adapter le code en fonction de vos besoin

' une fois que vous avez fini d'utiliser la variable xls, pensez à la détruire
Set xls = Nothing

' PS: le code ci-dessus utilise un fichier Excel déjà existant.
' Pour créer un fichier Excel à partir d'une appli VB voici la manip:

Dim xls as Excel.Application
Set xls = CreateObject("Excel.Application")   ' création d'une nouvelle instance vierge de l'application Excel

' après paramètrez le fichier comme bon vous semble.
' Voici quelques exemples    
xls.WindowState = xlMaximized     ' format plein écran
xls.Visible = True                ' visible à l'écran
xls.ShowWindowsInTaskbar = True   ' visible dans la barre de tâches
xls.DisplayFormulaBar = True      ' affichage de la barre de formule
xls.Caption = "Mon fichier Excel"
xls.Workbooks.Add     ' ajout d'un classeur Excel sinon vous aurez une instance d'Excel mais pas de classeur
xls.Worksheets(1).Name = "Feuille1"
xls.Worksheets(2).Name = "Feuille2"
xls.Worksheets(1).Range("D1").Font.Bold = True  ' la cellule D1 est en gras
xls.Worksheets(1).Columns("A:A").EntireColumn.AutoFit  'ajustement automatique de la colonne A
xls.Worksheets(1).PrintOut Copies:=1	' imprimer 1 copie de la feuille 1

' je vais pas tous les faire parce que les possibilitées sont énormes.
' une bonne astuce pour voir les commandes correspondant à ce que vous 
' souhaitez faire est de créer un fichier Excel, de lancer l'enregistrement  d'une macro, 
' d'exécuter les opérations voulues (changement police, ajustement colonne etc), 
' d'arrêter l'enregistrement de la macro et d'aller voir le code qui a été créé. Perso c'est
' comme ça que j'ai procédé.

Conclusion :


' PS: je précise que j'ai arrêté de programmer depuis pratiquement 2 ans donc il se
' peut que je laisse traîner des erreurs à droite à gauche, désolé si c'est le cas. Après
' c'est à vous de vous inspirer de ce code (ou pas d'ailleurs), de fouiner sur le net et
' surtout utilisez la librairie MSDN, elle m'a sauvé la mise plus d'une fois.

' Bon courage et bonne prog

A voir également

Ajouter un commentaire

Commentaires

Tycoon87
Messages postés
1
Date d'inscription
mardi 19 juin 2018
Statut
Membre
Dernière intervention
19 juin 2018

Bonjour a tous.
Je ne ne suis pas un expert en programmation. Vraiment pas. Environ 20h de formation a l'école sur visual basic.

Je bidouille présentement pour le plaisir, un programme qui doit utiliser des données sur internet (ou dans excel) et en compiler de nouvelles vers un fichier Excel. Je crois que ce code va m'aider grandement. Cependant, je vais devoir faire cette manoeuvre plusieurs fois.
Disons que je dois transmettre des données de plusieurs "personnes de mon entreprise dans mon fichier Excel.
Monsieur A
Monsieur B
Madame C
Monsieur C ...
Est ce que ça serait possible d'associer chaque noms a des données spécifique. j'aimerais par exemple: sélectionner Monsieur A dans une liste déroulante et ainsi récupérer les données de excel vers vb et par la suite en appuyant sur un bouton transférer des statistiques vers un autre fichier Excel. J'espère que ma question vous sembles clair.!

Présentement je récupère les données sur internet par moi même, ni écrit ces données dans mon programme et en appuyant sur un bouton je génère mes statistiques qui sont transféré vers un datagridview. Ensuite je copie et collé dans Excel. Ça fonctionne bien sauf que c'est très long et sachant que je dois le faire environ 300 fois....sivous avez une idée je suis preneur.merci
ammar06
Messages postés
1
Date d'inscription
vendredi 25 décembre 2015
Statut
Membre
Dernière intervention
25 décembre 2015

BONNE PROGRAMME
cs_jpduclos
Messages postés
1
Date d'inscription
mardi 31 mai 2011
Statut
Membre
Dernière intervention
31 mai 2011

Bonjour, je suis nouveau sur ce forum, et je remercie tous les participants qui m'ont aidé involontairement par leurs remarques pertinentes.

Au sujet de l'import-export de cellules Excel dans un pg en VB6,j'ai utilisé l'une des idées de ce forum, et ça marche :
(il s'agit de mettre des données issues de Tableau(x,y) dans un fichier Excel, seulement si la valeur de la case est différente).

Set xls = GetObject(CheminFichier$) 'instanciation de l'objet (qui devient ici le fichier excel indiqué)

CheminFichier$ est le chemin complet,sinon, ça ne marche pas. Exemple: C:\2011\Fichier.xls
On trouve facilement ces indications par un clic droit, et Propriétés
' *
' * ' export de données
Pour faire une boucle, j'utilise des chaînes de caractères. Je pense que ("B" & i ) peut rebuter VB, je pense qu'il vaut mieux écrire ("B" & str$(i)). Mais il faut se débarrasser de l'espace devant i dans la chaîne. Alors, remplacer str$(i) par right$(str$(i), len(str$(i))-1). Ca devrait marcher !

With xls
CX$ = "2345678"
CY$ = "ABCDEFG"
For X = 0 To 6
For Y = 0 To 6
If xls.worksheets("Altitudes").range(Mid$(CY$, Y + 1, 1) & Mid$(CX$, X + 1, 1)).Value <> Tableau(X, Y) Then

.worksheets("Altitudes").range(Mid$(CY$, Y + 1, 1) & Mid$(CX$, X + 1, 1)).Value = Tableau(X, Y)
End If
Next Y
Next X
End With

Et ça marche au poil !
spluiss
Messages postés
27
Date d'inscription
lundi 30 mai 2005
Statut
Membre
Dernière intervention
4 avril 2013

c'est vrai que ce code ne semble pas reclamer de biblio excel d'apres son code. Je reste depassé par le domaine mais sans doute que les élément permettant de gérer le format xls est contenu dans lme programme OLEDB. Je pense que de toute façon il faut faire le code, tu verra ensuite si tu as des surprises. En tout cas, le programme dont tu parles (excel-->SQL) a forcemment besoin de connaitre le format excel, il faut verifier comment il le sait pour etre sur que tu n'as rien a rajouter a ton code.
rakicky
Messages postés
3
Date d'inscription
mercredi 6 février 2008
Statut
Membre
Dernière intervention
27 juillet 2009

en faite nous avons dejà un programme codé par une autre personne qui s'execute sur ce meme serveur et qui sert a chargé des données d'un fichier excel vers une base SQL Server, mais je pense que le programme utilise OLEDB et des requetes SQL. et je me pose donc la question si le programme marche sur ce server pourqoui est ce que je ne pourrai pas utiliser votre methode?

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.