[Résolu] Sélection de colonnes pour enregitrement en tant que page web ?

SneakyZEKE

XLDnaute Nouveau
Re-bonjour pour ceux qui ont lu ma présentation dans la section "Le Bon Coin", bonjour pour les autres,

Je viens vous faire part d'un de mes nombreux problèmes VBA sur un projet que je dois mener à bien dans le cadre de ma formation.

En l’occurrence mon premier problème est que je ne parvient pas à enregistrer en tant que page web certaines colonnes de mon tableau, forcément pas toutes à suivre.
Et même si possible ajouter une colonne d'une autre feuille à ma sélection de colonnes de ma feuille de base.

Je précise, j'ai un tableau A2:J1000 dans ma feuille "BASE" pour lequel je ne souhaite faire apparaitre que les colonnes A, B, C, D, F, G...plus si possible la colonne G de ma feuille "Validations". Sachant que j'ai définie le nom "Commentaires" à cette dernière colonne G1:G999.

J'ai pour le moment uniquement essayé de sélectionné les colonnes voulues de la feuille de base mais ça ne fonctionne que sur une plage, pas sur 2 ou plus :

Code:
Sub HTMLExport()
   'regroupe les fonctions menant à l'enregistrement sous page HTML
    Dim myform As New HTMLExportForm
    Dim iFileNum As Integer
    Dim MaPageWeb As PublishObject
    myform.Show 1
    If myform.Result Then

    Dim r1 As Range, r2 As Range, myMultiAreaRange As Range
    Worksheets("BASE").Activate
    Set r1 = Range("A2:D1000")
    Set r2 = Range("F2:G1000")
    Set myMultiAreaRange = Union(r1, r2)
    myMultiAreaRange.Select

    Set MaPageWeb = ActiveWorkbook.PublishObjects.Add( _
        SourceType:=xlSourceRange, _
        Filename:=myform.txtFileName.Text, _
        Sheet:="BASE", _
        Source:="A2:E1000", _
        HtmlType:=xlHtmlStatic, _
        Title:="")

    With MaPageWeb
        'publication de la page
        .Publish (True)
        'ne répercute repercute pas l'enregistrement du classeur sur la page web
        .AutoRepublish = False
    End With

        If myform.xbView.Value = True Then
            VBShellExecute myform.txtFileName.Text
        End If
    End If

End Sub

En fait je tentai de créer une sélection multiple dans Range pour l'utiliser comme source dans mon ActiveWorkbook.PublishObjects.Add( ), mais ça n'a pas fonctionné du tout...au moins en l'état actuel c'est une peu incohérent mais exécutable...il me sort juste la plage A2:E1000 en page web !

Si quelqu'un à une idée je suis preneur car je sèche dessus depuis des heures...
 
Dernière édition:

tototiti2008

XLDnaute Barbatruc
Re : Sélection de colonnes pour enregitrement en tant que page web ?

Bonjour SneakyZEKE,

Pourquoi ne pas créer un classeur vide dans lequel tu colles toutes les colonnes voulues, et que tu sauvegarde dans un dossier temporaire avant de le publier ? ou une nouvelle feuille de ton fichier, si tu préfères
 

SneakyZEKE

XLDnaute Nouveau
Re : Sélection de colonnes pour enregitrement en tant que page web ?

Bonjour SneakyZEKE,

Pourquoi ne pas créer un classeur vide dans lequel tu colles toutes les colonnes voulues, et que tu sauvegarde dans un dossier temporaire avant de le publier ? ou une nouvelle feuille de ton fichier, si tu préfères

C'est un projet scolaire dont le but était d'apprendre dans un premier temps à utiliser Excel, actuellement de créer des macro avec pour ambition de passer petit à petit à utiliser une base de donnée Excel sous Access.

Il est donc demandé que la macro réalise ceci en cliquant sur un bouton. Au début j'avais réussi en créant une feuille dédiée dans le classeur, contenant des formules du style =BASE!A3 en cellule A2, etc, histoire de n'obtenir que les colonnes voulues dans cette nouvelle feuille puis de créer un simple raccourci vers "Enregistrer en tant que page web" après activation de la page, sauf qu'une autre demande est de pouvoir ajouter ou supprimer des lignes à ma feuille BASE, donc les formules relatives ne tiennent plus.

Après plusieurs tentatives de roublardise, je me rend compte qu'il est inutile de contourner ce problème puisque plus j'avance dans mon projet, plus la solution macro de sélection des colonnes puis Enregistrement en page web me semble la seule solution viable.

J'ai trouvé un sujet similaire sur le forum mais avec sélection de ligne et colonnes, avec commentaire anglo-saxon et surtout que je n'arrive ni à comprendre, ni à appliquer. C'est pourquoi j'ai créé ce poste après des heures de recherche....
 
Dernière édition:

tototiti2008

XLDnaute Barbatruc
Re : Sélection de colonnes pour enregitrement en tant que page web ?

Re,

Pour copier les données dans une feuille (que j'ai nommé HTML dans l'exemple) un truc du genre devrait le faire

ensuite, pour l'enregistrement en page web, je ne sais pas si tu veux passer par la commande Publier ou autre, je te laisse voir le plus approprié

