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 :

Copie de ligne dans un autre classeur


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    technicien BE
    Inscrit en
    Juin 2016
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : technicien BE

    Informations forums :
    Inscription : Juin 2016
    Messages : 50
    Par défaut Copie de ligne dans un autre classeur
    Bonjour,

    Voila trois jours que je m'arrache les cheveux pour réussir à créer une macro.

    je souhaite réaliser une macro qui depuis le classeur A va créer un classeur B puis copier la première ligne et la ligne active du classeur A dans le classeur B et enfin s'enregistre.

    Pour le moment j'arrive à créer le classeur B, ça bloque au niveau de la copie des lignes (et j'avoue je ne sais pas comment choisir la ligne active) et j'arrive a enregistrer.

    J'ai mis un fichier test pour que vous puissiez voir la macro que j'ai réaliser.

    Je vous remercie d'avance pour votre aide.

    essai macro.xlsm

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Florent6744 Voir le message
    Bonjour,

    Une solution possible dans ce fichier. Clic droit sur une cellule de la colonne 1, chemin à adapter.

  3. #3
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Bonjour,

    pour copier la ligne de la cellule sélectionnée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Range(Cells(ActiveCell.Row, "A"), Cells(ActiveCell.Row, "E")).Copy
    pour recopier la lignes des titres dans la plage A10:E10 par exemple (si c'est toujours pareil bien sûr):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
         Titres = Array("Num devis", "Date", "Acheteur", "Vendeur", "Méthode")
         [A10:E10] = Titres
    Autre chose, j'ai vu que vous aviez créé la macro "Sub selection()". Pour nommer des macros ou des variables, vous n'avez pas le droit d'utiliser des termes réservés à Excel, mettez le mot au pluriel si vous voulez conserver ce nom "Sub Selections()"

    Cdlt

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour ARTURO83
    Ta remarque est justifiée.
    Pour être toutefois totalement dans le même esprit que celui de VBA en matière de nommage des variables, il est plus convenable de réserver l'utilisation du "pluriel" (suffixe "s") pour désigner une collection (cela permet un examen visuel plus facile lors d'interventions de maintenance).

  5. #5
    Membre confirmé
    Homme Profil pro
    technicien BE
    Inscrit en
    Juin 2016
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : technicien BE

    Informations forums :
    Inscription : Juin 2016
    Messages : 50
    Par défaut
    Bonjour,

    Merci pour votre aide, la macro marche nickel (une fois qu'on a compris qu'il faut donner une adresse et un nom pour l'ouverture du nouveau fichier), mais j'aimerais juste remplacer le click droit par un bouton.
    Par contre il y a une chose que je ne comprend pas.
    A quoi sert les fonctions Annéemoisjour et heureminute?

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Florent6744 Voir le message
    A quoi sert les fonctions Annéemoisjour et heureminute?
    Bonjour,

    Elles servent à horodater les versions successives au cas où, dans le nom des fichiers générés. Vous n'êtes pas obligé de les utiliser.

  7. #7
    Membre très actif
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    364
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 364
    Par défaut
    Bonsoir
    Quel est l'intérêt de créer des classeurs de 2 lignes ?
    Il est plus simple d'ajouter un onglet de sauvegarde !
    Première macro dans la fenêtre des codes de l'onglet source (Alt F11)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Worksheet_SelectionChange(ByVal R As Range)
        Dim P As Range
        If R.Row > 1 And R.Column = 1 And Application.CountA(R.Resize(, 5)) = 5 Then
           If MsgBox("à enregistrer ?", 4, "") = 7 Then Exit Sub
           Set P = R.Resize(, 5)
           P.Copy Feuil2.Cells(Rows.Count, 1).End(xlUp)(2)
           Rows(R.Row).Delete
        End If
      End Sub
    Seconde macro en utilisant un Tableau dans l'onglet (hélas très souvent ignoré bien que présentant de nombreux avantages notamment de n'avoir à prendre en compte un déplacement)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Worksheet_SelectionChange(ByVal R As Range)
      Dim L As Integer, P As Range
      If Not Intersect(R, [Bd].Columns(1)) Is Nothing Then
        L = R.Row - [Bd].Row + 1 'ligne sélectionnée du tableau
        Set P = [Bd].Item(L, 1).Resize(, 5)
        If Application.CountA(R.Resize(, 5)) = 5 Then
           If MsgBox("à enregistrer ?", 4, "") = 7 Then Exit Sub '7 pour non
             P.Copy Feuil2.Cells(Rows.Count, 1).End(xlUp)(2)
             [Bd].Rows(L).Delete
        End If
      End If
    End Sub
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Réponses: 5
    Dernier message: 22/01/2019, 08h46
  2. Réponses: 4
    Dernier message: 20/06/2018, 20h01
  3. [XL-2010] Copie d'une ligne entière dans un autre classeur
    Par gmalodent dans le forum Excel
    Réponses: 6
    Dernier message: 13/04/2014, 19h16
  4. [XL-2003] Macro : copie de feuilles dans un autre classeur : problèmes graphs + divers
    Par gandalf20000000 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 16/10/2009, 10h52
  5. demander à VBA Excel de trouver la même ligne dans un autre classeur
    Par melodyyy dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 06/12/2006, 16h15

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