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

Java Discussion :

Appliquer un code VB sur un fichier Excel depuis Java


Sujet :

Java

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 46
    Points : 41
    Points
    41
    Par défaut Appliquer un code VB sur un fichier Excel depuis Java
    Bonjour

    tout d'abord, je ne sais pas vraiment si je suis au bon endroit pour poser cette question, mais bon, dans le doute, j'ai choisi un forum général..

    Alors voilà mon problème : j'utilise JExcel pour pouvoir lire un fichier Excel (fournisseurs de produits) pour après traiter les informations à l'intérieur, et les charger en base de données + sérialisation. La plupart du temps, aucun soucis.

    Mais... Certain fournisseur trouvent ça plus pratique de mettre les lignes des tableaux en traçant de vrais objets lignes , ou alors, de mettre des petites zones de textes un peu partout, ils sont vraiment taquins ces fournisseurs...

    Bref, j'ai trouvé un code VB qui permet de supprimer toutes les zones de textes d'un fichier Excel, donc pour l'activer, onglet développeur, macro, copier, coller, et après le petit bouton play.

    Mais j'aimerai que ce soit mon programme qui fassent ça.

    Le gros soucis, c'est que je ne peux pas ouvrir un feuille qui contient des zones de textes avec JExcel. Donc il faudrait que je puisse appliquer le code VB à la feuille, en l'ouvrant sans utiliser JExcel...

    Hum... déjà, merci à ceux qui m'auront suivis jusque là. Donc ma question :
    Comment appliquer un code VB à une feuille Excel, le tout en Java ?

    Et si quelqu'un pouvait, ne serait-ce que m'indiquer une piste, je suis preneur !!

    Merci d'avance !

    Nafnlaus.

  2. #2
    Membre confirmé Avatar de ruscov
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mars 2007
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Mars 2007
    Messages : 347
    Points : 500
    Points
    500
    Par défaut
    Je ne sais pas si tu peux appeler ton script avec ton fichier en paramètre?
    Si oui, tu peux peut-être essayer ça
    Mes logiciels n’ont jamais de bug. Ils développent juste certaines fonctions aléatoires.

  3. #3
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Je serais très surpris qu'il existe une implémentation de VBA en Java, avec ou sans les API Excel.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre averti Avatar de Doopeijii
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2012
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 215
    Points : 323
    Points
    323
    Par défaut
    Une solution que j'ai utilisé (moi pour supprimer des fusions) : traduit ton VBA en VBS (de façon à ce que ça ne soit plus une macro mais un script que tu appelle avec ton fichier Excel en paramètre) pis voilà un bout de code pour lancer ça en Java :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    List<String> command = new ArrayList<String>();
    command.add("wscript.exe");// ou cscript.exe
    command.add("D:/chemin_vers_ton_VBS/script.vbs");
    command.add("D:/chemin_vers_ton_excel/file.xls");
    ProcessBuilder pb = new ProcessBuilder(command);
    final Process p = pb.start();
    final BufferedReader is = new BufferedReader(new InputStreamReader(p.getInputStream()));
    String line;
    while ((line = is.readLine()) != null) {
    	;
    }
    En espérant que tu vas pouvoir t'en servir ! ça vaut le coup de s'embêter à traduire du VBA en VBS...
    Un petit n'est pas de trop si le message est utile

    "Vous êtes très nombreux dans votre cas? J'ai jamais pensé que les cons étaient en minorité..."

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 46
    Points : 41
    Points
    41
    Par défaut
    Je vais essayer tout ça cette après-midi ! Merci de vous penchez sur mon problème en tout cas !

  6. #6
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 46
    Points : 41
    Points
    41
    Par défaut
    Bon alors, je pense que je vais prendre ta solution Doopeijii, seulement, je connais ni le vba, ni le vbs... Je viens de jeter des yeux sur le net, et... j'ai pas compris grand chose

    Ma fonction est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub Suphapes()
    For Each c In ActiveSheet.Shapes
    c.Delete
    Next c
    End Sub
    Ça c'est ce que j'exécute depuis Excel, je sais pas pourquoi, mais ça marche.

    Donc déjà, sur le principe, faudrait que je lui fille un truc en paramètre. J'ai vu ça aussi sur le net :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim xlapp
    FichierXLS = "c:\fichier.xls"
    FeuilleXLS = "Feuil1"
     
    Set xlapp = CreateObject("Excel.Application")
    xlapp.Visible = True
    xlapp.workbooks.open FichierXLS
    xlapp.sheets(FeuilleXLS).Activate
    Donc je peux filer le nom du fichier en paramètre au format String, mais déjà comment le déclarer ? Et de plus, la feuille, je ne connais pas son nom, donc ça serait possible de récupérer son nom, depuis son numéro ? (c'est toujours la première feuille)

    Merci d'avance !!

  7. #7
    Membre averti Avatar de Doopeijii
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2012
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 215
    Points : 323
    Points
    323
    Par défaut
    Quelques indices pour y arriver à venir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Dim args, fichier
    Set args = WScript.Arguments
    If args.Count <> 1 Then
    	MsgBox "Erreur argument" & args.Count
    	WScript.quit
    End If
    fichier = args(0)
    Set excel = WScript.CreateObject("Excel.Application")
    excel.Visible = False
    With excel.Workbooks.Open(fichier)
    	'la traduction de ton code VBA
    End With
    Voilà pour récupérer un argument (moi le nom du fichier en l'occurence). Mais pour être propre il faudrait ajouter des sécurités...

    Ensuite un lien que j'ai trouvé utile pour la conversion VBA/VBS :
    Par ici !
    Un petit n'est pas de trop si le message est utile

    "Vous êtes très nombreux dans votre cas? J'ai jamais pensé que les cons étaient en minorité..."

  8. #8
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 46
    Points : 41
    Points
    41
    Par défaut
    Merci beaucoup, je vais me pencher là dessus, et je reviens dès que c'est fait !!

    Merci pour tout !!

Discussions similaires

  1. Réponses: 6
    Dernier message: 02/08/2017, 16h55
  2. Comment ouvrir un fichier excel depuis java
    Par bennj53 dans le forum Développement Web en Java
    Réponses: 8
    Dernier message: 12/09/2011, 11h02
  3. Ecrire sur un fichier Excel, par du code C#
    Par hazem2410 dans le forum C#
    Réponses: 3
    Dernier message: 31/05/2011, 11h19
  4. Réponses: 2
    Dernier message: 27/05/2011, 09h27
  5. Réponses: 1
    Dernier message: 11/02/2011, 14h14

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