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 :

Traduire programme VBA en equivalent C# ( Interop Excel )


Sujet :

C#

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2019
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Traduire programme VBA en equivalent C# ( Interop Excel )
    Bonjour

    Je suis nouveau sur ce forum, j'ai réaliser dernièrement une macro en VBA qui a l'aide d'un Userform fusionne plusieurs classeurs excel en un seul en copiant les différentes feuilles des classeurs pour les coller dans le nouveau classeur [ exemple : cela permet d'avoir un classeur de 30 feuilles au lieu de 30 classeur de 1 feuille )

    voici donc mon programme en VBA ( qui fonctionne ) :

    Code VBA : 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
    Private Sub CommandButton1_Click()
       Dim ret1 As Integer
        ret1 = MsgBox("Vous aller Fusionner les fichiers Excel présent dans la liste ci-dessus, Continuer?  ", vbYesNo)
        If ret1 = vbNo Then
            Exit Sub
        Else
        Dim Cible As Workbook, chemin$, Filename$, o As Worksheet
        Workbooks.Add
        Set Cible = ActiveWorkbook
        chemin = "Z:\Fichiers Exemples\"
        Filename = Dir(chemin & "*.xlsx")
         Do While Filename <> ""
             Workbooks.Open Filename:=chemin & Filename, ReadOnly:=True
         For Each o In ActiveWorkbook.Sheets
             o.Copy After:=Cible.Sheets(1)
         Next o
           Workbooks(Filename).Close
           Filename = Dir()
         Loop
         ListBox1.Clear
         MsgBox "Importation Réussie avec succès !"
         Unload UserForm1
         End If
    End Sub

    Ainsi je souhaite faire l'équivalent en C# avec Visual Studio

    J'ai ainsi commencé par faire ce début de code :

    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
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using Microsoft.Office.Interop.Excel;
    using Excel = Microsoft.Office.Interop.Excel;
     
    namespace WindowsFormsApplication1
    {
        public partial class Form1 : Form
        {
     
     
            public Form1()
            {
                InitializeComponent();
            }
     
            private void Form1_Load(object sender, EventArgs e)
            {
     
            }                
     
            private void button3_Click(object sender, EventArgs e)
            {
                //Fusion Boucle 
                object misValue = System.Reflection.Missing.Value;
                Microsoft.Office.Interop.Excel.Application Application = new Microsoft.Office.Interop.Excel.Application();
                Application.DisplayAlerts = false;
                Application.Visible = true;
     
                string chemin, Filename, Filename2;
     
                chemin = @"C:\DEV\VINCENT\New\";
     
                Filename = chemin + "test1.xlsx";
                Application.Workbooks.Open(Filename);
     
                Filename2 = chemin + "test2.xlsx";
                Application.Workbooks.Open(Filename2);         
     
     
     
            }
        }
    }
    pour le moment Ce programme m'ouvre simplement 2 classeurs excel existant
    Comme je suis débutant en C# j'espère que vous pourrez m'éclairer sur le sujet
    merci d'avance !

    Cordialement

  2. #2
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2019
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    J'ai finalement trouvé ma réponse

    voici le code " traduit " en C# :

    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
    private void button4_Click(object sender, EventArgs e)
           {
     
                    string path = @"C:\DEV\VINCENT\Fichiers Excel\";
                    string[] str = Directory.GetFiles(path);
                    for (int i = 0; i < str.Length; i++)
                    {
                       listBox2.Items.Add(str[i]);
                    
                    }
     
            }
     
     
     private void button5_Click(object sender, EventArgs e)
            {
                object misValue = System.Reflection.Missing.Value;
                Microsoft.Office.Interop.Excel.Application App = new Microsoft.Office.Interop.Excel.Application();
                App.DisplayAlerts = false;
                App.Visible = true;
     
                string filename;
                Microsoft.Office.Interop.Excel.Workbook Classeur;
                Classeur = App.Workbooks.Add(misValue);
                App.Workbooks[1].Activate();
                ((Excel.Worksheet)(App.ActiveWorkbook.Sheets[3])).Visible = Excel.XlSheetVisibility.xlSheetVeryHidden;
                ((Excel.Worksheet)(App.ActiveWorkbook.Sheets[2])).Visible = Excel.XlSheetVisibility.xlSheetVeryHidden;
     
     
                Microsoft.Office.Interop.Excel.Workbook ClasseurTemp;
                for (int i = 0; i < listBox2.Items.Count; i++)
                {
                    filename = listBox2.Items[i].ToString();                                               
                    ClasseurTemp = App.Workbooks.Open(filename);
                    App.Workbooks[App.Workbooks.Count].Activate();
     
                    foreach (Excel.Worksheet ws in ClasseurTemp.Sheets)
                    {                   
                        ws.Copy(Classeur.Worksheets[1]);
                    }
     
                    App.Workbooks[1].Activate();
                    ClasseurTemp.Close(false);
     
                }
              }

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

Discussions similaires

  1. Info : Petit programme VBA avec base de donnée excel
    Par guismoman60 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 21/10/2013, 10h20
  2. Activer un menu Excel depuis un programme VBA Access
    Par gbuxo dans le forum VBA Access
    Réponses: 9
    Dernier message: 27/11/2007, 10h58
  3. Programmation VBA Excel UserForm
    Par rifchavon dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 30/03/2007, 08h52
  4. [VBA-E] Help création d'un programme vba pour excel
    Par yampi dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/01/2007, 11h46
  5. Réponses: 3
    Dernier message: 31/08/2006, 10h22

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