IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Conversion VBA -> C#


Sujet :

C#

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2010
    Messages : 69
    Points : 63
    Points
    63
    Par défaut Conversion VBA -> C#
    Bonjour Developpeur & Developpeuze,

    j'ai besoin de votre aide pour convertir du code de VBA en C#
    je suis sur visual studio 2008.
    j'ai parcourue google de fond en comble sans succès.
    je requiert donc votre aide

    je vous en remercie d'avance

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    Public Sub sommaire()
     
    ' déclaration des variables
    Dim sld As Slide
    Dim sldPrecedente As Slide
    Dim shp As Shape
    Dim titreSlide As Shape
    Dim numDiapo As Shape
    Dim strTable As String
    Dim strNumDiapo As String
    Dim rgeSommaire As TextRange
    Dim i As Integer
     
    ' on parcourt les diapos pour récupérer les informations des titres
    For i = 3 To ActivePresentation.Slides.Count
        Set sld = ActivePresentation.Slides(i)
        Set sldPrecedente = ActivePresentation.Slides(i - 1)
        ' on test s'il y a une zone de titre
        ' on ajoute que celles qui ont un titre différent de la précédente
        If sld.Shapes.HasTitle Then
            If (sld.Shapes.Title.TextFrame.TextRange.Text <> sldPrecedente.Shapes.Title.TextFrame.TextRange.Text) Then
            strTable = strTable & vbCrLf & sld.Shapes.Title.TextFrame.TextRange.Text
            strNumDiapo = strNumDiapo & vbCrLf & i
            End If
        End If
    Next i
     
    ' on supprime dans chaque slide les zones de texte TableMatiere
    For Each sld In ActivePresentation.Slides
        For Each shp In sld.Shapes
            If shp.Name = "TableMatiere" Then
                shp.Delete
            End If
        Next shp
    Next sld
     
    ' on va ajouter le sommaire à la première diapo
    Set sld = ActivePresentation.Slides(15)
     
     
    Set titreSlide = sld.Shapes.AddTextbox(msoTextOrientationHorizontal, 200, 20, 400, ActivePresentation.PageSetup.SlideHeight / 2)
    Set shp = sld.Shapes.AddTextbox(msoTextOrientationHorizontal, 50, 100, 600, ActivePresentation.PageSetup.SlideHeight / 2)
     
    ' on créé un cadre en plus pour mettre les numéros de diapo
    Set numDiapo = sld.Shapes.AddTextbox(msoTextOrientationHorizontal, 650, 100, 100, ActivePresentation.PageSetup.SlideHeight / 2)
     
    shp.TextFrame.TextRange.Text = strTable
    shp.TextFrame.TextRange.Font.Size = 24
    numDiapo.TextFrame.TextRange.Text = strNumDiapo
    numDiapo.TextFrame.TextRange.Font.Size = 24
     
    titreSlide.TextFrame.TextRange.Text = "Sommaire"
    titreSlide.TextFrame.TextRange.Font.Size = 28
    titreSlide.TextFrame.TextRange.Font.Color.RGB = RGB(128, 128, 128)
     
     
    End Sub

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2007
    Messages : 82
    Points : 89
    Points
    89
    Par défaut
    C'est bien pour modifier un powerpoint? Voilà un début:
    http://support.microsoft.com/kb/308825

  3. #3
    Membre éclairé Avatar de ppphil
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2007
    Messages : 612
    Points : 685
    Points
    685
    Par défaut
    Il y a une page qui permet de traduire VB-C# sur le site. (je n'ai plus l'adresse). Mais ça ne fonctionne pas très bien.
    Ce que je te propose :
    1. télécharge et installe EconNetVert
    2. fais un nouveau projet VB dans visual studio et copie y ton code. De cette manière la syntaxe vb sera déjà corrigée (automatiquement) afin d'obtenir un code plus ou moins correct.
    3. reprends ce code vb corrigé et traduis-le à l'aide d'EconNetVert
    4. reprendre tout le code c# ainsi généré et le réviser. Tout ne sera pas traduit correctement.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Comme pphil, convertit d'abord en VB.Net.
    Et puis peut-être que tu n'as pas besoin d'aller plus loin. Une fois que tu l'as convertit en VB.Net, tu peux en faire un assembly et l'appeler tel quel en C#.

    Après on dirait que tu cherches à faire un complément PowerPoint. Pour avoir accès aux fonctions de l'API d'Office en .NET, il te faudra les VSTO, et créer un projet de type complément PowerPoint. Dans Visual Studio 2008 je crois qu'elles ne sont pas installées par défaut.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2010
    Messages : 69
    Points : 63
    Points
    63
    Par défaut
    bonjour,
    jai du le faire à la main (traduire ligne par ligne), c'est faisable mais pas évident.
    pour ceux que ca intèresse,
    voila

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    /// <summary>
            ///if you want to make a summary
            /// </summary>
            ///
            public static void MySummary()
            {
                // déclaration des variables
                String strTable = "";
                String strNumDiapo = "";
                PowerPoint.Application app = Globals.ThisAddIn.Application;
                PowerPoint.Presentation presDest = app.ActivePresentation;
                PowerPoint.Selection selection = app.ActiveWindow.Selection;
     
                //I need the number of slide to browse all my slides
                int NumberOfSlide = presDest.Slides.Count;
     
                //I go through my slides
                for (int i = 1; i <= NumberOfSlide; i++)
                {
                    // Important: Before you make your summary, you search other Slide contains Summary
                    //and you delete it
                    presDest.Application.ActiveWindow.View.GotoSlide(i);
                    presDest.Slides[i].Shapes.SelectAll();
                    //I go through my shape
                    foreach (PowerPoint.Shape shape in selection.ShapeRange)
                    {
                        try
                        {
                            if (shape.TextFrame.TextRange.Text == "Content")
                            {//I delete my Summary Slide
                                presDest.Slides[i].Delete();
                                NumberOfSlide = NumberOfSlide - 1;
                                break;
                            }
     
                        }
                        catch // If we fail, we just skip and try the next item
                        {
                            continue;
                        }
                    }
                }
     
                presDest.Slides.AddSlide(1, presDest.SlideMaster.CustomLayouts[1]);
                //we go through our slides to retrieve information from titles
                for (int i = 2; i <= NumberOfSlide+1; i++)
                { 
                    // We test if we are a title area
                    // We add that if it is a different title from the previous
                    if (presDest.Slides[i].Shapes.HasTitle == Microsoft.Office.Core.MsoTriState.msoTrue)
                    {
                        if (presDest.Slides[i].Shapes.Title.TextFrame.TextRange.Text != presDest.Slides[i - 1].Shapes.Title.TextFrame.TextRange.Text)
                        {
                            strTable += ("\r\n" + presDest.Slides[i].Shapes.Title.TextFrame.TextRange.Text);
     
                            strNumDiapo += "\r\n" + i.ToString();
                        }
                    }
                }
                presDest.Slides[1].Delete();
     
                //I create a white page
                // i use the Layout number seven
                presDest.Slides.AddSlide(1, presDest.SlideMaster.CustomLayouts[7]);
                  // i take my white slide and i create shape
                //I adjust the size of my differents shapes
                Slide sld = presDest.Slides[1];
                Shape titleShape = sld.Shapes.AddTextbox(Microsoft.Office.Core.MsoTextOrientation.msoTextOrientationHorizontal, 300, 20, 400, presDest.PageSetup.SlideHeight / 2);
                Shape shp = sld.Shapes.AddTextbox(Microsoft.Office.Core.MsoTextOrientation.msoTextOrientationHorizontal, 50, 100, 600, presDest.PageSetup.SlideHeight / 2);
                Shape numDiapo = sld.Shapes.AddTextbox(Microsoft.Office.Core.MsoTextOrientation.msoTextOrientationHorizontal, 650, 100, 100, presDest.PageSetup.SlideHeight / 2);
     
                 //i insert my differents title and pages
                shp.TextFrame.TextRange.Text = strTable;
                shp.TextFrame.TextRange.Font.Size = 24;
     
                numDiapo.TextFrame.TextRange.Text = strNumDiapo;
                numDiapo.TextFrame.TextRange.Font.Size = 24;
     
                titleShape.TextFrame.TextRange.Text = "Content";
                titleShape.TextFrame.TextRange.Font.Size = 28;
                titleShape.TextFrame.TextRange.Font.Color.RGB = Color.FromArgb(128, 128, 128).ToArgb();
                presDest.Application.ActiveWindow.View.GotoSlide(1);
     
            }
    merci à tous pour votre aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Conversion VBA Excel vers VB Net
    Par Jibse dans le forum VB.NET
    Réponses: 4
    Dernier message: 01/11/2011, 05h08
  2. Conversion VBA to SQL SERVER
    Par mino26tz dans le forum Access
    Réponses: 12
    Dernier message: 03/12/2010, 13h30
  3. Conversion VBA to SQL SERVER
    Par mino26tz dans le forum MS SQL Server
    Réponses: 0
    Dernier message: 01/12/2010, 18h19
  4. [AC-2003] Fonction de conversion VBA <-> SQL
    Par jax54000 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 30/03/2010, 11h43
  5. Conversion VBA à VB
    Par Turtur dans le forum VBA Access
    Réponses: 7
    Dernier message: 01/12/2008, 13h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo