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

Excel Discussion :

Copie d'une ligne entière dans un autre classeur [XL-2010]


Sujet :

Excel

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 11
    Points : 6
    Points
    6
    Par défaut Copie d'une ligne entière dans un autre classeur
    Bonjour à tous,

    D'habitude, je trouve la solution en parcourant le forum ...mais là je sèche. J'aimerai copier une ligne entière dans un autre classeur.

    J'ai 2 classeurs : le 1er me sert de formulaire de saisie des données. le 2ème de base de donnée.
    Dans le 1er classeur :
    - onglet 1 , 2 et 3 l'utilisateur saisie ses données suivant un masque.
    - onglet 4 : je recopie les données sur une seule ligne
    Dans le 2ème Classeur :je recopie les données. une ligne = une saisie

    le code ci dessous, me recopie la ligne en question ... mais plusieurs fois jusqu'à la 1ère cellule disponible et m'écrase les autres saisies. Alors que je ne cherche qu'à copier une ligne à la suite des autres déjà enregistrées.


    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
     
     
        TEMPO.Activate  'dans l'onglet TEMPO
        Range("A4").Select
        Range(Selection, Selection.End(xlToRight)).Select 'je selectionne toutes les cellules utile de la ligne à copier
        Selection.Copy
     
     
    ' Dans un autre classeur (qui me sert de base de donnée) que j'ai préalablement ouvert, je recherche la 1ere ligne libre disponible 
     
        If ActiveSheet.Range("A2") = "" Then
           ActiveSheet.Range("A2").Select
            Else
           ActiveSheet.Range("A1").End(xlDown).Offset(1, 0).Select  'A1 est une entête de colonne donc toujours invariable  
           End If
     
     ' et je recopie ... peut être est ce là que ça cloche ?
     
    Activesheet.Paste

    J'arrive à copier cellule par cellule (en utilisant "offset") mais là, j'ai environ une centaine de données à copier à la fois.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ActiveCell.Offset(0, 1).Value = Onglet1.Range("R19")
    ActiveCell.Offset(0, 2).Value = Onglet2.Range("R20")
    ActiveCell.Offset(0, 3).Value = Onglet3.Range("R21")
    ActiveCell.Offset(0, 4).Value = Onglet4.Range("R22")
    'etc ...
    Ca me ferai une centaine de ligne avec "offset" en plus d'être long, ça serait fastidieux à mettre à jour...


    Est ce qu'une âme charitable pourrai m'expliquer ce qui ne fonctionne pas et me donner une piste ?


    meci d'avance pour vos lumières ...


    Thierry

  2. #2
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Bonjour,
    à adapter, d'autres solutions sont possibles s'il ne s'agit que de copier les valeurs
    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
    Sub toto()
    Dim Ws As Workbook, Wc As Workbook
    Dim DerLg As Range
    Dim DerCl As Range
    Set Ws = ThisWorkbook
    Set Wc = Workbooks("essaiA.xlsm") 'si il est ouvert, nom à adapter
    With TEMPO 'la je te fais confiance pour le Code.Name
      Set DerCl = .Cells(4, .Columns.Count).End(xlToLeft)
      .Range("A4", DerCl).Copy
    End With
    Wc.Activate
    With Wc.ActiveSheet
      Set DerLg = .Range("A" & .Rows.Count).End(xlUp)(2, 1)
      DerLg.Select
      .Paste
    End With
    End Sub

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    casefayere,

    Merci pour ton aide.
    Je viens d'essayer avec ton code adapté, mais j'ai le même résultat : il m’écrase les enregistrements précédents ... et me recopie plusieurs fois la même ligne jusqu'à la 1ere cellule vide inclue
    je comprends vraiment pas ...

  4. #4
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    impossible, je viens de ré-essayer :
    essaies ces fichiers en ouvrant les deux, exécutes la macro du fichier "toto"

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    Oui, tu as raison, je viens d'essayer avec tes fichiers et ça fonctionne ...
    ça veut dire que l'erreur vient d'ailleurs ( comme la vérité ... ) dans mon code ...
    je vois pas bien d'ou ... je vais procéder par élimination on verra bien
    en tout cas merci bien !!!

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    Pour info, je viens de trouver d’où vient le pb :

    lorsque je recopie uniquement des valeurs cela fonctionne : une seule ligne est recopiée.

    Dans la 1ère version de mon fichier/code : je recopiais en fait des références (A4 de l'onglet4 ='Onglet 1'!$E$4 ... etc ) et non simplement des valeurs et là la ligne et copiée plusieurs fois ...
    ça fonctionne donc uniquement lorsque l'on recopie des valeurs... je vois pas pourquoi (mais le principal c'est que ça fonctionne non ? ).
    Par contre si quelqu'un à l'explication, je suis preneur ... histoire de pas finir bête

    encore merci casefayere
    A+
    Thierry

  7. #7
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Si je comprenais bien ta finalité, je t'aurais proposé de passer par des boucles mais je ne suis pas sur de bien cerner le problème

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 25/11/2014, 09h57
  2. Réponses: 2
    Dernier message: 12/04/2010, 14h19
  3. effacer une ligne entière dans une session
    Par keokaz dans le forum Langage
    Réponses: 11
    Dernier message: 23/12/2009, 23h51
  4. copier une ligne selectionne dans un autre onglet
    Par calvi2002 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/07/2009, 12h09
  5. Réponses: 3
    Dernier message: 21/04/2009, 14h03

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