Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 Aide fichier VBA - conversion de données

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

flo189

XLDnaute Occasionnel
Bonjour à tous,

Besoin de votre aide précieuse. Pour intégrer des données entre deux SI, j’ai besoin de faire une conversion de données.


1 Mon code ne fonctionne pas pour ouvrir un fichier CSV et le coller en en feuil2- A1

2 Sur la feuil3, j’aimerais copier les données de la feuil2 de la ligne A2 en feuil3 D2.

3 Sur la feuil 3, Colonne A, Colonne B, Colonne C, il faut recopier respectivement « Année », « Mois », « Jour » en fonction des données copiées de la Feuil 2

4 J’aimerai séparer le code postal de la ville de la feuil2 colonne D, pour cela j’ai rajouté en feuil3 une colonne G (en jaune).

5 J’aimerais si la ville contient « Paris » en feuil 3 colonne H, afficher uniquement « Paris » et pas Paris 8e arrondissement, Paris 08, Paris Cedex….

6 J’aimerais pouvoir ouvrir une boite enregistrer sous de la feuil3 en csv uniquement



Pour aider à comprendre j’ai ajouté des données à titre d'exemple



Merci de votre aide
 

Pièces jointes

Bonjour CP4,

Super merci à toi en PJ. Le nom fichier csv évolue à chaque fois mais les colonnes restent dans le même ordre.

Je ne parviens pas à joindre un fichier csv je l'ai laissé sous .xlsx

Merci beaucoup de ton aide
 

Pièces jointes

Tu es formidable. Merci beaucoup pour ton aide.
Quel est le code pour ouvrir une boite enregistrer sous uniquement de la feuil3

Encore merci
Si le code répond à tes attentes. Merci de pointer le post pour facilité la recherche aux membres de XLD, dont tu fais parti.

Pour ta question, je t'invite à utiliser l'enregistreur de macro.

Bonne continuation.
 
Merci à toi

Voici le code
Dim Fichier As String
Fichier = "Fichier CSV Cargo"
ThisWorkbook.Sheets("Feuil3").Copy
f = Application.GetSaveAsFilename(Fichier, Filefilter:="Excel Files (*.csv), *.csv*")
ActiveWorkbook.SaveAs Filename:=f
 
Que veux-tu faire exactement? Je te répondrai plus tard car je suis très occupé.
 
Dernière édition:
bonjour à tous
si on considère le classeur comme model et qui ne sera jamais ré enregistré sous un autre nom et seul la feuille 3 sera toujours exporter alors on intersepte le SaveAsUI tout simplement
donc
dans le module thisworkbook tu met ceci
VB:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    If SaveAsUI Then
        Cancel = True
        Dim fname As Variant
        fname = Application.GetSaveAsFilename(InitialFileName:=dossier, filefilter:="CSV Files (*.csv), *.csv", Title:="ENREGISTREMENT EN CSV ")
        If fname = False Then Exit Sub
        Application.DisplayAlerts = False
        Sheets("Feuil3").Copy
        ActiveWorkbook.SaveAs Filename:=fname, FileFormat:=xlCSV, CreateBackup:=False
        ActiveWindow.Close
    End If
End Sub
résultat tu a toujours le dialog pour taper le nom mais c'est automatiquement en csv et uniquement la feuil3
 
Réactions: cp4
Bonsoir @patricktoulon 😉, @flo189 🙂,

@flo189 : Si j'ai compris ta demande, enregistrer feuil3 au format csv avec choix libre du dossier de destination.
Copie le code (perfectible) dans un module standard et associe-le au bouton dédié à cette action.
VB:
Sub Feuille_en_CSV_via_tablo()
    Dim T(), Fichier As String, Chaine As String
    Dim L As Long, f As Integer, c As Integer
    Dim dossier As Object, chemin As String

    Set dossier = Application.FileDialog(msoFileDialogFolderPicker)
   
If dossier.Show = 0 Then
        Exit Sub
    Else
        chemin = dossier.SelectedItems(1)
    End If

    Fichier = chemin & "\" & "Fichier CSV Cargo.csv"
    'Application.ScreenUpdating = False

    T = Feuil3.Range("A1").CurrentRegion.Value
    f = FreeFile()
    Open Fichier For Output As #f
    For L = 1 To UBound(T, 1)
        Chaine = T(L, 1)
        For c = 2 To UBound(T, 2)
            Chaine = Chaine & ";" & T(L, c)
        Next c
        Print #f, Chaine
    Next L
    Close #f
End Sub

Bonne soirée.

Joyeuses fêtes de fin d'année.

edit: code corrigé
 
Dernière édition:
re
@cp4 toujours par le bouton "enregistrer sous "c'est ça la demande 😉
tu peux m'expliquer a quoi sert le blocage de screenupdating avec la méthode open for output ???😅
Re,

Oui, je peux l'expliquer. C'est une coquille. Dans ma macro, il y avait une copie à faire préalablement à open for output. C'est un oubli qui n'a d'ailleurs aucune incidence sur le résultat final.😉
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
1
Affichages
237
Réponses
9
Affichages
336
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…