Code:
Sub test()
    Sheets("HTML").Cells.ClearContents
    With Sheets("BASE")
        .Range("A2:D1000").Copy Sheets("HTML").Range("a1")
        .Range("F2:G1000").Copy Sheets("HTML").Range("e1")
    End With
    Sheets("Validations").Range("G1:G999").Copy Sheets("HTML").Range("G1")
    
End Sub
 

SneakyZEKE

XLDnaute Nouveau
Re : Sélection de colonnes pour enregitrement en tant que page web ?

Re,

Pour copier les données dans une feuille (que j'ai nommé HTML dans l'exemple) un truc du genre devrait le faire

ensuite, pour l'enregistrement en page web, je ne sais pas si tu veux passer par la commande Publier ou autre, je te laisse voir le plus approprié

Code:
Sub test()
    Sheets("HTML").Cells.ClearContents
    With Sheets("BASE")
        .Range("A2:D1000").Copy Sheets("HTML").Range("a1")
        .Range("F2:G1000").Copy Sheets("HTML").Range("e1")
    End With
    Sheets("Validations").Range("G1:G999").Copy Sheets("HTML").Range("G1")
    
End Sub

Merci beaucoup tototiti2008, je bûche un peu là dessus voir ce que ça donne et je donne le retour rapidement.
 

SneakyZEKE

XLDnaute Nouveau
Re : Sélection de colonnes pour enregitrement en tant que page web ?

Merci encore tototiti2008, ça fonctionne et ça fonctionne même de façon bien plus rapide que le truc à base de formules que j'avais bidouillé et qui finissait par me perdre des lignes.

Juste un truc en pinaillant un peu...puis-je le faire fonctionner en masquant la feuille HTML ? Pour le moment ça fonctionne que si elle est affichée, sinon elle semble ne pas être trouvée par la macro.

Au pire en étendant le bout de code que j'utilise pour protéger ma feuille BASE à la feuille HTML :

Code:
Private Sub Workbook_Open()
Worksheets("BASE").Protect Password:="******", UserInterfaceOnly:=True
End Sub
 
Dernière édition:

tototiti2008

XLDnaute Barbatruc
Re : Sélection de colonnes pour enregitrement en tant que page web ?

Re,

Peut-être

Code:
Sub test()
Application.screenupdating = false
Sheets("HTML").visible = xlSheetVisible
    Sheets("HTML").Cells.ClearContents
    With Sheets("BASE")
        .Range("A2:D1000").Copy Sheets("HTML").Range("a1")
        .Range("F2:G1000").Copy Sheets("HTML").Range("e1")
    End With
    Sheets("Validations").Range("G1:G999").Copy Sheets("HTML").Range("G1")
    Sheets("HTML").visible = xlSheetVeryHidden
application.screenupdating = false
End Sub

une fois que tu l'auras exécutée, la feuille restera masquée
 

SneakyZEKE

XLDnaute Nouveau
Re : Sélection de colonnes pour enregitrement en tant que page web ?

Re,

Peut-être

Code:
Sub test()
Application.screenupdating = false
Sheets("HTML").visible = xlSheetVisible
    Sheets("HTML").Cells.ClearContents
    With Sheets("BASE")
        .Range("A2:D1000").Copy Sheets("HTML").Range("a1")
        .Range("F2:G1000").Copy Sheets("HTML").Range("e1")
    End With
    Sheets("Validations").Range("G1:G999").Copy Sheets("HTML").Range("G1")
    Sheets("HTML").visible = xlSheetVeryHidden
application.screenupdating = false
End Sub

une fois que tu l'auras exécutée, la feuille restera masquée

En faite pour enregistrer j'utilise le code :

Code:
Sheets("HTML").Activate
    Set MaPageWeb = ActiveWorkbook.PublishObjects.Add( _
            SourceType:=xlSourceRange, _
            Filename:=myform.txtFileName.Text, _
            Sheet:="HTML", _
            Source:="A1:F999", _
            HtmlType:=xlHtmlStatic, _
            Title:="")
    With MaPageWeb
        'publication de la page
        .Publish (True)
        'ne répercute repercute pas l'enregistrement du classeur sur la page web
        .AutoRepublish = False
    End With


Le truc c'est qu’apparemment le "Sheets("HTML").Activate" ne fonctionne plus quand la page est masqué, hors c'est la seule façon que j'ai trouvé pour faire fonctionner la suite...
 

SneakyZEKE

XLDnaute Nouveau
Re : Sélection de colonnes pour enregitrement en tant que page web ?

Oups, désolé, je me rend compte que je suis pas doué...il suffit de copier "Sheets("HTML").visible = xlSheetVisible" avant "Sheets("HTML").Activate"...logique quoi !

Merci à toi tototiti2008, tu viens de solutionner mon premier problème et je pense même mon second qui est aussi en rapport avec une sélection mais pour l'impression cette fois.

En tous cas ce sujet est clos et résolu...je ne regrette définitivement pas d'avoir choisi ExcelDownloads, moi le fainéant de l'inscription aux forums :)
 
Dernière édition:

Discussions similaires

Réponses
7
Affichages
347

Statistiques des forums

Discussions
312 204
Messages
2 086 198
Membres
103 154
dernier inscrit
jefferson6488