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 :

[Office][VBA Excel> C#] Comment transcrire cette macro ?


Sujet :

C#

  1. #1
    Membre confirmé Avatar de Kcirtap
    Inscrit en
    Juillet 2005
    Messages
    553
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 553
    Points : 523
    Points
    523
    Par défaut [Office][VBA Excel> C#] Comment transcrire cette macro ?
    Bonjour,

    J'essaie d'effectuer la conversion de la macro VBA Excel suivante en C# :

    Voici le code VBA :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Sub CreationRond()
     ActiveSheet.Shapes.AddShape(msoShapeOval, 179.25, 76.5, 393#,
     393#).Select
     Selection.Characters.Text = "Ceci est un texte dans mon rond."
     Selection.HorizontalAlignment = xlCenter
    End Sub
    Ma sélection est donc faite

    ... et je deviens complètement fou avec cette sélection ...

    Le code C# que j'ai essayé :
    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
     
    object oMissing = System.Reflection.Missing.Value ;
    Excel.Application excelApp = null ;
    Excel._Workbook classeur = null ;
    Excel._Worksheet feuille = null ;
    Excel.Shape forme = null ;
    Excel.Shapes formes = null ;
     
    excelApp = new Excel.ApplicationClass() ;
     
    classeur = excelApp.Workbooks.Add(oMissing) ;
     
    feuille = (Excel._Worksheet)classeur.ActiveSheet ;
     
    feuille.Shapes.AddShape
    (Microsoft.Office.Core.MsoAutoShapeType.msoShapeOval,50,50,50,50).
    Select(oMissing) ;
    J'ai a peu près tout tenté pour récupérer cette forme sélectionnée et essayé d'appliquer un changement de caractères, mais je n'y parviens pas...

    Il y a quelque chose que je ne dois pas bien comprendre.

  2. #2
    Membre éclairé Avatar de zeavan
    Architect
    Inscrit en
    Avril 2003
    Messages
    590
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Autre

    Informations professionnelles :
    Activité : Architect

    Informations forums :
    Inscription : Avril 2003
    Messages : 590
    Points : 774
    Points
    774
    Par défaut
    je ne suis pas sur d'avoir compris ce que tu veuxfaire
    tu essaie de recupere le texte situe dans la surface d'un rond virtuel sur une page excel c'est bien ca ??
    ou rien avoir

    dis moi ce que tu veux faire .

  3. #3
    Membre confirmé Avatar de Kcirtap
    Inscrit en
    Juillet 2005
    Messages
    553
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 553
    Points : 523
    Points
    523
    Par défaut
    Citation Envoyé par zeavan
    tu essaie de recupere le texte situe dans la surface d'un rond virtuel sur une page excel c'est bien ca ??
    C'est presque ça.

    Dans Excel, tu as la possibilité d'ajouter des dessins prédéfinis (ronds, carrée, étoiles, etc.).
    Lorsque tu crées l'un de ces dessins, tu peux cliquer avec le bouton de droite pour obtenir le menu contextuel et là, tu trouve la rubrique "Ajouter du texte".

    J'arrive parfaitement bien à ajouter du texte à un dessin dans une macro VBA d'Excel, mais je ne parviens pas à transcrire cette macro en C#.

    En VBA, tu sélectionnes le dessin (Shape) et à partir de l'objet Selection, tu peux atteindre l'attribut Characters.Text comme le montre le code de mon premier message.

    Mon problème est qu'en C#, j'arrive à sélectionner une forme, mais je ne parviens à récupérer cette sélection.
    J'ai bien essayé de passer par l'application Excel (Excel.Application.Selection), mais je ne trouve pas l'attribut Characters ensuite.

    Saurais-tu d'où pourrait venir mon problème :

  4. #4
    Membre habitué Avatar de prem's
    Inscrit en
    Avril 2003
    Messages
    145
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 145
    Points : 152
    Points
    152
    Par défaut
    Citation Envoyé par Kcirtap
    J'ai bien essayé de passer par l'application Excel (Excel.Application.Selection), mais je ne trouve pas l'attribut Characters ensuite.
    tu as essayer et ça compile pas, ou il n'est juste pas présent dans la complétion ?

  5. #5
    Membre confirmé Avatar de Kcirtap
    Inscrit en
    Juillet 2005
    Messages
    553
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 553
    Points : 523
    Points
    523
    Par défaut
    Citation Envoyé par prem's
    tu as essayer et ça compile pas, ou il n'est juste pas présent dans la complétion ?
    Il n'est pas présent dans la complétion...

  6. #6
    Membre habitué Avatar de prem's
    Inscrit en
    Avril 2003
    Messages
    145
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 145
    Points : 152
    Points
    152
    Par défaut
    essaye voir si ça passe quand meme. suivant ce que donne Excel.Application.Selection comme "type" ça peut passer. si ça compile pas par contre c'est que c'est pas possible du tout

  7. #7
    Membre confirmé Avatar de Kcirtap
    Inscrit en
    Juillet 2005
    Messages
    553
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 553
    Points : 523
    Points
    523
    Par défaut
    Citation Envoyé par prem's
    essaye voir si ça passe quand meme. suivant ce que donne Excel.Application.Selection comme "type" ça peut passer. si ça compile pas par contre c'est que c'est pas possible du tout
    Ca marche.

    Je fais mes tests et je vous donne des nouvelles. 8)

  8. #8
    Membre confirmé Avatar de Kcirtap
    Inscrit en
    Juillet 2005
    Messages
    553
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 553
    Points : 523
    Points
    523
    Par défaut Il en aura fallu ...
    Bon sang ! Ca fonctionne!!!

    Après plusieurs tentatives et surtout quelques , je suis finalement parvenu à un résultat.

    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
    string nomFichier = @"c:\temp\test.xls" ;
     
    object oMissing = System.Reflection.Missing.Value ;
    Excel.Application excelApp = null ;
    Excel._Workbook classeur = null ;
    Excel._Worksheet feuille = null ;
    Excel.Shape forme = null ;
    Excel.Shapes formes = null ;
     
    excelApp = new Excel.ApplicationClass() ;
     
     
    //initialisation de l’application Excel
    if (excelApp == null)
    {
        Console.WriteLine("Erreur initialisation de l'application Excel.") ;
        return ;
    }
    else
    {
        excelApp.Visible = true ;
    }
     
    //test de l’existence du fichier
    if (File.Exists(nomFichier))
    {
        Console.WriteLine("Le fichier " + nomFichier + " existe.") ;
        File.Delete(nomFichier) ;
        Console.WriteLine(nomFichier + " a été supprimé!") ;
    }
    else
    {
        Console.WriteLine("Le fichier " + nomFichier + " n'existe pas.") ;
    }
     
    //initialisation du classeur
    classeur = excelApp.Workbooks.Add(oMissing) ;
     
    //initialisation de la feuille
    feuille = (Excel._Worksheet)classeur.ActiveSheet ;
     
    //création de la forme en l’ajoutant à la collection de la feuille
    //sélection de la forme
    feuille.Shapes.AddShape
    (Microsoft.Office.Core.MsoAutoShapeType.msoShapeOval, 50, 0, 0,
     0).Select(oMissing) ;
     
    //ajout et formatage du texte
    ((Excel.Oval) excelApp.Selection).Caption = "Test”
    ((Excel.Oval) excelApp.Selection).HorizontalAlignment =
     Excel.XlHAlign.xlHAlignCenter ;
    ((Excel.Oval) excelApp.Selection).VerticalAlignment =
     Excel.XlVAlign.xlVAlignCenter ;
    ((Excel.Oval) excelApp.Selection).Font.Name = "Arial Black" ;
    ((Excel.Oval) excelApp.Selection).Font.Color = 3 ;
     
    //sauvegarde du classeur Excel
    classeur.SaveAs(nomFichier,
                   XlFileFormat.xlExcel7,
                   oMissing,
                   oMissing,
                   oMissing,
                   oMissing,
                   XlSaveAsAccessMode.xlNoChange,
                   oMissing,
                   oMissing,
                   oMissing,
                   oMissing,
                   oMissing) ;
     
    //fermeture du classeur
    classeur.Close(false,oMissing,oMissing) ;
     
    //sortie de l’application
    excelApp.Quit() ;
    Je dois dire que j'ai été pas mal induit en erreur par le code VBA. La propriété du texte de la forme ne porte pas le même nom en C# qu'en VBA...

    J'espère que ce bout de code pourra être utile à d'autres.

    Un grand à tous pour votre aide.

    A bientôt

    Patrick

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

Discussions similaires

  1. [VBA-Excel] Appel de diapo powerpoint + Message Macro
    Par marsupilami34 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 17/11/2006, 12h06
  2. [vba-Excel]casser l'execution de la macro
    Par sk8bcn dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/09/2006, 18h00
  3. [VBA] Excell : demande d'aide pour une macro
    Par Fealendril dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 11/01/2006, 16h28
  4. [VBA][EXCEL] Mise à jour de TCD en macro
    Par Scuriolus dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 07/12/2005, 13h30
  5. [VBA Excel] ecrire le caractere " avec une macro
    Par oktopuces dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 09/09/2005, 22h56

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