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

Macros et VBA Excel Discussion :

Ouvrir (et non copier) plusieurs excels dans nouveau classeur


Sujet :

Macros et VBA Excel

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

    Informations forums :
    Inscription : Mars 2010
    Messages : 12
    Points : 8
    Points
    8
    Par défaut Ouvrir (et non copier) plusieurs excels dans nouveau classeur
    Bonjour,

    Mon problème est lié à l'utilisation de VBA par l'intermédiaire de python. J'ai déjà posé la question sur le forum python, mais il n'y a pas eu grand succès (ce que je comprends vu que mon problème est directement lié à VBA).

    J'ai plusieurs excels dans un répertoire qui pour des raisons pratiques ont été formatées en HTML (ruse pour la rapidité d'écriture).

    J'aimerai maintenant pouvoir ouvrir ces fichiers dans un même classeur.

    Le problème c'est que j'ai mis en forme mes HTML et que j'ai l'impression que tout ça se perd quand on fait la manipulation courante du Sheets(i).Copy-etc. En fait j'en suis pas certain, mais en tout cas mes HTML enlèvent d'entrée le 'grillage' des cellules et formatent les cellules par rapport au texte, ce que ne fait pas le Copy().

    Vous allez me dire d'aller chercher les fonctions VBA qui feraient ça 'dans un second temps', mais honnêtement je suis pas loin de mon but et galère déjà suffisamment pour m'infiltrer dans des problèmes récursifs (problèmes impliquant d'autres problèmes). Peut-être existe-il donc un truc simple qui 'ouvre' les fichiers dans des sheets au lieu de devoir les 'copier' (équivalent du wbExcel.Worksheets(1) = fichier... ?)

    Pour information, mon code actuel est le suivant. La synthaxe VBA est adaptée au python mais les fonctions sont les mêmes, je pense que c'est compréhensible pour quelqu'un qui ne connait pas python. Faut savoir qu'il ne marche même pas pour une copie simple des fichiers, je sollicite donc votre aide aussi pour simplement ça, ce serait déjà un premier pas !

    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
     
            xlApp = win32com.client.Dispatch("Excel.Application")
    	excelSheet = ['(differents noms des fichiers excel)']
            # manoeuvre pour récupérer le chemin de mon classeur final
    	projet = open('Audit.xls', 'w')
    	projetFile = os.path.abspath(projet.name)
    	projet.close()
    	for sheet in excelSheet :
    	        sheetFile = sheet + '.xls'
    		#vérification que le fichier existe dans le répertoire
    		if os.path.isfile(sheetFile) :
                            #recherche encore du path du fichier à copier
    			temp = open(sheetFile, 'r')
    			sheetFile = os.path.abspath(temp.name)
    			temp.close()
    			wbAudit = xlApp.Workbooks.Open(projetFile)
    			wsAudit = wbAudit.Worksheets
                            #création du sheet qui va 'accueillir' le nouveau fichier
    			wsAudit.Add()
    			cnt = wsAudit.Count
    			print 'cnt', cnt
    			wbExcel = xlApp.Workbooks.Open(sheetFile)
    			wsExcel = wbExcel.Worksheets
    			wsExcel(1).Copy(wsAudit(cnt))
    			wbAudit.Close(SaveChanges = 1)
    			wbExcel.Close()
    Merci par avance.

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut heu...!!
    bonjour
    heu.....!!!
    ca serait plutot ouvrir plusieur classeur dans l application exel a mon avis

    oui c'est possible

    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
     
    sub ouverture()
    dim titre1,titre2 as variant
    titre1="toto.xls"
    titre2= "la tete a toto.xls"
    nom1
    workbooks open titre1
    workbooks open titre2
     
     
    'l'a tes deux classeur sont ouverts!!! avec celui qui etait deja en route
     
    windows titre1 .activate
    sheets ("feuil1").range("a1:f1").copy
    windows nom1.activate
    sheets(1).select
    selection.paste
    windows titre1.close
    windowstitre2.activate
    sheets(1).select
    range('a1:f1").copy
    windows nom1.activate
    sheets(1).select
    range("a2").paste
    windows titre2.close
    en gros tu ouvre toto et tete a toto du active le feuil1 de titre1 tu copy a1f1 et tu reactive le classeur nom1 (dedepart) et tu colle ce que tu a copier
    et tu fais la meme chose avec tete a toto.xls

    voila au plaisir

Discussions similaires

  1. [XL-2003] copier des feuilles dans nouveau classeur
    Par JohnNC115 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 27/01/2011, 08h25
  2. Ouvrir (et non copier) plusieurs excels dans nouveau classeur
    Par Buck92 dans le forum Général Python
    Réponses: 0
    Dernier message: 20/05/2010, 11h16
  3. [XL-2002] Extraction de lignes non contigües pour les copier dans nouveau classeur
    Par JerCaz dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 19/03/2010, 09h46
  4. Réponses: 4
    Dernier message: 26/07/2007, 21h56
  5. Copier plusieurs TLabel dans le presse papier
    Par Manopower dans le forum Delphi
    Réponses: 3
    Dernier message: 26/09/2006, 10h30

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