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 à partir de la dernière ligne remplie


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Inscrit en
    Avril 2009
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 41
    Par défaut Copier données à partir de la dernière ligne remplie
    Bonjour le forum,

    Je souhaite importer des données d'un onglet du classeur A à un onglet du classseur B suivant le titre des colonnes..
    Alors pour faire cela je suis passée par un intermédiaire qui consiste à copier l'onglet du classeur A dans un onglet du classeur B.
    Puis dans le nouvel onglet du classeur B je copie mes données d'un onglet à l'autre. Voici mon code.
    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
    Private Sub Importer_click_Click()
     
    Feuil1 = Application.GetOpenFilename("Fichier Excel (*.xls), *.xls")
     
    If Len(Replace(Feuil1, ".xls", "")) = Len(Feuil1) Then
        MsgBox "Format fichier invalide"
    Else
        Set Classeur1 = Application.Workbooks.Open(Feuil1)
     
    End If
     
     
    Set feuille_essai = ThisWorkbook.Worksheets("Essai")
     
     
    'je copie d'un classeur à un autre
    Sheets("Feuil1").Range("A5:S10000").Copy
    ThisWorkbook.Activate
    Sheets("Essai").Range("A8").Insert shift:=xlDown
     
    'après je copie d'un onglet à un autre
    Sheets("Essai").Range("A8:B10000").Copy
    Sheets("Feuil2").Range("A8").PasteSpecial (xlPasteValues)
     
     
    Sheets("Essai").Range("C8:F10000").Copy
    Sheets("Feuil2").Range("D8").PasteSpecial (xlPasteValues)
     
    Sheets("Essai").Range("G8:S10000").Copy
    Sheets("Feuil2").Range("K8").PasteSpecial (xlPasteValues)
     
     
    'cache la feuille essai
    Set feuille_essai = ThisWorkbook.Worksheets("Essai")
    feuille_essai.Visible = 2
     
    End Sub
    Alors je sais que ce n'est pas du très beau code, mais ça fonctionne

    Lorsque j'appuie sur le bouton "importer", j'aimerais que les données que je copie, se copient à partir de la dernière ligne remplie (et non après la 10000eme ligne..)
    Quelle fonction je peux utiliser?

    Merci de votre aide.

  2. #2
    Membre expérimenté Avatar de arosec
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Mai 2009
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2009
    Messages : 167
    Par défaut
    Bonjour,

    Ci joint une fonction pour importer des données d'un autre fichier Excel...
    Tu dois adapter les variables r et c à ton besoin ainsi que strSql et sheetDest .

    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
     
    Sub ImportFromExcelFile()
    Dim sheetDest As Worksheet
    Dim ImportFileName
    Dim cn As Object
    Dim rs As Object
    Dim strSql As String
    Dim r
    Dim c As Integer
     
    On Error GoTo lblErr
     
    'Requête pour récuppérer les données du fichier Ecel à importer
    strSql = "SELECT * FROM [Feuil1$A5:S10000]"
     
    'Sélectionner le fichier Excel à importer
    ImportFileName = Application.GetOpenFilename("Fichier Excel (*.xls), *.xls")
    If ImportFileName = False Then Exit Sub
     
    'Se connecter au fichier
    Set cn = CreateObject("ADODB.Connection")
    With cn
      .Provider = "Microsoft.Jet.OLEDB.4.0"
      .ConnectionString = "Data Source=""" & ImportFileName & """;Extended Properties=Excel 8.0;"
      .Open
      'Extraire les données
      Set rs = .Execute(strSql)
      'Copier les données dans l'onglet à partir de la ligne r et la colonne c
      Set sheetDest = ThisWorkbook.Worksheets("Feuil1")
      Set r = sheetDest.Cells.Find(What:="*", LookIn:=xlFormulas, SearchOrder:=xlByRows, SearchDirection:=xlPrevious)
      If r Is Nothing Then
        r = 1
      Else
        r = r.Row
      End If
      c = 1
      sheetDest.Cells(r, c).CopyFromRecordset rs
      rs.Close
      .Close
    End With
     
    GoTo lblFin
    lblErr:
      MsgBox Err.Description
    lblFin:
      Set sheetDest = Nothing
      Set rs = Nothing
      Set cn = Nothing
    End Sub

  3. #3
    Membre éprouvé Avatar de LouiMz
    Homme Profil pro
    Inscrit en
    Février 2010
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 104
    Par défaut
    Bonjour,

    Même si le post est assez ancien:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    'On affecte le numero de la premiere ligne non vide (en partant du bas)
    derniere_ligne = Range("A65536").End(xlup).row
     
    'On selectionne de la cellule A8 à B & derniere_ligne
    Range("A8:B" & derniere_ligne).select

Discussions similaires

  1. [VBS-Excel] Ecrire à partir de la dernière ligne
    Par ESVBA dans le forum VBScript
    Réponses: 11
    Dernier message: 06/07/2011, 20h47
  2. [XL-97] Copier certaines cellules de la dernière ligne d'un tableau dynamique
    Par Estaque3394 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/10/2010, 05h58
  3. [XL-2003] copier/coller formule sur nombre de lignes remplies
    Par clemini dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/03/2010, 10h55
  4. [XL-2003] copier des cellules sur la dernière ligne
    Par chrnoe dans le forum Excel
    Réponses: 1
    Dernier message: 15/02/2010, 18h18
  5. Ajouter/supprimer ligne à partir de la dernière ligne d'une plage
    Par jedimaster10 dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 22/02/2008, 15h18

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