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 :

Macro Copier coller d'Excel vers NOTEPAD [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Femme Profil pro
    Support métiers bancaire
    Inscrit en
    Mai 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Support métiers bancaire
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2013
    Messages : 12
    Par défaut Macro Copier coller d'Excel vers NOTEPAD
    Bonjour,

    Voila mon problème. Je cherche à l'aide d'une macro a copier dans notepad les données d'une feuille excel.
    Pour l'instant j'ai réussi ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        Id = Shell("notepad")            '= ca m'ouvre bien le blocnote
        Sheets("repcpt").Select        '= repcpt est bien le nom de l'onglet dans lequel je viens chercher mes informations
        Columns("A:A").Select           '= je veux copier toute la colonne A
        Selection.Copy
    et a partir de la ca coince, je n'arrive pas à lui dire de faire le coller dans le bloc note...
    il faut bien sur ensuite que je sauvegarde le bloc note avec un nom spécifique...
    Auriez-vous une idée.
    Merci d'avance de votre aide

  2. #2
    Membre émérite
    Homme Profil pro
    conseiller
    Inscrit en
    Janvier 2013
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : conseiller
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 367
    Par défaut
    Bonsoir,

    Tu as posté ta question dans le forum dédié à Excel en général et non celui dédié aux questions touchant au VBA.

    A tester (copie les données de la plage A1:A50 de la feuille 1 dans NotePad) :
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    Option Explicit
    #If Win64 Then 'si Excel 64 bits
      Declare PtrSafe Function FindWindow Lib "user32.dll" Alias "FindWindowA" ( _
        ByVal lpClassName As String, ByVal lpWindowName As String) As Long
     
      Declare PtrSafe Function FindWindowEx Lib "user32.dll" Alias "FindWindowExA" ( _
        ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, _
        ByVal lpsz2 As String) As Long
     
      Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
     
    #Else 'si Excel 32 bits
      Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" ( _
         ByVal lpClassName As String, ByVal lpWindowName As String) As Long
     
      Declare Function FindWindowEx Lib "user32.dll" Alias "FindWindowExA" ( _
        ByVal hWnd1 As Long, ByVal hwnd2 As Long, ByVal lpsz1 As String, _
        ByVal lpsz2 As String) As Long
     
      Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
    #End If
     
    Sub NotePad()
    Dim wNotePad As Long, wEdit As Long, RetVal As Long
    Dim Data As Range, Wsh As Object
     
    Const Pause As Long = 200
     
    RetVal = Shell("notepad", vbNormalFocus)
    If RetVal = 2 Or RetVal = 3 Then Exit Sub
     
    Do
      DoEvents
      wNotePad = FindWindow("Notepad", "Sans titre - Bloc-notes")
    Loop Until wNotePad > 0
     
    Sleep Pause
     
    Set Data = Worksheets(1).Range("A1:A50")
    Data.Copy
    Sleep Pause
    Set Wsh = CreateObject("WScript.Shell")
    Wsh.SendKeys "^c"
    Sleep Pause
    wEdit = FindWindowEx(wNotePad, 0&, "Edit", vbNullString)
    Sleep Pause
    Wsh.SendKeys "^v"
    Sleep Pause
    Application.CutCopyMode = False
    Set Wsh = Nothing
    End Sub
    Au besoin augmenter le temps de la constante Pause en la passant à 400 (par exemple).

    A+

  3. #3
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut


    Bonjour, bonjour !

    Pas besoin de Notepad ‼ Via Enregistrer sous et sélectionner un format texte …

    Effectivement, voir les nombreux exemples dans le bon forum …


    ______________________________________________________________________________________________________
    Je suis Charlie, Bardo, Sousse

  4. #4
    Membre averti
    Femme Profil pro
    Support métiers bancaire
    Inscrit en
    Mai 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Support métiers bancaire
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2013
    Messages : 12
    Par défaut Bonjour,
    En fait si j'ai vraiment besoin de notepad parce que ma ligne dans Excel est comme ceci
    515006;7871 ;000000000120.42000;000000000000.00000;C0;20151014;
    Quanf je fais sauvegarder sous..et que j'ouvre le fichier sous le bloc note ca me rajoute des guillemets
    "515006;7871 ;000000000120.42000;000000000000.00000;C0;20151014;"
    ce qui fait que je ne peux plus me servir de ce fichier pour l'intégrer dans un autre de mes outils de travail.
    Par contre le copier coller ne m'ajoute pas de guillemets.
    Merci de ta réponse.
    Ps : Est-il possible de déplacer cette conversation dans le bon forum...désolée pour l'erreur....

  5. #5
    Membre émérite
    Homme Profil pro
    conseiller
    Inscrit en
    Janvier 2013
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : conseiller
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 367
    Par défaut
    Bonjour,
    dans ce cas pas besoin de tout ça, stocke tes données dans un tableau et écris-les directement dans le fichier texte.
    Admettons que ton fichier existe déjà (nommé test.txt dans l'exemple) : tu l'ouvres en mode écriture (ce qui écrasera le contenu actuel) et tu remplaces les données inscrites dedans par les nouvelles :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub test()
    Dim intFic As Integer, T(2) As String
    T(0) = "515006;7871 ;000000000120.42000;000000000000.00000;C0;20151014;"
    T(1) = "autre ligne"
    T(2) = "515006;7871 ;000000000120.42000;000000000000.00000;C0;20151013;"
    intFic = FreeFile
    Open "C:\Users\xxx\Desktop\test.txt" For Output As intFic 'nom du fichier à adapter
    For i = LBound(T) To UBound(T)
      Print #intFic, T(i)
    Next i
    Close intFic
    End Sub
    C'est un exemple mais on peut faire autrement (c'est juste pour que tu comprennes le principe).
    A+

  6. #6
    Membre averti
    Femme Profil pro
    Support métiers bancaire
    Inscrit en
    Mai 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Support métiers bancaire
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2013
    Messages : 12
    Par défaut Bonjour,
    Merci beaucoup, ca fontionne correctement et j'obtiens bien le résultat voulu. (je viens de voir ton autre message mais je ne suis pas sure que ca aurait fonctionné, mon fichier excel a des données qui se mettent a jour et ce n'est donc jamais les mêmes codes et montants qui apparaissent) du coup celui-ci a résolu ma demande. Encore une petite chose si possible, une fois que mon fichier est rempli sous NOTEPAD, je voudrais pouvoir le sauvegarder avec un nom spécifique (genre repcpt.txt) a partir toujours de la macro. est-ce que cela est possible ? Merci encore de ton aide

  7. #7
    Membre émérite
    Homme Profil pro
    conseiller
    Inscrit en
    Janvier 2013
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : conseiller
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 367
    Par défaut
    Merci beaucoup, ca fontionne correctement et j'obtiens bien le résultat voulu. (je viens de voir ton autre message mais je ne suis pas sure que ca aurait fonctionné, mon fichier excel a des données qui se mettent a jour et ce n'est donc jamais les mêmes codes et montants qui apparaissent)
    Mais si justement ! Là ce n'est qu'un exemple basique mais au lieu de noter en dur les différentes données dans le code il te suffit de stocker les contenu de la colonne A dans une variable tableau ou Range au début du code.
    Les éléments que tu copieras dans le fichier texte seront donc ceux qui sont actualisés.
    Concernant la manipulation des fichiers texte regarde et étudie ce lien, notamment la partie traitant des fichiers texte pour comprendre le principe.
    A+

  8. #8

  9. #9
    Membre émérite
    Homme Profil pro
    conseiller
    Inscrit en
    Janvier 2013
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : conseiller
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 367
    Par défaut
    Un exemple vite fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub test()
    Dim intFic As Integer, R As Range, ws As Worksheet
    Set ws = Sheets("Feuil1")'à adapter
     
    Set R = ws.Range(ws.Cells(1, 1), ws.Cells(ws.Rows.Count, 1).End(xlUp))
    intFic = FreeFile
    Open "C:\Users\xxx\Desktop\test.txt" For Output As intFic 'nom du fichier à adapter
     
    For i = 1 To R.Rows.Count
      Print #intFic, R.Cells(i, 1).Value
    Next i
     
    Close intFic
    End Sub
    A+

  10. #10
    Membre averti
    Femme Profil pro
    Support métiers bancaire
    Inscrit en
    Mai 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Support métiers bancaire
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2013
    Messages : 12
    Par défaut RE bonjour,
    bon la je crois que je suis complètement perdue.....
    Voila pour l'instant le code que j'ai réussi a mettre (avec ta grande aide..merci)

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    Option Explicit
    #If Win64 Then 'si Excel 64 bits
      Declare PtrSafe Function FindWindow Lib "user32.dll" Alias "FindWindowA" ( _
        ByVal lpClassName As String, ByVal lpWindowName As String) As Long
     
      Declare PtrSafe Function FindWindowEx Lib "user32.dll" Alias "FindWindowExA" ( _
        ByVal hWnd1 As Long, ByVal hwnd2 As Long, ByVal lpsz1 As String, _
        ByVal lpsz2 As String) As Long
     
      Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
     
    #Else 'si Excel 32 bits
      Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" ( _
         ByVal lpClassName As String, ByVal lpWindowName As String) As Long
     
      Declare Function FindWindowEx Lib "user32.dll" Alias "FindWindowExA" ( _
        ByVal hWnd1 As Long, ByVal hwnd2 As Long, ByVal lpsz1 As String, _
        ByVal lpsz2 As String) As Long
     
      Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
    #End If
     
     
    Sub M_balance_repcpt()
    '
    ' M_Balance_Repcpt
    '
     
    '
            Sheets.Add
        ActiveSheet.Name = "repcpt"
        Sheets("Repcpt1").Select
        Columns("A:A").Select
        Selection.Copy
        Sheets("repcpt").Select
        Range("A1").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Application.CutCopyMode = False
        ActiveWorkbook.Worksheets("repcpt").Sort.SortFields.Clear
        ActiveWorkbook.Worksheets("repcpt").Sort.SortFields.Add Key:=Range("A1"), _
            SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
        With ActiveWorkbook.Worksheets("repcpt").Sort
            .SetRange Range("A1:A1687")
            .Header = xlNo
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
     
        Dim wNotePad As Long, wEdit As Long, RetVal As Long
        Dim Data As Range, Wsh As Object
     
        Const Pause As Long = 200
     
        RetVal = Shell("notepad", vbNormalFocus)
        If RetVal = 2 Or RetVal = 3 Then Exit Sub
     
        Sleep Pause
     
        Set Data = Sheets("repcpt").Columns("A:A")
        Data.Copy
        Sleep Pause
        Set Wsh = CreateObject("WScript.Shell")
        Wsh.SendKeys "^c"
        Sleep Pause
        wEdit = FindWindowEx(wNotePad, 0&, "Edit", vbNullString)
        Sleep Pause
        Wsh.SendKeys "^v"
        Sleep Pause
        Application.CutCopyMode = False
        Set Wsh = Nothing
     
    End Sub
    Donc la mon bloc note est bien ouvert, les lignes de mon fichier excel sont bien copier dedans. Pour l'instant il s'appelle toujours "sans titre"
    Je peux manuellement faire "fichier" enregistrer sous = > C:\TEMP\repcpt.txt mais en fait je voudrais pouvoir ecrire ca a la suite (je pense) aprés le set Wsh = Nothing....
    Je ne sais pas si mes questions ou interrogations sont pertinentes, je ne fais pas souvent du VBA...j'espère ne pas trop monopoliser de ton temps.

  11. #11
    Membre émérite
    Homme Profil pro
    conseiller
    Inscrit en
    Janvier 2013
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : conseiller
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 367
    Par défaut
    Tu mélanges tout là !

    Oublie le 1er code et utilise le dernier code fourni (Sub Test).
    Crée un fichier texte sans rien dedans sur ton bureau (c'est pour l'exemple) et nomme-le "test.txt".

    Les données à recopier dedans sont dans la colonne A de la feuille 1 (nommée "Feuil1") de ton fichier Excel.
    Si la feuille porte un autre nom modifier le code en conséquence ligne Set ws = Sheets("Feuil1")'à adapter.

    Modifie le chemin du fichier en y plaçant le tien dans la ligne Open "C:\Users\xxx\Desktop\test.txt" For Output As intFic 'nom du fichier à adapter.

    Lance la macro.

    Ouvre ensuite ton fichier texte et tu trouveras l'ensemble des données de la colonne A dans le fichier.

    A+

  12. #12
    Invité
    Invité(e)
    Par défaut
    Dans mon lien il y a même un fichier d'exemple!

  13. #13
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut heu....
    bonjour
    un exemple tu peut meme choisir le sens
    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
    Sub sauve_colA()
    tablo = Range("A1", Cells(Rows.Count, 1).End(xlUp)).Value
    fichier = ThisWorkbook.Path & "\copie de " & ActiveSheet.Name & " colonne A.txt"
    '***************
    sens = ";"
    'sens = ";" & vbCrLf ' débloquer cette ligne pour transcrire verticalement dans le fichier .txt
    '******************
    For i = 1 To UBound(tablo)
    texte = texte & tablo(i, 1) & sens
    Next
    x = FreeFile
    Open fichier For Output As #x
    Print #x, texte
    Close #x
    End Sub
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PPT-2003] Copier coller tableau Excel vers PP
    Par Kam's11 dans le forum VBA PowerPoint
    Réponses: 2
    Dernier message: 15/12/2017, 11h23
  2. [XL-2003] Macro Copier/Coller données Excel vers document Word avec Signets
    Par Julien91080 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 22/05/2013, 12h28
  3. [XL-2007] Copier-coller texte Excel vers internet ajoute des guillemets intempestifs
    Par cornelius59 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 11/10/2009, 21h31
  4. Automatisation de Copier-Coller d'Excel vers Word
    Par mfriess347 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 12/08/2008, 15h40
  5. Copier - Coller de Excel vers un datagridview
    Par sylchar dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 28/03/2007, 10h26

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