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 données d'une plage et coller sur une autre avec date en dessus


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2011
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2011
    Messages : 571
    Par défaut Copier données d'une plage et coller sur une autre avec date en dessus
    Bonsoir le forum

    Le code ci-dessous me fatigue.
    Je cherche à copier coller les données d'une plage et les coller sur une autre.
    La plage source est Sheets("INV_CAISSE_DEBUT") et la plage à copier est E2:E38.
    La feuille de DESTINATION est Sheets("ETAT_SORTIE_CAISSE") et le collage doit se faire à partir de C3.
    D'abord en C2 la date du jour-1 devra y être collée
    Ensuite les éléments copiés devront être collés à partir de la 3eme ligne de la 3eme colonne.
    NB :
    - le collage devra se faire au fur et à mesure
    - le collage se fait aussi à la fin de chaque colonne
    c'est à dire dès que la 2ème ligne de la dernière colonne est vide, on colle la date du jour moins 1 suivi du collage de la plage copiée.
    Lorsque j'exécute mon code, le collage se fait au même endroit et très lent.
    Je sais que mon code n'est pas parfait et je sollicite vos contributions pour le parfaire.

    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
    Dim derncol As Integer
     
    Dim DEST As Range, DEST1 As Range
     
    derncol = Cells(3, Cells.Columns.Count).End(xlToLeft).Column + 1
     
        Set f = Sheets("ETAT_SORTIE_CAISSE")
     
        Set ft = Sheets("INV_CAISSE_DEBUT")
     
        Set DEST = f.Cells(3, derncol)
     
        Set DEST1 = f.Cells(2, derncol)
     
    'DEST1 = Date
     
    ft.Range("E2:E37").Copy
     
    DEST.PasteSpecial Paste:=xlValues

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    De cette façon par exemple :
    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 Test()
     
        Dim Plg As Range
     
        Set Plg = Sheets("INV_CAISSE_DEBUT").Range("E2:E38")
     
        With Sheets("ETAT_SORTIE_CAISSE")
     
            .Cells(2, 3).Value = Date - 1
            .Cells(3, 3).Resize(Plg.Rows.Count, 1).Value = Plg.Value
     
        End With
     
    End Sub

  3. #3
    Membre éclairé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2011
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2011
    Messages : 571
    Par défaut
    Bonsoir Theze et le forum
    Merci pour votre retour.
    Je constate que le collage se fait dans une seule colonne et non au fur et à mesure.
    Mon souhait est que le collage se fasse à la fin de la dernière colonne non vide.
    Exemple : si C2 est non vide, on colle en D2 et ainsi de suite.
    Merci

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Avec ceci alors :
    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
     
     
        Dim Plg As Range
        Dim Col As Long
     
        Set Plg = Sheets("INV_CAISSE_DEBUT").Range("E2:E38")
     
        With Sheets("ETAT_SORTIE_CAISSE")
     
            Col = .Cells(2, .Columns.Count).End(xlToLeft).Column + 1
            .Cells(2, Col).Value = Date - 1
            .Cells(3, Col).Resize(Plg.Rows.Count, 1).Value = Plg.Value
     
        End With
     
    End Sub

  5. #5
    Membre éclairé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2011
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2011
    Messages : 571
    Par défaut
    Bonjour Theze

    Votre code fonctionne correctement.
    Serait-il possible d'éviter des doubles lors du collage?
    C'est à dire que le collage se fasse une seule fois.
    Encore merci

  6. #6
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Que veux-tu dire par :
    Serait-il possible d'éviter des doubles lors du collage?
    L'ensemble des valeurs précédemment collées ne puissent se trouver plusieurs fois ? Qu'une partie des ces valeurs ne puissent être en doublon ?

Discussions similaires

  1. [XL-2016] VBA / Copier-coller des données d'une feuille à une autre avec une recherche variable
    Par Sandrine888 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 11/09/2018, 18h42
  2. Copier une base de donnée vers une autre
    Par maxeur dans le forum Ruby on Rails
    Réponses: 6
    Dernier message: 04/09/2008, 10h37
  3. [GD] copier une image sur l'autre avec transparence
    Par troumad dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 13/05/2008, 01h13
  4. [MySQL] Accéder à une base de données d'une autre site (sur un autre serveur)
    Par FCDB dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 06/06/2006, 17h59
  5. [VBA-E]Copier données dans une feuille créée
    Par Elstak dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/05/2006, 10h09

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