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

  1. #1
    Nouveau Candidat au Club
    comment faire un copier coller d'un fichier csv avec separation des ; au collage
    Bonjour à tous ,

    Je suis débutant sur vba ,

    Je fais une macro au a un moment il faut récupérer les données csv d'un autre fichier , ainsi j'arrive bien a faire un copier coller mais du coup il ne convertit pas avec les ;

    C'est ici que vous pouvez m'aider , savez vous comment faire pour que lors du collage il y a d'office la séparation a chaque ;

    D'avance merci .

  2. #2
    Expert éminent sénior
    Pourrais-tu montrer le code qui fait la copie ?
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  3. #3
    Membre expérimenté
    Bonjour,
    Citation Envoyé par vikingkong Voir le message
    savez vous comment faire pour que lors du collage il y a d'office la séparation a chaque ;
    Il te faut ouvrir ton csv comme ceci :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
        Workbooks.Open Filename:="fichier.csv"

    Ton csv est alors séparé en colonnes.

  4. #4
    Nouveau Candidat au Club
    Bonjour ,

    C'est ce que j'ai l'impression de faire avec mon code mais cela ne fonctionne pas

    Voici mon code

    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
     Dim Fichier1 As String
     
            Fichier1 = "C:\Users\" & VBA.Environ("USERNAME") & "\Desktop\FICHIER AIDE\export_Extraction_*"
     
        If Dir(Fichier1) <> "" Then
     
            Sheets("FICHIER PIM AKENO").Select
            Range("A1:CL1").Select
            Range(Selection, Selection.End(xlDown)).Select
            Selection.ClearContents
            Workbooks.Open Filename:="C:\Users\" & VBA.Environ("USERNAME") & "\Desktop\FICHIER AIDE\" & Dir(Fichier1)
            Cells.Select
            Selection.Copy
            nomfichier1 = Application.ActiveWorkbook.Name
            Windows("NEWAIDE.xlsm").Activate
            Sheets("FICHIER PIM AKENO").Select
            Cells.Select
            ActiveSheet.Paste
     
            Workbooks(nomfichier1).Close


    Grosso modo mon fichier qui contient la macro s'appelle newaide , à l'intérieur j'ai une feuille qui s'appelle fichier pim akeno" et mon fichier csv n'a pas une fin de nom défini car à chaque téléchargement le nom contient la date .

    En attente de vos réponses .

  5. #5
    Expert éminent sénior
    Citation Envoyé par anasecu Voir le message
    Il te faut ouvrir ton csv comme ceci :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
        Workbooks.Open Filename:="fichier.csv"
    Je ne suis pas de ton avis.

    Personnellement, j'ouvre toujours les CSV avec OpenText.
    Lire ceci : https://docs.microsoft.com/fr-FR/off...books.opentext

    Ca permet de contrôler non seulement le séparateur de données mais aussi la nature des champs.

    @ vikingkong : évite les Select/Selection, surtout sur les Range.

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Dim Fichier1 As String
    Dim WSDest As Worksheet, WBSource As Workbook
     
    Fichier1 = "C:\Users\" & VBA.Environ("USERNAME") & "\Desktop\FICHIER AIDE\export_Extraction_*"
    Set WBDest = Sheets("FICHIER PIM AKENO")
     
    If Dir(Fichier1) <> "" Then
       WSDest.UsedRange.ClearContents
       Set WBSource = Workbooks.OpenText Filename:="C:\Users\" & VBA.Environ("USERNAME") & "\Desktop\FICHIER AIDE\" & Dir(Fichier1), Semicolon:=True, Comma:=False
       ActiveSheet.UsedRange.Copy
       WSDest.Range("A1").PasteSpecial
       WBSource.Close
    End If
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  6. #6
    Expert confirmé
    Bonjour le Fil,

    Personnellement, pour des petits csv, je préfère Open (sans séparateur de valeur) suivi d'un TextToColumns, j'ai moins de surprises qu'avec OpenText.

    Par exemple :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
        Set wbk = Workbooks.Open(Filename:=nomCompletFichier, Format:=5)
        Set rng = wbk.Worksheets(1).Range("A1").CurrentRegion
        rng.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, Comma:=True, _
            ConsecutiveDelimiter:=False, Tab:=False, semicolon:=False, Space:=False, Other:=False, DecimalSeparator:=".", TrailingMinusNumbers:=True
    Cordialement,
    Patrice
    Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.

    Pour dire merci, cliquer sur et quand la discussion est finie, penser à cliquer sur

  7. #7
    Nouveau Candidat au Club
    Citation Envoyé par Menhir Voir le message

    Bonjour Je viens de faire un copier coller de votre code et j'ai une erreur de syntaxe sur cette ligne :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    Set WBSource = Workbooks.OpenText Filename:="C:\Users\" & VBA.Environ("USERNAME") & "\Desktop\FICHIER AIDE\" & Dir(Fichier1), Semicolon:=True, Comma:=False