Traduction d'une macro VB en C#

[Résolu]
Signaler
Messages postés
11
Date d'inscription
jeudi 1 juin 2006
Statut
Membre
Dernière intervention
12 mai 2009
-
Messages postés
2368
Date d'inscription
mardi 17 avril 2001
Statut
Modérateur
Dernière intervention
26 décembre 2007
-
alors voila, je suis actuellement en stage pour mon DUT informatique et on me demande pour l'instant de traduire une macro VB sous forme d'application Microsoft Visual C#.

Il me faut piloter un fichier Excel. Mais je bloque sur une ou deux ligne de codes alors si quelqu'un pouvait m'aider, je serais ravi.

Code de la macro:

Public Sub MiseEnForme(s() As ServiceConducteur, nbservices As Integer)

Dim i_srv As Integer

Dim sh As Variant
For Each sh In ActiveWorkbook.Worksheets
    If sh.Name = SHEET Then sh.Delete
Next

Set sh = ActiveWorkbook.Worksheets.Add(ActiveWorkbook.Worksheets(1))
sh.Name = SHEET

row = 1
derniere_ligne = 1



Mon problème réside dans la collection ActiveWorkbook.

Je ne sais pas comment le traduire en C#...

Merci d'avance de vos conseils

8 réponses

Messages postés
2368
Date d'inscription
mardi 17 avril 2001
Statut
Modérateur
Dernière intervention
26 décembre 2007
21
Pas de with il faut recopier la propriété a chaque fois.

Pour les feuilles tu les récupères comme çà
Excel.Sheets sheets = theWorkbook.Worksheets;

Pour tes celulles :
Excel.Range range = worksheet.get_Range()

Les autres objets s'appelle pareils.

::|The S@ib|:: MVP C#.NET
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
41
Salut, pour faire de l'Automation ave Excel il faut ajouter le composant COM d'Excel à ton projet. Soit tu l'ajoutes dans la boite à outils via Visual Studio soit tu l'importes avec tlbimp.exe.
Messages postés
2368
Date d'inscription
mardi 17 avril 2001
Statut
Modérateur
Dernière intervention
26 décembre 2007
21
Peut être vaudrait-il mieux t'orienter vers une application VSTO (Visual Studio Tools for Office).

::|The S@ib|:: MVP C#.NET
Messages postés
11
Date d'inscription
jeudi 1 juin 2006
Statut
Membre
Dernière intervention
12 mai 2009

ok merci les gars mais voila, mon maitre de stage veut absolument que ce soit fait avec Microsoft Visual C# 2005 ...

Lutinore j'ai ajouté le composant COM approprié mais reste toujours le meme problème...
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
41
As tu rajouté le bon namespace !? ( using MachinChose; ) Utilise l'explorateur d'objets pour voir le namespace.
Messages postés
11
Date d'inscription
jeudi 1 juin 2006
Statut
Membre
Dernière intervention
12 mai 2009

alors le namespace a bien été rajouté. J'ai fais des test de pilotage d'excel de base (ouvrir un fichier, lire une ou deux cellules et les modifier. Enregistrer le fichier modifié). Tout se passe bien. Donc coté namespace pas de problème. Le vrai problème réside dans le fait que je ne sais pas comment activer les feuilles de calcul, et une fois le traitement effectué, passer à la suivante voire la précédente.

Pour ceux que ca intéresserait, j'utilise un
using Microsoft.Office.Interop.Excel;

De plus en VB la macro utilisait:

Range(Cells(derniere_ligne, 1), Cells(row - 1, derniere_colonne)).Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With


Je ne sais pas non plus comment faire le "With -> End With" en C#

Désolé de vous déranger pour ça mais j'avoue être totalement perdu....
Messages postés
11
Date d'inscription
jeudi 1 juin 2006
Statut
Membre
Dernière intervention
12 mai 2009

merci beaucoup
Messages postés
2368
Date d'inscription
mardi 17 avril 2001
Statut
Modérateur
Dernière intervention
26 décembre 2007
21
Deriens.

::|The S@ib|:: MVP C#.NET