Macro excel enregistrez sous multiples

Résolu
Bonjour,

J'utilise un fichier excel pour générer des fichiers html.

http://www.cijoint.fr/cjlink.php?file=cj201011/cijr9bExL1.xls
http://www.cijoint.fr/cj201011/cijr9bExL1.xls

Fonctionnement:
Pour ajouter une entrée, dans l'onglet "Listing", je rajoute une adresse et une image dans les colonnes bleues et je sélectionne la/les catégories dans les colonnes jaunes.

A partir de cet onglet "Listing" sont générés automatiquement tous las autres onglets (qui correspondent aux catégories)

Dans chaque onglet (catégories) une macro que je lance avec Ctrl+E actualise le tri (decroissant) et sélectionne les colonnes B et C.

Le contenu des colonnes B et C est collé dans un fichier html.

J'ai donc un fichier html pour chaque catégorie, et c'est un peu long (chiant) de remettre à jour tous les fichiers un par un.

Je cherche donc à mettre un bouton magique qui enregistrerait le colonne B et C d'un onglet dans un fichier dont le chemin/nom serait ecrit dans une cellule.

Idéalement, ce bouton enregistrerait tous les onglets en même temps.

Problème1: je ne sais pas faire ce genre de macro.
Problème 2: la première macro Ctrl+E doit être éxecutée sur chaque onglet.

Merci d'avance pour votre aide précieuse.

4 réponses

  1. j'ai fait quelques essais hier soir, j'ai opté pour copier les 2 colonnes à copier dans un nouvel onglet afin de sauvegarder l'onglet au format Text (ActiveWorbook.Save.as), mais le problème c'est qu'il y a des guillemets qui s'ajoutent un peu partout (caractères spéciaux ?)....merci pour votre aide
    0
    1. j'ai finalement réussi à exporter du code html sans ces satanées guillemets.

      Tel quel, je dois répéter l'action sur chaque onglet.

      Est-il possible à votre avis de traiter les 19 onglets en 1 seule fois ?
      ( à chaque fois un message de confirmation apparaît pour remplacer un fichier déjà existant)

      Pour info, la macro: (module 2, s'éxécute avec Ctrl+e)
      Sub Macro1()

      '
      Range("A9:C400").Sort Key1:=Range("A9"), Order1:=xlDescending, Header:= _
      xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
      DataOption1:=xlSortNormal
      Selection.AutoFilter Field:=2, Criteria1:="<>"

      Dim MonEXE As Long
      Dim fichier As String
      Dim MonExcel As Workbook
      Dim C As Boolean
      '
      Set MonExcel = ThisWorkbook
      With ActiveSheet
      '.Range("A1").CurrentRegion.Select
      Range("B1:C400").Select
      Selection.Copy
      End With
      '
      MonEXE = Shell("notepad.exe" & fichier, vbNormalFocus)
      AppActivate MonEXE '"Sans titre"
      Call SendKeys("^V", True)
      Application.CutCopyMode = False
      fichier = "C:\" & [A1].Value

      Call SendKeys("%FR" & fichier & "{ENTER}", True)

      End Sub

      (il faut indiquer le nom du fichier dans le cellule A1, par exemple: action.html )
      0
      1. Contributeur
        Bonjour,

        2 réponses vite fait, sans ton fichier difficile de tester.

        1) boucle :
        Dim ws As Worksheet
        For Each ws In Worksheets
        If ws.Name <> "Listing" Then
        'ton code
        endif

        2) à chaque fois un message de confirmation apparaît pour remplacer un fichier déjà existant
        supprime-le avec kill fichier avant d'enregistrer

        eric
        0
        1. Bonjour eriiic,
          merci pour ta réponse.

          malheureusement je n'arrive pas à appliquer tes conseils (ce n'est faute d'essayer)

          je te donne le lien de mon fichier
          http://www.cijoint.fr/cj201011/cijKHTWOHN.xls

          merci de jeter un oeil
          0
      2. Contributeur
        Bonsoir,

        ce n'est faute d'essayer
        Je comprend, j'y suis arrivé mais non sans mal...
        J'ai changé pas mal de trucs dans ta procédure, je pense que ça correspond à ce que tu voulais mais contrôle quand même les résultats.
        J'ai dû ajouter une tempo, il faut absolument la laisser au milieu des 2 sendkeys (sinon des désynchronisations aléatoires se produisent, c'est ce qui m'a bien occupé ma soirée...).

        J'avais un curieux fichier 148.txt qui se créait et faisait planter (au passage merci pour la feuille cachée... ;-) ), du coup j'ai ajouté un test : un fichier ne se crée que si en A1 se trouve une chaine qui se termine par .html

        Je n'ouvre qu'une fois notepad au début, il faut laisser cette structure, il refuse de s'ouvrir à l'intérieur d'un with (???)
        Et bien sûr éviter les clics nerveux n'importe où pendant le déroulement de la macro

        http://www.cijoint.fr/cjlink.php?file=cj201011/cijJIvfSIj.zip

        eric
        0
        1. un grand MERCI eriiic , ça fonctionne parfaitement.

          c'est désormais, un vrai bonheur de faire les mises à jours !

          (désolé pour la feuille cachée ;-)
          0