VBA - Enregistrer formules avant export CSV Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
F
FirstnameLastname
Jeune membre
Jeune membre
Messages : 40
Inscrit le : 4 janvier 2019
Version d'Excel : 16

Message par FirstnameLastname » 9 janvier 2019, 10:16

Bonjour à tous et à toutes,

J'aimerais réaliser une macro me permettant de copier (garder en mémoire) une plage de formules et de la recopier après un export CSV (également réalisé par macro).

Cet export CSV récupère les valeurs des cellules et les colle au même endroit avant d'exporter au CSV. Une fois le fichie .csv créé, toutes mes formules ont disparu, il ne me reste que les valeurs écrites en dur.

Voici la partie "copier" de ma macro, mais elle ne fonctionne pas :
Set Plage = Range("T1:AQ1" & Cells(Rows.Count, "T").End(xlUp).Row)
Selection.SpecialCells(xlCellTypeConstants, 23).Select
Plage.Select
Selection.Copy
(...) 'export csv
Selection.Paste
G
GVIALLES
Membre dévoué
Membre dévoué
Messages : 552
Appréciations reçues : 44
Inscrit le : 28 novembre 2017
Version d'Excel : 2016

Message par GVIALLES » 9 janvier 2019, 11:20

Bonjour Firstname...

Peux-tu en dire un peu plus? A quoi va servir le csv créé?
Cordialement,

Gérard
F
FirstnameLastname
Jeune membre
Jeune membre
Messages : 40
Inscrit le : 4 janvier 2019
Version d'Excel : 16

Message par FirstnameLastname » 9 janvier 2019, 11:25

Ce csv sera importé dans le CRM utilisé par mon entreprise.
Il s'agit de l'unique format de fichier accepté par ce CRM.
Avatar du membre
Jean-Eric
Fanatique d'Excel
Fanatique d'Excel
Messages : 14'711
Appréciations reçues : 436
Inscrit le : 27 août 2012
Version d'Excel : O365 32 bits

Message par Jean-Eric » 9 janvier 2019, 11:34

Bonjour,
une piste ?
Public Sub Import_CSV()
Dim ws As Worksheet, n As Long, rng As Range
    n = Cells(Rows.Count, 20).End(xlUp).Row
    Set rng = Cells(20).Resize(n, 24)
    Set ws = Worksheets.Add
    rng.SpecialCells(2).Copy ws.Cells(1)
    'export csv...
    Application.DisplayAlerts = False
    ws.Delete
End Sub
Jean-Eric

Je ne réponds pas aux M.P. non sollicités.
F
FirstnameLastname
Jeune membre
Jeune membre
Messages : 40
Inscrit le : 4 janvier 2019
Version d'Excel : 16

Message par FirstnameLastname » 9 janvier 2019, 12:06

Mea culpa !

Ca fonctionne parfaitement mais je ne comprends pas vraiment comment ça fonctionne, je pensais que je devais rajouter "coller". Je ne vois pas où ça se produit.
Modifié en dernier par FirstnameLastname le 9 janvier 2019, 12:21, modifié 1 fois.
G
GVIALLES
Membre dévoué
Membre dévoué
Messages : 552
Appréciations reçues : 44
Inscrit le : 28 novembre 2017
Version d'Excel : 2016

Message par GVIALLES » 9 janvier 2019, 12:21

Donc, si j'ai bien compris, tu veux que le CSV reprenne les valeurs de la plage de cellules?
Cordialement,

Gérard
Avatar du membre
Jean-Eric
Fanatique d'Excel
Fanatique d'Excel
Messages : 14'711
Appréciations reçues : 436
Inscrit le : 27 août 2012
Version d'Excel : O365 32 bits

Message par Jean-Eric » 9 janvier 2019, 13:09

Re,
@ FirstnameLastname
A qui t’adresses-tu ?
Cdlt.
Jean-Eric

Je ne réponds pas aux M.P. non sollicités.
F
FirstnameLastname
Jeune membre
Jeune membre
Messages : 40
Inscrit le : 4 janvier 2019
Version d'Excel : 16

Message par FirstnameLastname » 9 janvier 2019, 13:51

Jean-Eric a écrit :
9 janvier 2019, 13:09
Re,
@ FirstnameLastname
A qui t’adresses-tu ?
Cdlt.
Je m'adresse à toi en disant que cela fonctionne parfaitement même si je ne vois pas trop comment.
Avatar du membre
Jean-Eric
Fanatique d'Excel
Fanatique d'Excel
Messages : 14'711
Appréciations reçues : 436
Inscrit le : 27 août 2012
Version d'Excel : O365 32 bits

Message par Jean-Eric » 9 janvier 2019, 14:34

Re,
La procédures est identique à la tienne, sinon que l'on crée une feuille temporaire pour récupérer les données à exporter.
Cette feuille est supprimée en fin de procédure.
Que ne comprends-tu pas ?
Cdlt.
Jean-Eric

Je ne réponds pas aux M.P. non sollicités.
F
FirstnameLastname
Jeune membre
Jeune membre
Messages : 40
Inscrit le : 4 janvier 2019
Version d'Excel : 16

Message par FirstnameLastname » 10 janvier 2019, 09:54

Jean-Eric,

Je n'ai pas eu trop le temps de bosser dessus hier après-midi.
Après vérification, cela ne fonctionne pas. Une nouvelle feuille est bien créée puis supprimée mais les données restent en dur dans ma feuille principale et les fonctions sont supprimées.

Les formules que j'aimerais garder sont dans la plage T2:AQ2.

Je vais commenter ligne par ligne voir si j'ai bien compris ta macro :
Public Sub Import_CSV()
Dim ws As Worksheet, n As Long, rng As Range
   'On affecte à n une plage du nombre de lignes et de 20 colonnes
    n = Cells(Rows.Count, 20).End(xlUp).Row
    'Ici je ne comprends pas pourquoi Cells ne possède qu'une seule valeur et pourquoi il est nécessaire de redimensionner la plage
    Set rng = Cells(20).Resize(n, 24)
    'On créé une nouvelle feuille
    Set ws = Worksheets.Add
    'Et on copie la plage de la feuille principale à partir de la première cellule de la nouvelle feuille
    rng.SpecialCells(2).Copy ws.Cells(1)
    'export csv...
    'Pas de message d'avertissement
    Application.DisplayAlerts = False
    'On supprime la nouvelle feuille
    ws.Delete
End Sub
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message