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 :

Export Excel valeurs uniquement


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite Avatar de azertix
    Homme Profil pro
    Technicien d'assistance informatique
    Inscrit en
    Juin 2007
    Messages
    961
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien d'assistance informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 961
    Par défaut Export Excel valeurs uniquement
    Bonjour.
    Existe-t'il un moyen simple pour exporter un fichier Excel contenant plusieurs onglets vers un nouveau fichier Excel mais uniquement les valeurs (pas de formules) ?

    Merci d'avance à ceux qui me liront.

  2. #2
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonjour.

    Si Wbk1 est le classeur contenant les données au départ, on peut :
    - créer Wbk2 nouveau classeur vide
    - ajouter ou retirer des feuilles à Wbk2 pour que les 2 classeurs en aient le même nombre
    - Pour chaque feuille de Wbk1 (par les index)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    set oRng = wbk1.Worksheets(i).UsedRange
    wbk2.Worksheets(i).Range(oRng.Address).Value = oRng.Value
    wbk2.Worsheets(i).Name = wbk1.Worsheets(i).Name
    Cordialement,

    PGZ

  3. #3
    Membre émérite Avatar de azertix
    Homme Profil pro
    Technicien d'assistance informatique
    Inscrit en
    Juin 2007
    Messages
    961
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien d'assistance informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 961
    Par défaut
    J'espérais qu'il y avait encore plus simple. Du genre un OutputTo avec une option "value only"
    Merci pour ton bout de code parce que j'aurais fait la même chose mais en plus long

  4. #4
    Membre émérite Avatar de azertix
    Homme Profil pro
    Technicien d'assistance informatique
    Inscrit en
    Juin 2007
    Messages
    961
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien d'assistance informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 961
    Par défaut
    Hello. J'ai pondu le code suivant mais l'exécution s'arrête lors de la fermeture avec enregistrement de mon fichier :
    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
    Sub cmdExportValeur_QuandClic()
    '    On Error Resume Next
     
        Dim xls As Excel.Application
        Dim wkb As Workbook
        Set xls = CreateObject("Excel.Application")  ' création d'une nouvelle instance vierge de l'application Excel
     
        xls.Application.SheetsInNewWorkbook = 1
        Set wkb = xls.Workbooks.Add ' ajout d'un classeur Excel
     
        ' parcours des feuilles
        Dim i As Integer
        Dim rng As Range
        xls.Worksheets.Add , , Worksheets.Count - 1
        For i = 1 To Worksheets.Count
            xls.Worksheets(i).Name = Worksheets(i).Name ' affectation du nom
            ' copie des données
            Set rng = Worksheets(i).UsedRange
            rng.Copy
            xls.Worksheets(i).Range(rng.Address).PasteSpecial xlPasteValuesAndNumberFormats, , True
            xls.Worksheets(i).Range(rng.Address).PasteSpecial xlPasteColumnWidths
            Application.CutCopyMode = False
        Next i
     
        Dim nomfic As String
        nomfic = ActiveWorkbook.Path & "\" & Worksheets(1).Range("B4").Value & " - Contrôles 2 2 C - " & Worksheets(1).Range("B5").Value & ".xls"
        wkb.Worksheets(1).Activate
        wkb.Close True, nomfic
     
        Set xls = Nothing
        Set wkb = Nothing
        Set rng = Nothing
    End Sub
    D'autre part, je ne parviens pas à copier la hauteur des lignes

  5. #5
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonsoir.

    Finalement tu ne veux pas copier que les valeurs, mais tout, sauf les formules qui sont à remplacer par les valeurs du moment.

    Dans ce cas, si le code est dans le classeur qui contient les données, je te conseille plutôt de créer un nouveau classeur en y copiant toutes les feuilles du premier.

    Ensuite, dans le deuxième classeur, pour chaque feuille, tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WbkNew.Worksheets(i).Formulalocal = wbkNew.Worksheets(i).Value
    Cela devrait être plus rapide et pas d'ennui avec les formats.

    Note : tu as créé le nouveau classeur dans une nouvelle appli : pas bon pour faire des copies.

    Cela devrait donner qqc comme
    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
    Sub cmdExportValeur_QuandClic()
     
        Dim wkbNew As Excel.Workbook
        Dim i As Integer
        Dim nomfic As String
     
     
     
        Application.SheetsInNewWorkbook = 1
        Set wkbNew = Application.Workbooks.Add ' ajout d'un classeur Excel
        nomfic = ActiveWorkbook.Path & "\" & ThisWorkbook.Worksheets(1).Range("B4").Value & " - Contrôles 2 2 C - " & ThisWorkbook.Worksheets(1).Range("B5").Value & ".xls"
     
        ' parcours des feuilles
        For i = 1 To ThisWorkbook.Worksheets.Count
            ThisWorkbook.Worksheets(i).Copy , wkbNew.Worksheets(wkbNew.Worksheets.Count)
            wkbNew.Worksheets(i + 1).UsedRange.FormulaLocal = wkbNew.Worksheets(i + 1).UsedRange.Value
        Next i
     
        Application.DisplayAlerts = False
        wkbNew.Worksheets(1).Delete
        Application.DisplayAlerts = True
     
     
        wkbNew.Close True, nomfic
     
        Set wkbNew = Nothing
    End Sub
    Cordialement,

    PGZ

  6. #6
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Ou simplement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim Sh As Worksheet
     
    Application.ScreenUpdating = False
    With ThisWorkbook
        For Each Sh In .Worksheets
            Sh.UsedRange.Value = Sh.UsedRange.Value
        Next Sh
        .SaveAs "Bis_" & .Name
    End With

Discussions similaires

  1. [Toutes versions] Export Excel : valeur Monétaire
    Par DonKnacki dans le forum VBA Access
    Réponses: 5
    Dernier message: 22/03/2012, 16h06
  2. Export de valeurs non reconnues par excel
    Par ALLODREN dans le forum Jasper
    Réponses: 2
    Dernier message: 07/08/2009, 10h47
  3. [OpenOffice][Tableur] Export excel sans les formules (uniquement les valeurs)
    Par stacquet dans le forum OpenOffice & LibreOffice
    Réponses: 2
    Dernier message: 03/04/2009, 22h03
  4. [Fortran 77] Importer et exporter des valeurs d'Excel
    Par arnaudsn dans le forum Fortran
    Réponses: 4
    Dernier message: 21/04/2008, 11h20
  5. Export variables VBA vers feuille Excel, valeur arrondi
    Par BluE SphynX dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 05/09/2007, 11h23

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