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 :

Copier-coller une ligne vers un autre fichier


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    ouvrier
    Inscrit en
    Juin 2016
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : ouvrier

    Informations forums :
    Inscription : Juin 2016
    Messages : 69
    Points : 24
    Points
    24
    Par défaut Copier-coller une ligne vers un autre fichier
    Bonjour à tous

    je vous demande de l'aide pour effectuer un copier-coller sur Excel en mode VBA

    Je vous explique ma situation:

    j'ai actuellement 2 à 3 fichiers qui me permettent de générer de mail en automatique afin de communiquer, cette action se lance lorsque je double clic dans la colonne A de la dernière ligne d'info rentrée ( il y as des centaines de lignes ) mais l'info a envoyer est toujours celle ou on double clic.

    mon soucis c'est que ce fichier est partager entre plusieurs personnes et que malheureusement une personne a fait une copie et du coup les données se retrouvent mélanger entre deux fichiers qui n'en était qu'un a la base.

    D'où mon idée de vouloir tout rassembler dans un seul et même fichier de sauvegarde loger sur un autre serveur, macro à coller dans les fichiers partagés et rien dans le fichier de sauvegarde.

    je souhaiterai aussi que ce fichier soit verrouillé via un code comme ça personne ne pourrais écrire à l'intérieur sans avoir le code.

    Je souhaite donc créer un code VBA qui va copier-coller la ligne entière ou mon double clic a été effectué que la macro ouvre un autre fichier Excel, qu'il déverrouille le fichier, colle la ligne en question à la dernière ligne du tableau, reverrouille le fichier, fait un enregistrement, ferme le fichier de sauvegarde, et tout ca en mode invisible pour l'opérateur.

    Petite précision j'ai déjà une boite de dialogue qui s'ouvre a mon double clic, donc je pensais le mettre a la suite dans le même module

    je vous remercie par avance...

    Flo

  2. #2
    Membre émérite Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Points : 2 594
    Points
    2 594
    Par défaut
    Bonjour Flobox, bonjour le forum,

    je te propose le code ci-dessous, à intégrer dans le tien, que tu devras largement adapter vu que tu ne nous as pas fourni beaucoup de détails... :

    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
    Dim CS As Workbook 'déclare la variable CS (Classeur Source)
    Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
    Dim CD As Workbook 'déclare la variable CD (Classeur Destination)
    Dim OD As Worksheet 'déclare la variable OS (Onglet Destination)
    Dim CA As String 'déclare la variable CA (Chemin d'Accès)
    Dim LR As Long 'déclare la variable LR (Ligne de Référence)
    Dim DEST As Range 'déclare la variable DEST (cellule de DESTination)
     
    Application.ScreenUpdating = False 'masque les rafraîchissements d'écran
    Set CS = ThisWorkbook 'définit le classeur source CS
    Set OS = CS.ActiveSheet 'définit l'onglet source OS
    LR = ActiveCell.Row 'définit la ligne de référence LR
    CA = "C:balbabla\blabla\blabla\" 'définit la chemin d'accès du fichier destination CA <=== à adapter à ton cas
    Set CD = Workbooks.Open(CA & "Classeur destination.xlsx") 'définit le classeur destination CD <=== nom du classeur à adapter à ton cas
    OD = CD.Worksheets(1) 'définit l'onglet destination OD <=== à adapter à ton cas
    OD.Unprotect "Toto" 'enlève la protection de l'onglet OD <=== mot de passe à adapter à ton cas
    Set DEST = OD.Cells(Application.Rows.Count, "A").End(xlUp).Offset(1, 0) 'définit la cellule de destination DEST (première ligne vide de la colonne A de l'onglet OD, colonne "A")
    OS.Rows(LR).Copy DEST 'copie la ligne LR de l'onglet source et la colle dans DEST
    OD.Protect "Toto" 'protège l'onglet OD<=== mot de passe à adapter à ton cas
    CD.Close True 'ferme le classeur destination en enregistrant les modifications
    Application.ScreenUpdating = True 'Affiche les rafraîchissements d'écran
    À plus,

    Thauthème

    Je suis Charlie

  3. #3
    Membre à l'essai
    Homme Profil pro
    ouvrier
    Inscrit en
    Juin 2016
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : ouvrier

    Informations forums :
    Inscription : Juin 2016
    Messages : 69
    Points : 24
    Points
    24
    Par défaut
    Bonjour,

    Super je vais essayer ça ...

    je vais tester ça ce soir je pense..

    Je te redis ..

  4. #4
    Membre à l'essai
    Homme Profil pro
    ouvrier
    Inscrit en
    Juin 2016
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : ouvrier

    Informations forums :
    Inscription : Juin 2016
    Messages : 69
    Points : 24
    Points
    24
    Par défaut
    Bonjour,

    J ai tester le code mais ça bug au niveau de la sélection de l'onglet.

    Je ne comprends pas, j ai essayé de changer le nom de l'onglet mais rien ni fait.

    J ai nommé mon onglet SAVE

    Cordialement

  5. #5
    Membre émérite Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Points : 2 594
    Points
    2 594
    Par défaut
    Re,

    Save est un mot clé VBA, j'aurais plutôt évité... Mais encore une fois, si tu ne daignes pas fournir les indications nécessaires, nous ne pourrons pas te proposer un code adapté...
    À plus,

    Thauthème

    Je suis Charlie

  6. #6
    Membre à l'essai
    Homme Profil pro
    ouvrier
    Inscrit en
    Juin 2016
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : ouvrier

    Informations forums :
    Inscription : Juin 2016
    Messages : 69
    Points : 24
    Points
    24
    Par défaut
    Bonjour,

    Que puis-je vous fournir comme info pour vous aider ?

    Cordialement

  7. #7
    Membre émérite Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Points : 2 594
    Points
    2 594
    Par défaut
    Re,

    Dans le code que je t'ai proposé, chaque fois qu'il y a une commentaire : à adapter à ton cas, c'est qu'il manque la véritable donnée. Ce n'est pas toujours indispensable comme info mais ça te permettra de tester dans les véritables conditions et de nous dire ce qui ne va pas...
    Fournis-nous aussi le code initial dont tu parles...
    À plus,

    Thauthème

    Je suis Charlie

  8. #8
    Membre à l'essai
    Homme Profil pro
    ouvrier
    Inscrit en
    Juin 2016
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : ouvrier

    Informations forums :
    Inscription : Juin 2016
    Messages : 69
    Points : 24
    Points
    24
    Par défaut
    Je vais essayer de te donner ça.

    Merci

  9. #9
    Membre à l'essai
    Homme Profil pro
    ouvrier
    Inscrit en
    Juin 2016
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : ouvrier

    Informations forums :
    Inscription : Juin 2016
    Messages : 69
    Points : 24
    Points
    24
    Par défaut
    RE

    Voici un aperçu en PDF des fichiers utilisés et du code que j'utilise.

    si ca peux aider..

    Cordialement
    Images attachées Images attachées

  10. #10
    Membre émérite Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Points : 2 594
    Points
    2 594
    Par défaut
    Re,

    La politique de ce forum est de ne pas mettre de pièce jointe. Je trouve ça pas pratique mais bon, personne ne me force à venir ici.
    En revanche, mettre une pièce jointe qui ne permet même pas de faire un copier/coller du code c'est encore plus couillon ! Désolé mais le passe la main...

    À plus,

    Thauthème

    Je suis Charlie

  11. #11
    Membre à l'essai
    Homme Profil pro
    ouvrier
    Inscrit en
    Juin 2016
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : ouvrier

    Informations forums :
    Inscription : Juin 2016
    Messages : 69
    Points : 24
    Points
    24
    Par défaut
    Ha pardon je ne savais que je pouvais coller le code

    je ne savais pas que vous vouliez tester le code en place.

    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
     
    Sub Lance_TXT_Mail()
     
        Set WSh = ThisWorkbook.Worksheets("ENTREE AMELIORATION")
        Flg_Ok = False
        Texte = ""
        List_Dest = ""
        With WSh
            Sous_Rep = .Range("A" & Ligne)
            Nom_TXT = .Range("A" & Ligne) & ".TXT"
        End With
        Flg_Ok = Liste_Sous_Dos(Disque & Rep, SRC)
        If Not Flg_Ok Then  ' Sous_Rep existe pas
            Ref = InputBox("Ajout Reference au nom du REPERTOIRE " & Sous_Rep & " :", "Ajout Reference!", "", 2)
            If Ref <> "" Then
                Sous_Rep = Sous_Rep & "-" & Ref
            End If
            Flg_Ok = CreerDossier(Disque & Rep & Sous_Rep)
            If Not Flg_Ok Then
                MsgBox "Attention: Probleme creation Sous Repertoire: " & Debut_Rep
                Exit Sub
            End If
        End If
        If SRC <> "" Then
            Sous_Rep = SRC
        End If
        'formatage texte pour fichier TXT
        Call Formatage_Texte
        'Fichier TXT exist
        Chemin = Disque & Rep & Sous_Rep & "\" & Nom_TXT
        Ok = Dir(Chemin)
        Mail = MsgBox("Voulez vous envoyez un @Mail pour une d?rogation syst?me d?s maintenant ....?", vbYesNo, "ENVOI @MAIL")
        If Mail = vbYes Then
            'envoi @mail
            Call Mail_Selection_Filtre_Range(Titre_Val, Signature)
            Signature = Left(Signature, Len(Signature) - 4)
            Email = "[ Envoi @Mail signature: " & Signature & " ] le : " & Now() & vbNewLine & "Destinataire(s): " & List_Dest
            Call Ajout_Email(Chemin, Email)
        End If
        If Ok <> "" Then
            Call Majour_Fichier(Chemin, Email)
        Else
            Call Creation_Fichier(Chemin)
        End If
        Msg_UF_Mess = "Text registr? dans fichier [" & Nom_TXT & "] sur le serveur outil " & _
                        " dossier [Amelioration outil\" & Sous_Rep & "]" & vbCrLf & _
                        "------------------------------------------------------------------" & vbCrLf & Texte & Email
        UF_Message.Show
    '    Unload UF_Choix_Ops
     
    Dim CS As Workbook 'déclare la variable CS (Classeur Source)
    Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
    Dim CD As Workbook 'déclare la variable CD (Classeur Destination)
    Dim OD As Worksheet 'déclare la variable OS (Onglet Destination)
    Dim CA As String 'déclare la variable CA (Chemin d'Accès)
    Dim LR As Long 'déclare la variable LR (Ligne de Référence)
    Dim DEST As Range 'déclare la variable DEST (cellule de DESTination)
     
    Application.ScreenUpdating = False 'masque les rafraîchissements d'écran
    Set CS = ThisWorkbook 'définit le classeur source CS
    Set OS = CS.ActiveSheet 'définit l'onglet source OS
    LR = ActiveCell.Row 'définit la ligne de référence LR
    CA = "\\titi\SAVE-AMELIORATION\" 'définit la chemin d'accès du fichier destination CA <=== à adapter à ton cas
    Set CD = Workbooks.Open(CA & "SAVE-AMELIORATION-DERO.xlsx") 'définit le classeur destination CD <=== nom du classeur à adapter à ton cas
    OD = CD.Worksheets(Amelioration-dero) 'définit l'onglet destination OD <=== à adapter à ton cas
    OD.Unprotect "Toto" 'enlève la protection de l'onglet OD <=== mot de passe à adapter à ton cas
    Set DEST = OD.Cells(Application.Rows.Count, "A").End(xlUp).Offset(1, 0) 'définit la cellule de destination DEST (première ligne vide de la colonne A de l'onglet OD, colonne "A")
    OS.Rows(LR).Copy DEST 'copie la ligne LR de l'onglet source et la colle dans DEST
    OD.Protect "Toto" 'protège l'onglet OD<=== mot de passe à adapter à ton cas
    CD.Close True 'ferme le classeur destination en enregistrant les modifications
    Application.ScreenUpdating = True 'Affiche les rafraîchissements d'écran
    End Sub


    Voila le code partagé, je ne sais pas si c'est ainsi qu'il faut faire.

    En cous remerciant

    Bonne soirée

  12. #12
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 927
    Points
    55 927
    Billets dans le blog
    131
    Par défaut
    Salut

    Citation Envoyé par Thautheme Voir le message
    Re,

    La politique de ce forum est de ne pas mettre de pièce jointe. Je trouve ça pas pratique mais bon, personne ne me force à venir ici.
    En revanche, mettre une pièce jointe qui ne permet même pas de faire un copier/coller du code c'est encore plus couillon ! Désolé mais le passe la main...

    Ce n'est pas tout à fait exact. Extrait de ce message:

    Citation Envoyé par Pierre Fauconnier Voir le message
    Bonjour

    Vous avez remarqué qu’il est possible de joindre un fichier à une discussion pour illustrer votre demande.
    Cette possibilité doit être utilisée en dernier recours, lorsque les explications fournies dans un français correct et les réponses y apportées n’ont pas permis de résoudre le problème.

    Il est inutile et malvenu de joindre un fichier lors de la création de la discussion. Faites l’effort de formuler votre demande en français, en la relisant avant de la poster. Vous aurez beaucoup plus de chances d’obtenir des réponses adéquates.

    La politique du forum, c'est de ne pas mettre de pièce jointe lors de la demande initiale. Se forcer à expliquer son problème avec les captures d'écran utiles et le code posant souci permet souvent de le clarifier, et parfois même de trouver la solution. En formation, je demande souvent aux participants de formuler autrement le "ça marche pô" et c'est rare que le déclic ne se fasse pas lors de cette reformulation.

    Qu'après quelques tentatives infructueuses, un fichier soit joint à la discussion ne pose aucun problème
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  13. #13
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 927
    Points
    55 927
    Billets dans le blog
    131
    Par défaut
    Citation Envoyé par Thautheme Voir le message
    Re,

    Save est un mot clé VBA, j'aurais plutôt évité...
    Au passage...

    SAVE n'est pas un mot-clé de VBA => il n'existe pas d'instruction ou de fonction nommée SAVE en VBA. Le modèle-objet EXCEL propose une méthode SAVE liée à un workbook, mais ça n'a rien à voir avec le VBA mais bien avec la bibliothèque EXCEL.

    De surcroît, ça ne pose aucun problème de nommer un onglet SAVE, puisque de toute manière dans le code, le nom de l'onglet sera toujours entre guillemets et donc jamais interprété comme une instruction, fonction, propriété ou méthode...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

Discussions similaires

  1. [XL-2007] Excel 2007 Copier Coller une ligne vers une autre feuille
    Par fcjunic dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 04/02/2013, 21h54
  2. copier coller de ligne vers un autre onglet
    Par dinettes dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/06/2010, 17h43
  3. [XL-2007] Copier coller une ligne excel sur autre feuille avec conditions
    Par amstelveen dans le forum Excel
    Réponses: 5
    Dernier message: 11/05/2009, 18h54
  4. [VBA]comment copier une ligne vers un autre classeur
    Par iboulaye1980 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 02/05/2007, 18h22
  5. Réponses: 3
    Dernier message: 23/09/2006, 15h19

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