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
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
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.
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?
Je crois avoir repondu un peu vite,car pour s'executer ton programme a besoin d'une librairie excel, à l'epoque de mon programme c'etait "microsoft excel 10.0 object library". Pas sur que cette librairie soit rattaché sur ton executable lors de la compilation et qu'elle prendra effet sur ton serveur. Je pense finalement qu'il faut quelque element sur le serveur pour reconnaitre le format xls, mais a tenter...
J'avoue tre un peu depassé mais suis interessé par la reponse. Je me demande si Visual a vraiment besoin d'une installation complete excel ou si il renferme suffisemment d'elements pour gerer un format xls. Peut etre que des dll sont a rajouter.
Je pense que visual pourra gerer ton soucis mais avec microsoft faut se mefier de tout.
Merci de dire comment ça s'est passé...?
je voulais poser une question a propos de ce code, en faite je travail sur un projet de meme principe mais l'executable sera executé sur server et dessus il n'y a pas Excel d'installer.
J'ai utilisé donc oledb pour me connecter sur le fichier. Mais le probleme c'est qu'au chargement des donnée dans Excel j'ai cet erreur: [Microsoft][ODBC Excel Driver] Data type mismatch in criteria expression.
Ma question c'est que si j'utilise la methode que vous avez utiliser pour ce code et qu'il faut donc referencer l'Excel, est ce que ca marchera quand j'execute le programme sur le server là où il n'y pas Excel.
Salut a tous ! je suis un jeune étudiant en dévelopement infomatique et j'ai besoin d'aide svp.
je programme un projet en visual studio 2005 et j'ai besoin d'exporté des données en excel.
Merci Trolix pour le code, mais je ne sais pas comment ajouter une référence :s . Quand je clique sur l'onglet projet => Ajouter une référence => Microsoft Excel 11.0 Object Library et que je clique sur Ok, je crois que sa ne marche pas parceque visual studio ne reconné pas "excel.workbook lors" lors de la déclaration => dim xls as excel.workbook.:s
Merci de bien vouloir m'aider car j'ai vraiment besoin de votre aide. ^-^
Reda ^-^
je ne sais pas si ma solution est la bonne mais je me demandais si le format de ton .csv est en ascii. Car dans ce cas tu enregistre un fichier ascii avec tes point virgule et tout le bon format, et tu l'enregistre avec l'extension ".csv" . Pour extraire tes colonne la possibilité est de faire un traitement de text et a chaque fois que vb rencontre le caractère de séparation de csv, il crée une nouvelle variable, ou change d'indice pour le tableau. Pour ce qui est de la placer dans une base access, je ne sais pas comment t'aider, je ne l'ai jamais fais, mais sur ces forum tu peux peut etre trouver un truc...
salut
je suis dans une situation grave
en fait je suis débutante en vb6
j'effectue mon stage au sein d'une entreprise
mon stage est obligatoire ainsi que la validation
dans tout je vais expliquer: mon pb est que je veux acceder à des fichiers .csv(séparateur camma) il ressemble à excel mais à la place de colonnes on trouve des pts virgules
bref je veux savoir est ce que existe une méthode pour acceder à des fichiers à partir de vb6 et extraire des colonnes.
ou extraire les colonnes que j'ai besoin et les impoter à ACCESS.
NB: je ne sais pas comment meme manipuler excel avec vb et je ne sais pas pour quoi tu parle tjs du macro et je sais c'est quoi et quel est son utilité
désolé pour le dérrangement mais ma situation est grave
merci pour votre aide
et merci pour toute personne qui veut m'aider car je veux déprimée il me reste presque deux semaines pour donner l'application à l'entreprise
merci de ta sollicitation mais je ne programme plus depuis des années. Je serais bien incapable de te dire d'où vient le problème, d'autant plus que je ne connais pas VB2005Express.
Il y a surement quelques différences avec VB6 donc je suppose que le problème vient d'une option quelconque ou d'une référence.
Bonjour Trolix
je suis novice en programmation et je cherchai comment importer exporter des données dans un fichier excel depuis VB2005Express quand j'ai découvert ton code. Je l'ai donc saisi et j'ai ajouté la référence Microsoft Excel 9.0 Object Library (ongletCOM) car c'est la seule qu'on me propose. J'utilise Office 2000.
Quand je lance le programme il me retourne l'erreur suivante : L'exception System.Exception n'a pas été gérée - Message="Impossible de créer le composant ActiveX."
Après avoir cherché une solution dans la bibliothèque Microsoft de VB2005 ainsi que sur plusieurs forums je me suis décidé à m'adresser directement à toi.
Qu'en penses-tu et peux tu m'aider à résoudre ce problème. D'avance merci.
Bonjour,
j'ai lu ton code et je voulais savoir une chose. En fait moi je veux exporter mes données access dans mon formulaire excel pour ensuite les mettre en graphiques. Est-ce que le principe est le même ? Si j'ai bien compris, je dois dire que le résultat de telle case access va dans tel case excel ?
Seulement le nombre de mes cases est aléatoire donc comment faire ?
Vieux motard que jamais !!!
A l'attention de "SPLUISS" et des autres. J'ai rencontré le même problème; tout se déroule corectement, mais rien dans les cellules.
Alors j'ai cherché dans d'autre application, et en ajoutant ceci, ça fonctionne : Workbooks.Open Filename:="c:\BASE.XLS"
Cordialement.
Merci pour ces informations...Cela faisait trois jours que je cherchais un moyen simple pour faire passer un parametre de VB a une Macro Excel. Votre code m'a donne l'idee d'exporter le parametre de VB, de le copier dans une cellule Excel puis d'aller le lire. :-)
bonjour , je rencontre un probleme avec l export vers excel , j ai un programme qui via un bouton appelle excel , et dessine un graphe , cette methode marche bien pour tracer le 1 er graphe mais apres plus moyen de dessiner un 2 eme graphe , j obtiens une erreur : method sheets of object global failed , bref on dirait qu il ne sait pas quelle instance d excel il doit considerer . quelqu un a t il une solution hormis tuer l application excel.exe a chaque appui du bouton ?
merci Trollix
ton code ma été très utile pour remplir un document word à partir d'excel, je sauvegarde même les données insérer dans la form dans le fichier excel.
Au boulot on a office 97 et 2000.
Il existe donc 2 version des fichier "Microsoft Excel xx.x Object Library"
Mon fichier étant sur le réseau tous fonctionne bien si j'ouvre mon fichier avec une version 97 mais plante avec une version 2000.
Existe t-il un moyen pour appeler la version 8 ou 9 suivant que je travail avec un word 97 ou 2000.
Je cherche à mettre des number format autre que les pourcentages, genre un type currency (séparateur de millier et la valeur de la monnaie: ? par exemple). Mais j'ai pas trouvé!!
j'aimerais savoir comment formater plusieurs colonnes en même temps, pour une ça marche bien :
OxlWbk.ActiveSheet.Columns("Q:Q").Select
'--> avec OxlWbk correspondant à mon classeur
Selection.NumberFormat = "0.00%"
Mais quand j'essaye de mettre plusieurs colonnes, ça marche plus :-(
Pourquoi faire simple quand on peut faire compliqué ?!
Voici une réponse au pb ci-dessus (après un peu de recherche)
Sub export_data()
Range("A1:B13").Select 'selectionne une plage de données dans le classeur source ou se trouve cette macro
Selection.copy 'copie dans le presse papier la selection
ChDir "C:\...."
Workbooks.Open Filename:= _
"C:\...\cible.xls" 'ouvre le fichier cible
Range("C1:D13").Select
ActiveSheet.Paste 'colle la selection à l'endroit souhaité
Windows("source.xls").Activate 'fenetre fichier source active
Bonjour Trolix et merci beaucoup pour ton aide et ta réponse rapide!
Excel n'aime pas trop " range("B" + i) " il comprend pas !
j'ai arrangé ça comme cela :
mais ça oblige à faire de la copie cellule par cellule, c'est un peu lourd à saisir si je dois copier 300 cellules vers un autre classeur !
ça doit surement pouvoir s'allerger ??
Sub copy()
Dim xls As Excel.Workbook
Set xls = GetObject("C:\...\mafeuille.xls")
With xls
Dim i(1 To 3) As Integer 'ici tableau à une colonne mais peut etre multidimensionnel sous la forme dim i(1 to 10, 1 to 10) as integer par exemple
i(1) = Range("A1")
i(2) = Range("A2")
i(3) = Range("A3")
Dim j As Integer
For j = 1 To 3
xls.Worksheets(1).Range("B1").Value = i(1)
xls.Worksheets(1).Range("B2").Value = i(2)
xls.Worksheets(1).Range("B3").Value = i(3)
Next
End With
pour exporter une plage de cellules vers un autre classeur je crois qu'il n'y a pas d'autre choix que de faire une boucle.
Cela donne un truc du genre:
Dim i as integer
for i= 0 to 10
xls.worksheets(1).range("B" + i).Value = i
Next
Voilà un exemple qui mettra la valeur i dans la cellule "B valeur de i".
Après à toi d'adapter en fonction de tes besoins mais pour répondre clairement à ta question il n'existe pas de méthode pour sélectionner une plage de cellules d'un seul coup.
Bonjour,
Je suis débutante en vba, je dois faire quelques macros pour les besoins d'un stage, je connais très mal la syntaxe.
Je me sers de la partie export de données de ce code:
' 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
Avec ce code, on exporte un chiffre précis dans un autre classeur excel.
Je souhaiterais de la même façon exporter une plage de cellules.
Merci d'avance
salut
merci pour ta reponse tres rapide mais je suis desolé mais je rencontre denouveau un blem :
le programme tourne comme il faut mais qd je verifie dans le fichier excel specifié il n'y a rien dans les cellules designés et je ne vois pas du tout, je n'ai prix que la partie expotation de ton projet :
Dim xls As excel.Workbook
Set xls = GetObject("C:\Esstin\projet 4A\Programme\balayeuse\123456.xls") 'instanciation de l'objet (qui devient ici le fichier excel indiqué)
ligne = "opérateur des test : " + frm_conclusion.txt_opérateur.Text
With xls
.Worksheets(1).range("A2").Value = "coucou"
End With
ligne = vbCrLf + "type de machine : " + frm_conclusion.txt_typemachine.Text
With xls
.Worksheets(1).range("A3").Value = "bonjour"
End With
Set xls = Nothing
pourrais tu voir ce qui cloche
d'avance merci pour tout et excuse moi de faire encore appel a toi
Normalement il faut ajouter en référence "Microsoft Excel 10.0 Object Library"
Sachant que 10.0 correspond à Office XP, donc si tu as une autre version d'Office il faut adapter la référence.
Par contre je ne les ai pas en tête donc...
Il me semble que c'est la seule explication à ton problème (que j'ai déjà eu d'ailleurs) donc ça devrait être résolu par ce biais.
Je vais essayer de vérifier ce soir...
salut
ton code semble bien mais je recupere un messge d'erreur et ma faible experience ne m'aide pas pour specifier le type.
le message d'erreur est : "type defini par l'utilisateur non defini"??? pour la ligne "Dim xls As Excel.Workbook"
peux tu me dir ce que je dois inserer dans mon projet ou les lignes de code a ajouter a ton programme pour eviter ce probleme.
Merci beaucoup de ta reponse
ciao
Kler tro nikel ce code !!
Mais il faut pour mon projet que je puisse faire défiler dans une listbox (combobox ou autre) toutes les cellules A1 de chaque fichier excel...
Est ce que c possible et dans ce cas est ce que kelkun ou l'ingénieux Trolix peut m'aider !!?? Merci d'avance
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
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 !