zefzszaazdazd
zefzszaazdazd
personne ne répond sur ce forum !!!
Bonjour,
Si si on répond, mais faut pas non plus exagérer, on a pas que ça a faire .... et on y peut rien si tu ne sais pas faire ce qu'on te demande, c'est pas sur nous qu'il faut gueuler !!!
De plus ma réponse ne va pas te plaire puisque je vais te demander pourquoi tu fais encore de l'interop sachant que c'est obsolète depuis excel 2007 ?? Et non pas par exemple de l'EEplus ? et finalement te renvoyer vers ce topic d'hier, qui a un petit exemple de code, à améliorer bien sur , montrant comment on remplace tout ton code (enfin presque tout) avec 3 lignes, pour un meilleur résultat.
Bonne migration vers EEPlus
J@ck.
Pas de réponse par MP, merci.
Penser au ça fait plaisir
ce n'est pas dont j'ai besoin , et j'utilise l'interop parceque c'est la seule option que je connais , sinon , depuis hier plus de 40 qui ont vu la discussion et personne ne répond , c'est pour ca que je râle , et je ne t'ai pas demander ni a toi ni a quelqu'un d'autre de faire mon travail
Tu codes avec une techno de plus de 10ans (un siècle IRL), alors faut pas s'étonner que personne ne répond ! c'est juste que la moitié de l'auditoire était en couche culotte quand certain faisaient de l'interop. De plus 40 vues c'est rien !
Donc pour au moins la 5éme fois (oui je ne suis remonté qu'a juin 2017) je te conseil de passer par EEPlus, pour un mec comme toi qui fait de l'interop, passer à EEPlus c'est juste une blague... tu as une référence à ajouter, tout comme tu as rajouté la référence vers Microsoft.Office.Interop.Excel, puis tu écrits 4 lignes de code, une pour récupérer une liste d'object (ou une dataTable ce qui sera visiblement ton cas), une pour créer l'instance ExcelPackage en lui donnant le chemin du fichier, une pour ajouter un onglet (ah tiens juste une ligne ...) et une pour remplir l'onglet à partir de la dataTable ...
M'enfin je dois devenir vieux et c*n ! t'es le 2ème cette semaine a qui je propose de remplacer 50 lignes de code spaghetti en 5 lignes de code facilement maintenables et évolutives, mais je me fais envoyer bouler, par un joyeux : je fais que ce que je connais . J'ai envie de dire que tu vas pas faire ça longtemps...
Passer à EEPlus prend pas une heure, en comptant le petit prog de test que tu te feras pour vérifier que je dis pas trop de c*nn*ries.
J@ck.
[EDIT] Et merci pour le pouce rouge ! ca va encourager les autres helpers à t'aider...
Pas de réponse par MP, merci.
Penser au ça fait plaisir
tu vas trouver ça bizarre , mais l'interop c'est la première chose que j'ai connu pour faire ce travail , je ne connais pas ce EPPLUS , et je ne sais pas comment ça marche .
PS: j'ai 25 as je suis peut être moins jeune que toi .
Ouai et donc c'est le seul que tu ne feras jamais ?
Et avant de "faire ce travail" tu connaissais interop ?
Perdu !
Bon on y arrivera pas avec EPPlus, j'ai bien compris ! mais j'espère quand même que tu comprendra mes interrogations de voir un jeune développeur (ingénieur de surcoit) qui reste buté à ne pas vouloir tester, en moins d'une heure, une solution qui lui aurait fait gagner bien du temps. Je pari ma tournée de café que si tu passe, allé soyons sympa, 2 heures à tester EPPlus, tu regrettera de ne pas l'avoir fait depuis le mois juin... Et surtout, tu ne reviendra jamais a l'interop.
Sinon j'ai trouvé ça
J@ck.
Pas de réponse par MP, merci.
Penser au ça fait plaisir
je ne sais pas pourquoi le contenu de mon message a été effacé , bref j'ai trois boutons comme tu vois sur la capture d'écran , chaque bouton me génère des statistiques que j'exporte ensuite avec le bouton Excel en fichier Excel , mais maintenant je voudrais regrouper tous les boutons dans un seul bouton puis générer un seul fichier qui contient 3 sheets une pour chaque contenu des anciens boutons
Si tu as déja le code qui génère une worksheet pour chacun des boutons, il suffit de les ajouter à un même workbook au lieux d'en recréer un.
Poste le code que tu as.
voici le code que j'utilise pour générer le fichier excel , en fait ce n'est pas pour chaque bouton , mais le bouton excel exporte ce qui s'affiche sur le DatagridView a partir de chaque bouton , comme sur la capture d'écran dans la description :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 Dim App_xls As Object Dim Lig_cpt, Col_cpt As Integer App_xls = CreateObject("Excel.Application") App_xls.workbooks.add() App_xls.visible = True Try For Col_cpt = 0 To DataGridView1.ColumnCount - 1 App_xls.ActiveSheet.cells(1, Col_cpt + 1).value = DataGridView1.Columns(Col_cpt).HeaderText Next For Lig_cpt = 0 To DataGridView1.Rows.Count - 1 For Col_cpt = 0 To DataGridView1.ColumnCount - 1 If IsNumeric(DataGridView1.Item(Col_cpt, Lig_cpt).Value) Then App_xls.ActiveSheet.cells(Lig_cpt + 2, Col_cpt + 1).value = CDbl(DataGridView1.Item(Col_cpt, Lig_cpt).Value) Else App_xls.ActiveSheet.cells(Lig_cpt + 2, Col_cpt + 1).value = DataGridView1.Item(Col_cpt, Lig_cpt).Value End If Next Next Catch ex As Exception End Try App_xls.Rows.Item(1).Font.Bold = True App_xls.Rows.Item(1).HorizontalAlignment = 3 App_xls.Columns.AutoFit() MessageBox.Show("Fichier généré!")
Pas de réponse par MP, merci.
Penser au ça fait plaisir
je n'ai pas compris comment ajouter ce bout de code dans mon code vu que j'affiche chaque bouton dans la même DatagridView , je dois peut-être créé deux autre gridview pour affiché chaque bouton séparément ?
Isole cette partie code dans une fonction que tu appelles FillActiveWorksheet avec comme paramètre un objet App_xls
Ensuite dans ta fonction d'export tout en un tu appelleras 3 fois cette fonction en chargeant auparavant les données de ta datagridview et en ajoutant une worksheet.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 Try For Col_cpt = 0 To DataGridView1.ColumnCount - 1 App_xls.ActiveSheet.cells(1, Col_cpt + 1).value = DataGridView1.Columns(Col_cpt).HeaderText Next For Lig_cpt = 0 To DataGridView1.Rows.Count - 1 For Col_cpt = 0 To DataGridView1.ColumnCount - 1 If IsNumeric(DataGridView1.Item(Col_cpt, Lig_cpt).Value) Then App_xls.ActiveSheet.cells(Lig_cpt + 2, Col_cpt + 1).value = CDbl(DataGridView1.Item(Col_cpt, Lig_cpt).Value) Else App_xls.ActiveSheet.cells(Lig_cpt + 2, Col_cpt + 1).value = DataGridView1.Item(Col_cpt, Lig_cpt).Value End If Next Next Catch ex As Exception End Try App_xls.Rows.Item(1).Font.Bold = True App_xls.Rows.Item(1).HorizontalAlignment = 3 App_xls.Columns.AutoFit()
En gros ca donne un truc du style (je connais pas bien la syntaxe vb)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 SuperFonctionExport Dim App_xls As Object Dim Lig_cpt, Col_cpt As Integer App_xls = CreateObject("Excel.Application") App_xls.workbooks.add() App_xls.visible = True ChargeDatagridViewBouton1 FillActiveWorksheet ( App_xls) App_xls.ActiveWorkbook.Sheets.Add() ChargeDatagridViewBouton2 FillActiveWorksheet ( App_xls) ChargeDatagridViewBouton3 FillActiveWorksheet ( App_xls) MessageBox.Show("Fichier généré!")
mais tout ca reste dans un seul bouton c'est ca ?
Dans le bouton que tu souhaites.
la fonction que tu appelle FillActiveWorksheet elle doit contenir quoi ?
c'est quoi ChargeDatagridViewBouton1 ??
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager